From 3791828a0b774b5f1fe0bf22b3ec6529703a9dda Mon Sep 17 00:00:00 2001 From: tiansf Date: Fri, 25 Apr 2025 19:02:06 +0800 Subject: [PATCH] =?UTF-8?q?reedaw=E6=B5=8B=E8=AF=95=E7=89=88=E5=A4=9A?= =?UTF-8?q?=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/app/controller/Card.php | 234 +- application/app/controller/Index.php | 46 +- application/app/controller/Login.php | 11 +- application/app/controller/Pagingcontrast.php | 12 +- application/app/controller/Smsaliyun.php | 84 + application/testapp/controller/Base.php | 14 +- .../testapp/controller/Calculatebody.php | 2 +- application/testapp/controller/Card.php | 346 +- application/testapp/controller/Cardparts.php | 2 +- application/testapp/controller/Cardpublic.php | 12 +- application/testapp/controller/Deepseek.php | 10 +- application/testapp/controller/Device.php | 8 +- application/testapp/controller/Download.php | 2 +- application/testapp/controller/Index.php | 90 +- application/testapp/controller/Language.php | 127 +- application/testapp/controller/Login.php | 25 +- .../testapp/controller/Msginformation.php | 10 +- .../testapp/controller/Myinformation.php | 6 +- .../testapp/controller/Pagingcontrast.php | 28 +- application/testapp/controller/Skip.php | 28 +- application/testapp/controller/Smsaliyun.php | 84 + .../testapp/controller/Sportstesting.php | 8 +- .../testapp/controller/Vitalcapacity.php | 10 +- application/testapp/controller/Wechat.php | 2 +- .../testapp/controller/Wechatabout.php | 6 +- composer.json | 3 +- vendor/adbario/php-dot-notation/LICENSE.md | 21 + vendor/adbario/php-dot-notation/composer.json | 29 + vendor/adbario/php-dot-notation/src/Dot.php | 623 +++ .../adbario/php-dot-notation/src/helpers.php | 24 + vendor/alibabacloud/client/CHANGELOG.md | 311 ++ vendor/alibabacloud/client/CONTRIBUTING.md | 30 + vendor/alibabacloud/client/LICENSE.md | 13 + vendor/alibabacloud/client/NOTICE.md | 88 + vendor/alibabacloud/client/README-zh-CN.md | 168 + vendor/alibabacloud/client/README.md | 167 + vendor/alibabacloud/client/UPGRADING.md | 6 + vendor/alibabacloud/client/autoload.php | 17 + vendor/alibabacloud/client/composer.json | 134 + vendor/alibabacloud/client/src/Accept.php | 53 + .../alibabacloud/client/src/AlibabaCloud.php | 62 + .../client/src/Clients/AccessKeyClient.php | 30 + .../client/src/Clients/BearerTokenClient.php | 29 + .../client/src/Clients/Client.php | 72 + .../client/src/Clients/EcsRamRoleClient.php | 26 + .../client/src/Clients/ManageTrait.php | 98 + .../client/src/Clients/RamRoleArnClient.php | 33 + .../client/src/Clients/RsaKeyPairClient.php | 30 + .../client/src/Clients/StsClient.php | 28 + .../alibabacloud/client/src/Config/Config.php | 62 + .../alibabacloud/client/src/Config/Data.php | 3799 +++++++++++++++++ .../src/Credentials/AccessKeyCredential.php | 65 + .../src/Credentials/BearerTokenCredential.php | 66 + .../src/Credentials/CredentialsInterface.php | 18 + .../src/Credentials/EcsRamRoleCredential.php | 50 + .../src/Credentials/Ini/CreateTrait.php | 181 + .../src/Credentials/Ini/IniCredential.php | 209 + .../src/Credentials/Ini/OptionsTrait.php | 111 + .../Providers/CredentialsProvider.php | 170 + .../Providers/EcsRamRoleProvider.php | 128 + .../src/Credentials/Providers/Provider.php | 88 + .../Providers/RamRoleArnProvider.php | 84 + .../Providers/RsaKeyPairProvider.php | 86 + .../src/Credentials/RamRoleArnCredential.php | 110 + .../src/Credentials/Requests/AssumeRole.php | 47 + .../Requests/GenerateSessionAccessKey.php | 37 + .../src/Credentials/RsaKeyPairCredential.php | 75 + .../client/src/Credentials/StsCredential.php | 80 + .../client/src/DefaultAcsClient.php | 55 + vendor/alibabacloud/client/src/Encode.php | 68 + .../src/Exception/AlibabaCloudException.php | 70 + .../client/src/Exception/ClientException.php | 38 + .../client/src/Exception/ServerException.php | 158 + .../client/src/Filter/ApiFilter.php | 259 ++ .../client/src/Filter/ClientFilter.php | 146 + .../client/src/Filter/CredentialFilter.php | 152 + .../alibabacloud/client/src/Filter/Filter.php | 67 + .../client/src/Filter/HttpFilter.php | 166 + vendor/alibabacloud/client/src/Functions.php | 289 ++ .../client/src/Log/LogFormatter.php | 79 + .../client/src/Profile/DefaultProfile.php | 74 + .../client/src/Regions/EndpointProvider.php | 18 + .../client/src/Regions/LocationService.php | 160 + .../src/Regions/LocationServiceRequest.php | 46 + vendor/alibabacloud/client/src/Release.php | 112 + .../client/src/Request/Request.php | 451 ++ .../client/src/Request/RoaRequest.php | 333 ++ .../client/src/Request/RpcRequest.php | 203 + .../client/src/Request/Traits/AcsTrait.php | 259 ++ .../client/src/Request/Traits/ClientTrait.php | 98 + .../src/Request/Traits/DeprecatedRoaTrait.php | 55 + .../src/Request/Traits/DeprecatedTrait.php | 246 ++ .../client/src/Request/Traits/RetryTrait.php | 149 + .../client/src/Request/UserAgent.php | 142 + .../src/Resolver/ActionResolverTrait.php | 50 + .../client/src/Resolver/ApiResolver.php | 113 + .../client/src/Resolver/CallTrait.php | 66 + .../alibabacloud/client/src/Resolver/Roa.php | 43 + .../alibabacloud/client/src/Resolver/Rpc.php | 41 + .../client/src/Resolver/VersionResolver.php | 74 + .../alibabacloud/client/src/Result/Result.php | 151 + vendor/alibabacloud/client/src/SDK.php | 57 + .../src/Signature/BearerTokenSignature.php | 47 + .../src/Signature/ShaHmac1Signature.php | 47 + .../src/Signature/ShaHmac256Signature.php | 47 + .../Signature/ShaHmac256WithRsaSignature.php | 67 + .../client/src/Signature/Signature.php | 49 + .../src/Signature/SignatureInterface.php | 35 + .../client/src/Support/Arrays.php | 41 + .../alibabacloud/client/src/Support/Path.php | 28 + .../alibabacloud/client/src/Support/Sign.php | 143 + .../client/src/Support/Stringy.php | 47 + .../client/src/Traits/ArrayAccessTrait.php | 61 + .../client/src/Traits/ClientTrait.php | 273 ++ .../client/src/Traits/DefaultRegionTrait.php | 66 + .../client/src/Traits/EndpointTrait.php | 134 + .../client/src/Traits/HasDataTrait.php | 324 ++ .../client/src/Traits/HistoryTrait.php | 68 + .../client/src/Traits/HttpTrait.php | 141 + .../client/src/Traits/LogTrait.php | 97 + .../client/src/Traits/MockTrait.php | 97 + .../client/src/Traits/ObjectAccessTrait.php | 54 + .../client/src/Traits/RegionTrait.php | 33 + .../client/src/Traits/RequestTrait.php | 90 + vendor/bin/jp.php | 119 + vendor/bin/jp.php.bat | 5 + .../.github/workflows/php.yml | 43 + .../weblibs-configmanager/.gitignore | 3 + .../weblibs-configmanager/README.md | 143 + .../weblibs-configmanager/composer.json | 51 + .../weblibs-configmanager/phpunit.xml | 39 + .../src/AbstractConfigManager.php | 159 + .../src/ArrayConfigManager.php | 72 + .../src/ConfigManager.php | 14 + .../src/FileConverter.php | 28 + .../src/IConfigurable.php | 84 + .../src/IConvertable.php | 28 + .../src/JsonConfigManager.php | 68 + .../src/YamlConfigManager.php | 64 + .../tests/AbstractConfigManagerTest.php | 223 + .../tests/ArrayConfigManagerTest.php | 25 + .../tests/ConfigManagerTest.php | 25 + .../tests/FileConverterTest.php | 148 + .../tests/JsonConfigManagerTest.php | 25 + .../tests/YamlConfigManagerTest.php | 25 + .../sample_config_data.empty.converted.yml | 1 + .../testsdata/sample_config_data.json | 1 + .../sample_config_data.json.converted.php | 23 + .../sample_config_data.json.converted.yml | 8 + .../testsdata/sample_config_data.php | 23 + .../sample_config_data.php.converted.json | 1 + .../sample_config_data.php.converted.yml | 8 + .../testsdata/sample_config_data.yml | 8 + .../sample_config_data.yml.converted.json | 1 + .../sample_config_data.yml.converted.php | 23 + vendor/composer/autoload_files.php | 4 + vendor/composer/autoload_psr4.php | 6 + vendor/composer/autoload_static.php | 43 + vendor/composer/installed.json | 408 ++ vendor/composer/installed.php | 58 +- .../tmp-0d89f9d50873e2b671afca887218e9a9.zip | Bin 0 -> 4092 bytes .../tmp-11bd46d6ad5fb797d29f33bd14df708f.zip | Bin 0 -> 33492 bytes .../tmp-185e2e1130562592323350064f87dc41.zip | Bin 0 -> 44734 bytes .../tmp-1cedc34bfc11a3f9d8f81bd371c876b7.zip | Bin 0 -> 13994 bytes .../tmp-338cc0e5dd9ea4bc29607333cd7b4391.zip | Bin 0 -> 376915 bytes .../tmp-3ebeb41130f84ba2032b1084e6524a3c.zip | Bin 0 -> 187414 bytes .../tmp-3f03c748e5fc44451f326e397d84bdda.zip | Bin 0 -> 3351 bytes .../tmp-6035caee003b977efbee6d168b1d39d6.zip | Bin 0 -> 18831 bytes .../tmp-868cb9b266141e3de46d548426dbc528.zip | Bin 0 -> 3573 bytes .../tmp-9134025c6dbadb951eb046127f1f5364.zip | Bin 0 -> 4270 bytes .../tmp-94532157512dc59bf8b610437634e2a4.zip | Bin 0 -> 105394 bytes .../tmp-99302efaebda931b517195a791313ef8.zip | Bin 0 -> 25953 bytes .../tmp-a6057dce91728e10f22de5e655c6e00e.zip | Bin 0 -> 78664 bytes .../tmp-a73fdcdc269de69f83a925078c1a3644.zip | Bin 0 -> 2957 bytes .../tmp-aa47308983a1bc8aeb55dacdc9850d3f.zip | Bin 0 -> 25138 bytes .../tmp-af09a518796d0690ac8df9e3a0199608.zip | Bin 0 -> 4250 bytes .../tmp-b83c750f78e552370e127ad91cd261d7.zip | Bin 0 -> 8178 bytes .../tmp-bef10698d08d7377ba6a9f1ddd51f4a2.zip | Bin 0 -> 10957 bytes .../tmp-cd9141dac2afb7b49ce07d6840fae829.zip | Bin 0 -> 6033 bytes .../tmp-d7cc8f81e79ee376b003f9d3e3af9377.zip | Bin 0 -> 11008 bytes .../tmp-ea5cdecfcc51eee59532763ea9174b88.zip | Bin 0 -> 116190 bytes .../tmp-eca084e2dbf08109c2e37ffa612ea741.zip | Bin 0 -> 7212 bytes .../tmp-eec490a45e0693df49b82d39c08aa787.zip | Bin 0 -> 150312 bytes .../tmp-f98849c5d167261732a8553ca35822d1.zip | Bin 0 -> 16172 bytes vendor/mtdowling/jmespath.php/CHANGELOG.md | 72 + vendor/mtdowling/jmespath.php/LICENSE | 19 + vendor/mtdowling/jmespath.php/README.rst | 123 + vendor/mtdowling/jmespath.php/bin/jp.php | 74 + vendor/mtdowling/jmespath.php/bin/perf.php | 68 + vendor/mtdowling/jmespath.php/composer.json | 38 + .../mtdowling/jmespath.php/src/AstRuntime.php | 47 + .../jmespath.php/src/CompilerRuntime.php | 83 + .../jmespath.php/src/DebugRuntime.php | 109 + vendor/mtdowling/jmespath.php/src/Env.php | 91 + .../jmespath.php/src/FnDispatcher.php | 407 ++ .../mtdowling/jmespath.php/src/JmesPath.php | 17 + vendor/mtdowling/jmespath.php/src/Lexer.php | 444 ++ vendor/mtdowling/jmespath.php/src/Parser.php | 519 +++ .../jmespath.php/src/SyntaxErrorException.php | 36 + .../jmespath.php/src/TreeCompiler.php | 419 ++ .../jmespath.php/src/TreeInterpreter.php | 235 + vendor/mtdowling/jmespath.php/src/Utils.php | 258 ++ vendor/symfony/polyfill-ctype/Ctype.php | 232 + vendor/symfony/polyfill-ctype/LICENSE | 19 + vendor/symfony/polyfill-ctype/README.md | 12 + vendor/symfony/polyfill-ctype/bootstrap.php | 50 + vendor/symfony/polyfill-ctype/bootstrap80.php | 46 + vendor/symfony/polyfill-ctype/composer.json | 38 + vendor/symfony/yaml/.gitignore | 3 + vendor/symfony/yaml/CHANGELOG.md | 28 + vendor/symfony/yaml/Dumper.php | 77 + vendor/symfony/yaml/Escaper.php | 101 + .../symfony/yaml/Exception/DumpException.php | 21 + .../yaml/Exception/ExceptionInterface.php | 21 + .../symfony/yaml/Exception/ParseException.php | 144 + .../yaml/Exception/RuntimeException.php | 21 + vendor/symfony/yaml/Inline.php | 609 +++ vendor/symfony/yaml/LICENSE | 19 + vendor/symfony/yaml/Parser.php | 852 ++++ vendor/symfony/yaml/README.md | 13 + vendor/symfony/yaml/Tests/DumperTest.php | 257 ++ .../yaml/Tests/Fixtures/YtsAnchorAlias.yml | 31 + .../yaml/Tests/Fixtures/YtsBasicTests.yml | 202 + .../yaml/Tests/Fixtures/YtsBlockMapping.yml | 51 + .../Tests/Fixtures/YtsDocumentSeparator.yml | 85 + .../yaml/Tests/Fixtures/YtsErrorTests.yml | 25 + .../Tests/Fixtures/YtsFlowCollections.yml | 60 + .../yaml/Tests/Fixtures/YtsFoldedScalars.yml | 176 + .../Tests/Fixtures/YtsNullsAndEmpties.yml | 45 + .../Fixtures/YtsSpecificationExamples.yml | 1697 ++++++++ .../yaml/Tests/Fixtures/YtsTypeTransfers.yml | 244 ++ .../yaml/Tests/Fixtures/embededPhp.yml | 1 + .../yaml/Tests/Fixtures/escapedCharacters.yml | 155 + vendor/symfony/yaml/Tests/Fixtures/index.yml | 18 + .../yaml/Tests/Fixtures/sfComments.yml | 76 + .../symfony/yaml/Tests/Fixtures/sfCompact.yml | 159 + .../yaml/Tests/Fixtures/sfMergeKey.yml | 66 + .../symfony/yaml/Tests/Fixtures/sfObjects.yml | 11 + .../symfony/yaml/Tests/Fixtures/sfQuotes.yml | 33 + .../symfony/yaml/Tests/Fixtures/sfTests.yml | 149 + .../Tests/Fixtures/unindentedCollections.yml | 82 + vendor/symfony/yaml/Tests/InlineTest.php | 506 +++ .../symfony/yaml/Tests/ParseExceptionTest.php | 42 + vendor/symfony/yaml/Tests/ParserTest.php | 1300 ++++++ vendor/symfony/yaml/Tests/YamlTest.php | 56 + vendor/symfony/yaml/Unescaper.php | 156 + vendor/symfony/yaml/Yaml.php | 99 + vendor/symfony/yaml/composer.json | 34 + vendor/symfony/yaml/phpunit.xml.dist | 30 + 249 files changed, 28250 insertions(+), 213 deletions(-) create mode 100644 application/app/controller/Smsaliyun.php create mode 100644 application/testapp/controller/Smsaliyun.php create mode 100644 vendor/adbario/php-dot-notation/LICENSE.md create mode 100644 vendor/adbario/php-dot-notation/composer.json create mode 100644 vendor/adbario/php-dot-notation/src/Dot.php create mode 100644 vendor/adbario/php-dot-notation/src/helpers.php create mode 100644 vendor/alibabacloud/client/CHANGELOG.md create mode 100644 vendor/alibabacloud/client/CONTRIBUTING.md create mode 100644 vendor/alibabacloud/client/LICENSE.md create mode 100644 vendor/alibabacloud/client/NOTICE.md create mode 100644 vendor/alibabacloud/client/README-zh-CN.md create mode 100644 vendor/alibabacloud/client/README.md create mode 100644 vendor/alibabacloud/client/UPGRADING.md create mode 100644 vendor/alibabacloud/client/autoload.php create mode 100644 vendor/alibabacloud/client/composer.json create mode 100644 vendor/alibabacloud/client/src/Accept.php create mode 100644 vendor/alibabacloud/client/src/AlibabaCloud.php create mode 100644 vendor/alibabacloud/client/src/Clients/AccessKeyClient.php create mode 100644 vendor/alibabacloud/client/src/Clients/BearerTokenClient.php create mode 100644 vendor/alibabacloud/client/src/Clients/Client.php create mode 100644 vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php create mode 100644 vendor/alibabacloud/client/src/Clients/ManageTrait.php create mode 100644 vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php create mode 100644 vendor/alibabacloud/client/src/Clients/RsaKeyPairClient.php create mode 100644 vendor/alibabacloud/client/src/Clients/StsClient.php create mode 100644 vendor/alibabacloud/client/src/Config/Config.php create mode 100644 vendor/alibabacloud/client/src/Config/Data.php create mode 100644 vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php create mode 100644 vendor/alibabacloud/client/src/Credentials/EcsRamRoleCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Providers/Provider.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php create mode 100644 vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php create mode 100644 vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php create mode 100644 vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php create mode 100644 vendor/alibabacloud/client/src/Credentials/StsCredential.php create mode 100644 vendor/alibabacloud/client/src/DefaultAcsClient.php create mode 100644 vendor/alibabacloud/client/src/Encode.php create mode 100644 vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php create mode 100644 vendor/alibabacloud/client/src/Exception/ClientException.php create mode 100644 vendor/alibabacloud/client/src/Exception/ServerException.php create mode 100644 vendor/alibabacloud/client/src/Filter/ApiFilter.php create mode 100644 vendor/alibabacloud/client/src/Filter/ClientFilter.php create mode 100644 vendor/alibabacloud/client/src/Filter/CredentialFilter.php create mode 100644 vendor/alibabacloud/client/src/Filter/Filter.php create mode 100644 vendor/alibabacloud/client/src/Filter/HttpFilter.php create mode 100644 vendor/alibabacloud/client/src/Functions.php create mode 100644 vendor/alibabacloud/client/src/Log/LogFormatter.php create mode 100644 vendor/alibabacloud/client/src/Profile/DefaultProfile.php create mode 100644 vendor/alibabacloud/client/src/Regions/EndpointProvider.php create mode 100644 vendor/alibabacloud/client/src/Regions/LocationService.php create mode 100644 vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php create mode 100644 vendor/alibabacloud/client/src/Release.php create mode 100644 vendor/alibabacloud/client/src/Request/Request.php create mode 100644 vendor/alibabacloud/client/src/Request/RoaRequest.php create mode 100644 vendor/alibabacloud/client/src/Request/RpcRequest.php create mode 100644 vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php create mode 100644 vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php create mode 100644 vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php create mode 100644 vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php create mode 100644 vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php create mode 100644 vendor/alibabacloud/client/src/Request/UserAgent.php create mode 100644 vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php create mode 100644 vendor/alibabacloud/client/src/Resolver/ApiResolver.php create mode 100644 vendor/alibabacloud/client/src/Resolver/CallTrait.php create mode 100644 vendor/alibabacloud/client/src/Resolver/Roa.php create mode 100644 vendor/alibabacloud/client/src/Resolver/Rpc.php create mode 100644 vendor/alibabacloud/client/src/Resolver/VersionResolver.php create mode 100644 vendor/alibabacloud/client/src/Result/Result.php create mode 100644 vendor/alibabacloud/client/src/SDK.php create mode 100644 vendor/alibabacloud/client/src/Signature/BearerTokenSignature.php create mode 100644 vendor/alibabacloud/client/src/Signature/ShaHmac1Signature.php create mode 100644 vendor/alibabacloud/client/src/Signature/ShaHmac256Signature.php create mode 100644 vendor/alibabacloud/client/src/Signature/ShaHmac256WithRsaSignature.php create mode 100644 vendor/alibabacloud/client/src/Signature/Signature.php create mode 100644 vendor/alibabacloud/client/src/Signature/SignatureInterface.php create mode 100644 vendor/alibabacloud/client/src/Support/Arrays.php create mode 100644 vendor/alibabacloud/client/src/Support/Path.php create mode 100644 vendor/alibabacloud/client/src/Support/Sign.php create mode 100644 vendor/alibabacloud/client/src/Support/Stringy.php create mode 100644 vendor/alibabacloud/client/src/Traits/ArrayAccessTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/ClientTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/EndpointTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/HasDataTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/HistoryTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/HttpTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/LogTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/MockTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/ObjectAccessTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/RegionTrait.php create mode 100644 vendor/alibabacloud/client/src/Traits/RequestTrait.php create mode 100644 vendor/bin/jp.php create mode 100644 vendor/bin/jp.php.bat create mode 100644 vendor/clagiordano/weblibs-configmanager/.github/workflows/php.yml create mode 100644 vendor/clagiordano/weblibs-configmanager/.gitignore create mode 100644 vendor/clagiordano/weblibs-configmanager/README.md create mode 100644 vendor/clagiordano/weblibs-configmanager/composer.json create mode 100644 vendor/clagiordano/weblibs-configmanager/phpunit.xml create mode 100644 vendor/clagiordano/weblibs-configmanager/src/AbstractConfigManager.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/ArrayConfigManager.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/FileConverter.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/IConvertable.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/JsonConfigManager.php create mode 100644 vendor/clagiordano/weblibs-configmanager/src/YamlConfigManager.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/AbstractConfigManagerTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/ArrayConfigManagerTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/ConfigManagerTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/FileConverterTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/JsonConfigManagerTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/tests/YamlConfigManagerTest.php create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.empty.converted.yml create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.php create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.yml create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.json create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.yml create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.json create mode 100644 vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.php create mode 100644 vendor/composer/tmp-0d89f9d50873e2b671afca887218e9a9.zip create mode 100644 vendor/composer/tmp-11bd46d6ad5fb797d29f33bd14df708f.zip create mode 100644 vendor/composer/tmp-185e2e1130562592323350064f87dc41.zip create mode 100644 vendor/composer/tmp-1cedc34bfc11a3f9d8f81bd371c876b7.zip create mode 100644 vendor/composer/tmp-338cc0e5dd9ea4bc29607333cd7b4391.zip create mode 100644 vendor/composer/tmp-3ebeb41130f84ba2032b1084e6524a3c.zip create mode 100644 vendor/composer/tmp-3f03c748e5fc44451f326e397d84bdda.zip create mode 100644 vendor/composer/tmp-6035caee003b977efbee6d168b1d39d6.zip create mode 100644 vendor/composer/tmp-868cb9b266141e3de46d548426dbc528.zip create mode 100644 vendor/composer/tmp-9134025c6dbadb951eb046127f1f5364.zip create mode 100644 vendor/composer/tmp-94532157512dc59bf8b610437634e2a4.zip create mode 100644 vendor/composer/tmp-99302efaebda931b517195a791313ef8.zip create mode 100644 vendor/composer/tmp-a6057dce91728e10f22de5e655c6e00e.zip create mode 100644 vendor/composer/tmp-a73fdcdc269de69f83a925078c1a3644.zip create mode 100644 vendor/composer/tmp-aa47308983a1bc8aeb55dacdc9850d3f.zip create mode 100644 vendor/composer/tmp-af09a518796d0690ac8df9e3a0199608.zip create mode 100644 vendor/composer/tmp-b83c750f78e552370e127ad91cd261d7.zip create mode 100644 vendor/composer/tmp-bef10698d08d7377ba6a9f1ddd51f4a2.zip create mode 100644 vendor/composer/tmp-cd9141dac2afb7b49ce07d6840fae829.zip create mode 100644 vendor/composer/tmp-d7cc8f81e79ee376b003f9d3e3af9377.zip create mode 100644 vendor/composer/tmp-ea5cdecfcc51eee59532763ea9174b88.zip create mode 100644 vendor/composer/tmp-eca084e2dbf08109c2e37ffa612ea741.zip create mode 100644 vendor/composer/tmp-eec490a45e0693df49b82d39c08aa787.zip create mode 100644 vendor/composer/tmp-f98849c5d167261732a8553ca35822d1.zip create mode 100644 vendor/mtdowling/jmespath.php/CHANGELOG.md create mode 100644 vendor/mtdowling/jmespath.php/LICENSE create mode 100644 vendor/mtdowling/jmespath.php/README.rst create mode 100644 vendor/mtdowling/jmespath.php/bin/jp.php create mode 100644 vendor/mtdowling/jmespath.php/bin/perf.php create mode 100644 vendor/mtdowling/jmespath.php/composer.json create mode 100644 vendor/mtdowling/jmespath.php/src/AstRuntime.php create mode 100644 vendor/mtdowling/jmespath.php/src/CompilerRuntime.php create mode 100644 vendor/mtdowling/jmespath.php/src/DebugRuntime.php create mode 100644 vendor/mtdowling/jmespath.php/src/Env.php create mode 100644 vendor/mtdowling/jmespath.php/src/FnDispatcher.php create mode 100644 vendor/mtdowling/jmespath.php/src/JmesPath.php create mode 100644 vendor/mtdowling/jmespath.php/src/Lexer.php create mode 100644 vendor/mtdowling/jmespath.php/src/Parser.php create mode 100644 vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php create mode 100644 vendor/mtdowling/jmespath.php/src/TreeCompiler.php create mode 100644 vendor/mtdowling/jmespath.php/src/TreeInterpreter.php create mode 100644 vendor/mtdowling/jmespath.php/src/Utils.php create mode 100644 vendor/symfony/polyfill-ctype/Ctype.php create mode 100644 vendor/symfony/polyfill-ctype/LICENSE create mode 100644 vendor/symfony/polyfill-ctype/README.md create mode 100644 vendor/symfony/polyfill-ctype/bootstrap.php create mode 100644 vendor/symfony/polyfill-ctype/bootstrap80.php create mode 100644 vendor/symfony/polyfill-ctype/composer.json create mode 100644 vendor/symfony/yaml/.gitignore create mode 100644 vendor/symfony/yaml/CHANGELOG.md create mode 100644 vendor/symfony/yaml/Dumper.php create mode 100644 vendor/symfony/yaml/Escaper.php create mode 100644 vendor/symfony/yaml/Exception/DumpException.php create mode 100644 vendor/symfony/yaml/Exception/ExceptionInterface.php create mode 100644 vendor/symfony/yaml/Exception/ParseException.php create mode 100644 vendor/symfony/yaml/Exception/RuntimeException.php create mode 100644 vendor/symfony/yaml/Inline.php create mode 100644 vendor/symfony/yaml/LICENSE create mode 100644 vendor/symfony/yaml/Parser.php create mode 100644 vendor/symfony/yaml/README.md create mode 100644 vendor/symfony/yaml/Tests/DumperTest.php create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/index.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfComments.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/sfTests.yml create mode 100644 vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml create mode 100644 vendor/symfony/yaml/Tests/InlineTest.php create mode 100644 vendor/symfony/yaml/Tests/ParseExceptionTest.php create mode 100644 vendor/symfony/yaml/Tests/ParserTest.php create mode 100644 vendor/symfony/yaml/Tests/YamlTest.php create mode 100644 vendor/symfony/yaml/Unescaper.php create mode 100644 vendor/symfony/yaml/Yaml.php create mode 100644 vendor/symfony/yaml/composer.json create mode 100644 vendor/symfony/yaml/phpunit.xml.dist diff --git a/application/app/controller/Card.php b/application/app/controller/Card.php index e9a0ef2..05c0261 100644 --- a/application/app/controller/Card.php +++ b/application/app/controller/Card.php @@ -88,7 +88,7 @@ class Card extends Base{ // 详细卡片信息 // $data = ['id'=>'2'] - public function card_data_detailed($data=['aud_id'=>'144']){ + public function card_data_detailed($data=['aud_id'=>'61']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -543,7 +543,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"weight", "desc"=>"反映和衡量一个人健康状况的重要标志之一", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], [ "name"=>"身高", @@ -554,7 +556,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"height", "desc"=>"人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], [ "name"=>"BMI", @@ -565,7 +569,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"bmi", "desc"=>"BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], ], 'bottom_list' => [], @@ -660,12 +666,13 @@ class Card extends Base{ // 加入曲线板块底部的减肥计划数据end // 添加头围数据(如果有的话)start if($head_circumference !== false && $this->calculate_age($result[0]['birthday']) < 3){ + if($head_circumference['level'] == '异常' || $head_circumference['value'] == 0){ $offset = 0; }else{ $offset = $cardparts->calculate_landing_point($head_circumference['list2'],$head_circumference['value'],$head_circumference['level']); } - array_push($result_end['top_list'],[ + $touwei_array = [ 'name'=>'头围', 'value'=>$head_circumference['value'], 'unit'=>'CM', @@ -675,9 +682,56 @@ class Card extends Base{ 'key_name'=>'head_circumference', 'desc'=>'头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关', 'offset'=>$offset - ]); + ]; + $touwei_data = $this->touwei_temporary_use($result[0]['birthday'],$result[0]['gender']); + if(count($touwei_data)){ + $touwei_array['standard_val'] = $touwei_data['middle']; + $touwei_array['difference_val'] = bcsub($touwei_array['value'],$touwei_data['middle'],2); + }else{ + $touwei_array['standard_val'] = ''; + $touwei_array['difference_val'] = ''; + } + array_push($result_end['top_list'],$touwei_array); + } // 添加头围数据(如果有的话)end + + // 这段业务处理可以删除,是做的临时的,假的start + + $biaozhun_val = $this->body_temporary_use($result[0]['birthday'],$result[0]['gender']); + // dump($biaozhun_val); + // $biaozhun_val_weight = 50; + // $biaozhun_val_height = 170; + // $biaozhun_val_bmi = 22; + foreach ($result_end['top_list'] as $key => $value) { + if($value['key_name'] == 'weight'){ + if($biaozhun_val['weight'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['weight']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['weight'],2); + } + }else if($value['key_name'] == 'height'){ + if($biaozhun_val['height'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['height']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['height'],2); + } + }else if($value['key_name'] == 'bmi'){ + if($biaozhun_val['bmi'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['bmi']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['bmi'],2); + } + } + + } + // 这段业务处理可以删除,是做的临时的,假的end return $this->msg($result_end); } @@ -1253,6 +1307,174 @@ class Card extends Base{ ################################################################其他接口################################################################ ################################################################其他接口################################################################ + public function body_temporary_use($age,$gender){ + $return_data = [ + 'height'=>'', + 'weight'=>'', + 'bmi'=>'', + ]; + if(!in_array($gender,['1','2'])){ + return $return_data; + } + $age_m = $this->calculateAgeInMonthsWithPrecision($age); + if($age_m < 228){//月龄小于19岁 + // dump($age_m); + // $height_date = Db::table('ws_height')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $height_date = Db::query("select * from ws_height where age <= $age_m and gender = '$gender' order by age desc"); + // $weight_date = Db::table('ws_weight')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $weight_date = Db::query("select * from ws_weight where age <= $age_m and gender = '$gender' order by age desc"); + // $bmi_date = Db::table('ws_bmi')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $bmi_date = Db::query("select * from ws_bmi where age <= $age_m and gender = '$gender' order by age desc"); + $return_data = array( + 'height' => $height_date[0]['middle'], + 'weight' => $weight_date[0]['middle'], + 'bmi' => $bmi_date[0]['middle'], + ); + }else{ + $bmi_data = [ + '1' => [ // 男性 + [ + 'age' => ['min' => 216, 'max' => 299], // 18-24岁(216-299月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.5', 'max_val' => '23.9', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.0', 'max_val' => '27.9', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.0', 'max_val' => '31.9', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 300, 'max' => 419], // 25-34岁(300-419月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.0', 'max_val' => '24.4', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.5', 'max_val' => '28.4', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.5', 'max_val' => '32.4', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 420, 'max' => 539], // 35-44岁(420-539月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.5', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 540, 'max' => 719], // 45-59岁(540-719月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.0', 'max_val' => '25.5', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.6', 'max_val' => '29.5', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.6', 'max_val' => '33.5', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 720, 'max' => '99999'], // ≥60岁(720+月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '22.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.5', 'max_val' => '26.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '26.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ] + ], + '2' => [ // 女性 + [ + 'age' => ['min' => 216, 'max' => 299], // 18-24岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '19.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.0', 'max_val' => '22.9', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '23.0', 'max_val' => '26.9', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '27.0', 'max_val' => '30.9', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '31.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 300, 'max' => 419], // 25-34岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.5', 'max_val' => '23.4', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '23.5', 'max_val' => '27.4', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '27.5', 'max_val' => '31.4', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '31.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 420, 'max' => 539], // 35-44岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.0', 'max_val' => '24.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 540, 'max' => 719], // 45-59岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.5', 'max_val' => '24.5', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.6', 'max_val' => '28.5', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.6', 'max_val' => '32.5', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 720, 'max' => 99999], // ≥60岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.0', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ] + ] + ]; + + foreach ($bmi_data[$gender] as $group) { + if ($age_m >= $group['age']['min'] && $age_m <= $group['age']['max']) { + $return_data['bmi'] = bcdiv(bcadd($group['list'][2]['min_val'],$group['list'][2]['max_val'],20),2,1); + } + } + + } + return $return_data; + } + public function touwei_temporary_use($age,$gender){ + $return_data = [ + + ]; + if(!in_array($gender,['1','2'])){ + return $return_data; + } + + $age_m = $this->calculateAgeInMonthsWithPrecision($age); + + if($age_m <= 36){ + // $touwei_date = Db::table('ws_touwei')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->fetchSql(true)->select(); + $touwei_date = Db::query("select * from ws_touwei where age <= $age_m and gender = '$gender' order by age desc"); + $return_data = $touwei_date[0]; + } + return $return_data; + } + diff --git a/application/app/controller/Index.php b/application/app/controller/Index.php index d501106..ef067d3 100644 --- a/application/app/controller/Index.php +++ b/application/app/controller/Index.php @@ -103,7 +103,7 @@ class Index extends Base{ // 检测版本及判断是否登录失效 public function login_invalid_version($data = ['token'=>'2d4ea9b3f44b169ddf64b2f3d2725ceb']){ - try { + // try { // 获取客户端IP $ip = request()->ip(); // 调用IP识别方法 @@ -150,25 +150,25 @@ class Index extends Base{ $language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language); if($user_token_state['state'] === false){ - return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]); + return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); }else{ - return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]); + return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); } - } catch (\Exception $e) { - // 捕获异常 - $logContent["flie"] = $e->getFile(); - $logContent["line"] = $e->getLine(); - $logContent['all_content'] = "异常信息:\n"; - $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; - $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; - $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; - $logContent['all_content'] .= "方法: " . __METHOD__ . "\n"; - $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; - $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; - $this->record_api_log($data, $logContent, null); - return $this->msg(99999); - } + // } catch (\Exception $e) { + // // 捕获异常 + // $logContent["flie"] = $e->getFile(); + // $logContent["line"] = $e->getLine(); + // $logContent['all_content'] = "异常信息:\n"; + // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; + // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; + // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; + // $logContent['all_content'] .= "方法: " . __METHOD__ . "\n"; + // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; + // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; + // $this->record_api_log($data, $logContent, null); + // return $this->msg(99999); + // } } // 添加IP信息获取方法 @@ -185,7 +185,7 @@ class Index extends Base{ } } - public function set_language_country($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','language'=>'zh']){ + public function set_language_country($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','language'=>'zh-Hans']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -1155,6 +1155,16 @@ class Index extends Base{ return $result; } + // 处理返回的语言数组 + public function process_Language(){ + $temporary_arr = []; + foreach ($this->language_country as $key => $value) { + array_push($temporary_arr,['key'=>$key,'value'=>$value]); + } + return $temporary_arr; + } + + diff --git a/application/app/controller/Login.php b/application/app/controller/Login.php index cd8f044..da24dca 100644 --- a/application/app/controller/Login.php +++ b/application/app/controller/Login.php @@ -413,6 +413,7 @@ class Login extends Base{ * $type(验证类型,是注册用,还是其他用途) 字符串 默认register(注册)(register、login、reset_password) * $road(是手机还是邮箱还是其他) 字符串 默认tel或email */ + //18736019909 public function send_phone_email_code($data = ['data'=>'18736019909']){ if(count(input('post.')) > 0){ @@ -428,8 +429,12 @@ class Login extends Base{ $num = mt_rand(100000,999999); if (preg_match('/^\d{11}$/', $data['data'])) { + // 本公司短信 $result = $this->send_tel_code($data['data'],$num); - // return $this->msg($result); + // 阿里云短信 + // $sms_all = new Smsaliyun; + // $result = $sms_all->send_sms($data['data'],$num); + // dump($result); $road = 'tel'; }else{ $result = $this->send_email_code([$data['data']],['title'=>'体测APP验证码','from_user_name'=>'体测APP','content'=>$num]); @@ -473,7 +478,6 @@ class Login extends Base{ // 'content' => '【小白秤】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' // 'content' => '【品传科技】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' // 'content' => '【巨天】您好,欢迎使用巨天,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略!' - ); $postData = json_encode($postData); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); @@ -481,6 +485,7 @@ class Login extends Base{ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送请求并获取响应 $response = curl_exec($ch); + // dump($response); // 检查是否有错误发生 if (curl_errno($ch)) { $error_message = curl_error($ch); @@ -489,7 +494,7 @@ class Login extends Base{ // 关闭cURL会话 curl_close($ch); // 处理响应 - + // dump(json_decode($response,true)); if ($response) { return json_decode($response,true); } else { diff --git a/application/app/controller/Pagingcontrast.php b/application/app/controller/Pagingcontrast.php index 29a543a..d59e749 100644 --- a/application/app/controller/Pagingcontrast.php +++ b/application/app/controller/Pagingcontrast.php @@ -112,7 +112,7 @@ class Pagingcontrast extends Base{ } // 获取详细历史数据信息(包含身体、跳绳、肺活量) - public function get_all_record_detailed_information($data = ['id'=>'36','type'=>'8','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function get_all_record_detailed_information($data = ['id'=>'3802','type'=>'2','aan_id'=>'1841','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -458,6 +458,8 @@ class Pagingcontrast extends Base{ // $for_data_arr = ['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI','']]; // } $result_data = []; + // dump($result); + // dump($for_data_arr); foreach ($for_data_arr as $key => $value) { $temporary_arr['key_name'] = $key; $temporary_arr['name'] = $value[0]; @@ -471,10 +473,16 @@ class Pagingcontrast extends Base{ $temporary_arr['value'] = explode(',',$result[$key])[0]; } }else{ + if($key == 'un_fat_w_weight'){ $temporary_arr['value'] = bcsub(explode(',',$result['weight'])[0],explode(',',$result['fat_w'])[0],2); }else{ - $temporary_arr['value'] = explode(',',$result[$key])[0]; + // dump($key); + // dump($result[$key]); + if(array_key_exists($key,$result)){ + $temporary_arr['value'] = explode(',',$result[$key])[0]; + } + } } diff --git a/application/app/controller/Smsaliyun.php b/application/app/controller/Smsaliyun.php new file mode 100644 index 0000000..de38148 --- /dev/null +++ b/application/app/controller/Smsaliyun.php @@ -0,0 +1,84 @@ + 'LTAI5tQCdWe9Epir3ydXWbzp', + 'accessKeySecret' => 'JKLzF0b5AXw2ajhwtem2fhPSUZVOZ5', + 'signName' => '郑州巨天信息', + 'templateCode' => 'SMS_484085215', + 'regionId' => 'cn-hangzhou' + ]; + + /** + * 发送短信接口 + * @param string $phone 手机号 + * @param string $code 验证码 + */ + public function send_sms($phone='18530934717', $code='0932') + { + try { + // 初始化阿里云客户端 + AlibabaCloud::accessKeyClient( + $this->smsConfig['accessKeyId'], + $this->smsConfig['accessKeySecret'] + ) + ->regionId($this->smsConfig['regionId']) + ->asDefaultClient(); + + // 发送短信请求 + $result = AlibabaCloud::rpc() + ->product('Dysmsapi') + ->version('2017-05-25') + ->action('SendSms') + ->method('POST') + ->host('dysmsapi.aliyuncs.com') + ->options([ + 'query' => [ + 'RegionId' => $this->smsConfig['regionId'], + 'PhoneNumbers' => $phone, + 'SignName' => $this->smsConfig['signName'], + 'TemplateCode' => $this->smsConfig['templateCode'], + 'TemplateParam' => json_encode(['code' => $code]), + ], + ]) + ->request(); + + $result = $result->toArray(); + + if ($result['Code'] == 'OK') { + return [ + 'code' => 0, + 'message' => '短信发送成功', + 'data' => $result + ]; + } else { + return [ + 'code' => 99999, + 'message' => $result['Message'], + 'error' => $result + ]; + } + } catch (ClientException $e) { + return [ + 'code' => 99998, + 'message' => '客户端异常: ' . $e->getErrorMessage(), + 'error' => $e->getMessage() + ]; + } catch (ServerException $e) { + return [ + 'code' => 99997, + 'message' => '服务端异常: ' . $e->getErrorMessage(), + 'error' => $e->getMessage() + ]; + } + } +} \ No newline at end of file diff --git a/application/testapp/controller/Base.php b/application/testapp/controller/Base.php index 7138526..f429140 100644 --- a/application/testapp/controller/Base.php +++ b/application/testapp/controller/Base.php @@ -1,6 +1,6 @@ 'app_data_log', - '2'=>'app_card_data', - '3'=>'app_user_data', - '4'=>'pc_vitalcapacity_standard', - '5'=>'admin_estimate', - '6'=>'app_account_number' + '1'=>'app_data_log_copy1', + '2'=>'app_card_data_copy1', + '3'=>'app_user_data_copy1', + '4'=>'pc_vitalcapacity_standard_copy1', + '5'=>'admin_estimate_copy1', + '6'=>'app_account_number_copy1' ]; protected $ceshiyong_token = ['57bd45e3a963b372ea2d873e4bd8d1f8','e0966788d02cc93290d9d674921d9715']; diff --git a/application/testapp/controller/Calculatebody.php b/application/testapp/controller/Calculatebody.php index ee9bb9b..3215a65 100644 --- a/application/testapp/controller/Calculatebody.php +++ b/application/testapp/controller/Calculatebody.php @@ -1,6 +1,6 @@ 'app_card_body_data', - '2'=>'app_user_data', - '3'=>'pc_bmistand', - '4'=>'pc_heightstand', - '5'=>'pc_weightstand', - '6'=>'pc_childrenprescription', - '7'=>'pc_childprescriptionbyage', - '8'=>'pc_heightstand', - '9'=>'pc_weightstand', - '10'=>'pc_bmistand', + '1'=>'app_card_body_data_copy1', + '2'=>'app_user_data_copy1', + '3'=>'pc_bmistand_copy1', + '4'=>'pc_heightstand_copy1', + '5'=>'pc_weightstand_copy1', + '6'=>'pc_childrenprescription_copy1', + '7'=>'pc_childprescriptionbyage_copy1', + '8'=>'pc_heightstand_copy1', + '9'=>'pc_weightstand_copy1', + '10'=>'pc_bmistand_copy1', + '11'=>'app_account_number_copy1', ]; protected $age_limit = 16; protected $unit_symbol = ['score'=>'分','height'=>'CM','weight'=>'公斤','bmi'=>'','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','visceral'=>'','sfr'=>'%',]; @@ -89,7 +90,7 @@ class Card extends Base{ // 详细卡片信息 // $data = ['id'=>'2'] public function card_data_detailed($data=['aud_id'=>'144']){ - try { + // try { // 你的业务逻辑 if(count(input('post.')) > 0){ $data = input('post.'); @@ -102,22 +103,21 @@ class Card extends Base{ } // $return_data; $return_data = $this->get_user_body_data($data); - // $language_data = new Language(); - // $return_data = $language_data->handling_languages_from_multiple_countries('en', $return_data->getData()); + return $return_data; - } catch (\Exception $e) { - // 捕获异常 - $logContent["flie"] = $e->getFile(); - $logContent["line"] = $e->getLine(); - $logContent['all_content'] = "异常信息:\n"; - $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; - $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; - $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; - $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; - $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; - $this->record_api_log($data, $logContent, null); - return $this->msg(99999); - } + // } catch (\Exception $e) { + // // 捕获异常 + // $logContent["flie"] = $e->getFile(); + // $logContent["line"] = $e->getLine(); + // $logContent['all_content'] = "异常信息:\n"; + // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; + // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; + // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; + // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; + // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; + // $this->record_api_log($data, $logContent, null); + // return $this->msg(99999); + // } } @@ -422,8 +422,8 @@ class Card extends Base{ } // BMI测评 - public function card_bmi_evaluation($cbe_data = ['height'=>'177','weight'=>'177','birthday'=>'2024-10-03','sex'=>'1'],$type = false){ - try { + public function card_bmi_evaluation($cbe_data = ['height'=>'177','weight'=>'177','birthday'=>'2024-10-03','sex'=>'1','token'=>'caadd1be045a65f30b92aa805f1de54a'],$type = false){ + // try { // 你的业务逻辑 if(count(input('post.')) > 0 && $type == false){ $cbe_data = input('post.'); @@ -431,9 +431,10 @@ class Card extends Base{ if(!is_array($cbe_data)){ return $this->msg(10005); } - if(!array_key_exists('height', $cbe_data) || !array_key_exists('weight', $cbe_data) || !array_key_exists('birthday', $cbe_data) || !array_key_exists('sex', $cbe_data)){ + if(!array_key_exists('height', $cbe_data) || !array_key_exists('token', $cbe_data) || !array_key_exists('weight', $cbe_data) || !array_key_exists('birthday', $cbe_data) || !array_key_exists('sex', $cbe_data)){ return $this->msg(10001); } + $token = $cbe_data['token']; unset($cbe_data['token']); if(!$this->verify_data_is_ok($cbe_data['birthday'],'datetime')){ return $this->msg(10005); @@ -459,23 +460,31 @@ class Card extends Base{ $request_result = $this->postRequest($url,$temporary_parameter,array('Content-Type:application/json','Origin:http://ybdevice.pcxbc.com')); // 直接开始业务,请求外部接口end + // 处理进度点 $request_result =$this->bmi_evaluation_action($request_result); - $this->record_api_log($cbe_data, null, $request_result); - return $request_result; - } catch (\Exception $e) { - // 捕获异常 - $logContent["flie"] = $e->getFile(); - $logContent["line"] = $e->getLine(); - $logContent['all_content'] = "异常信息:\n"; - $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; - $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; - $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; - $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; - $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; - $this->record_api_log($cbe_data, $logContent, null); - return $this->msg(99999); - } + + $language_str = Db::table($this->card_use_db_name['11'])->where(['token'=>$token])->field('language')->find(); + $language_data = new Language(); + if(!$language_str['language']){ + $language_str['language'] = 'zh-Hans'; + } + $request_result = $language_data->handling_languages_from_multiple_countries($language_str['language'], $request_result->getData()['data']); + // $this->record_api_log($cbe_data, null, $request_result); + return $this->msg($request_result); + // } catch (\Exception $e) { + // // 捕获异常 + // $logContent["flie"] = $e->getFile(); + // $logContent["line"] = $e->getLine(); + // $logContent['all_content'] = "异常信息:\n"; + // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; + // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; + // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; + // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; + // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; + // $this->record_api_log($cbe_data, $logContent, null); + // return $this->msg(99999); + // } } ################################################################业务接口################################################################ @@ -517,7 +526,7 @@ class Card extends Base{ acbd.bmi, acbd.body_age, acbd.head_circumference, - aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date + aud.birthday,aud.gender,aud.target_weight,aud.initial_weight,aud.initial_date,aud.aan_id from ".$this->card_use_db_name['1']." as acbd left join ".$this->card_use_db_name['2']." as aud on acbd.aud_id=aud.id where acbd.is_del=0 and acbd.aud_id='".$data['aud_id']."' @@ -543,7 +552,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"weight", "desc"=>"反映和衡量一个人健康状况的重要标志之一", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], [ "name"=>"身高", @@ -554,7 +565,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"height", "desc"=>"人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], [ "name"=>"BMI", @@ -565,7 +578,9 @@ class Card extends Base{ "list"=>[], "key_name"=>"bmi", "desc"=>"BMI是身体质量指数,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。", - "offset"=>"0" + "offset"=>"0", + "standard_val"=>"", + "difference_val"=>"", ], ], 'bottom_list' => [], @@ -583,8 +598,11 @@ class Card extends Base{ 'cumulative_day'=>'0' ], ]; + $language_data = new Language(); + $result_return = $language_data->handling_languages_from_multiple_countries('zh-Hans', $result_return); return $this->msg($result_return); }else{ + // 存储头围数据 $head_circumference = $result[0]['head_circumference']?json_decode($result[0]['head_circumference'],true):false; unset($result[0]['head_circumference']); @@ -660,12 +678,13 @@ class Card extends Base{ // 加入曲线板块底部的减肥计划数据end // 添加头围数据(如果有的话)start if($head_circumference !== false && $this->calculate_age($result[0]['birthday']) < 3){ + if($head_circumference['level'] == '异常' || $head_circumference['value'] == 0){ $offset = 0; }else{ $offset = $cardparts->calculate_landing_point($head_circumference['list2'],$head_circumference['value'],$head_circumference['level']); } - array_push($result_end['top_list'],[ + $touwei_array = [ 'name'=>'头围', 'value'=>$head_circumference['value'], 'unit'=>'CM', @@ -675,10 +694,63 @@ class Card extends Base{ 'key_name'=>'head_circumference', 'desc'=>'头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关', 'offset'=>$offset - ]); + ]; + $touwei_data = $this->touwei_temporary_use($result[0]['birthday'],$result[0]['gender']); + if(count($touwei_data)){ + $touwei_array['standard_val'] = $touwei_data['middle']; + $touwei_array['difference_val'] = bcsub($touwei_array['value'],$touwei_data['middle'],2); + }else{ + $touwei_array['standard_val'] = ''; + $touwei_array['difference_val'] = ''; + } + array_push($result_end['top_list'],$touwei_array); + } // 添加头围数据(如果有的话)end + + // 这段业务处理可以删除,是做的临时的,假的start + $biaozhun_val = $this->body_temporary_use($result[0]['birthday'],$result[0]['gender']); + // dump($biaozhun_val); + // $biaozhun_val_weight = 50; + // $biaozhun_val_height = 170; + // $biaozhun_val_bmi = 22; + foreach ($result_end['top_list'] as $key => $value) { + if($value['key_name'] == 'weight'){ + if($biaozhun_val['weight'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['weight']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['weight'],2); + } + }else if($value['key_name'] == 'height'){ + if($biaozhun_val['height'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['height']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['height'],2); + } + }else if($value['key_name'] == 'bmi'){ + if($biaozhun_val['bmi'] == ''){ + $result_end['top_list'][$key]['standard_val'] = ''; + $result_end['top_list'][$key]['difference_val'] = ''; + }else{ + $result_end['top_list'][$key]['standard_val'] = $biaozhun_val['bmi']; + $result_end['top_list'][$key]['difference_val'] = bcsub($value['value'],$biaozhun_val['bmi'],2); + } + } + + } + // 这段业务处理可以删除,是做的临时的,假的end + // dump($result); + $language_str = Db::table($this->card_use_db_name['11'])->where(['id'=>$result[0]['aan_id']])->field('language')->find(); + $language_data = new Language(); + if(!$language_str['language']){ + $language_str['language'] = 'zh-Hans'; + } + $result_end = $language_data->handling_languages_from_multiple_countries($language_str['language'], $result_end); return $this->msg($result_end); } } @@ -1253,6 +1325,174 @@ class Card extends Base{ ################################################################其他接口################################################################ ################################################################其他接口################################################################ + public function body_temporary_use($age,$gender){ + $return_data = [ + 'height'=>'', + 'weight'=>'', + 'bmi'=>'', + ]; + if(!in_array($gender,['1','2'])){ + return $return_data; + } + $age_m = $this->calculateAgeInMonthsWithPrecision($age); + if($age_m < 228){//月龄小于19岁 + // dump($age_m); + // $height_date = Db::table('ws_height')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $height_date = Db::query("select * from ws_height where age <= $age_m and gender = '$gender' order by age desc"); + // $weight_date = Db::table('ws_weight')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $weight_date = Db::query("select * from ws_weight where age <= $age_m and gender = '$gender' order by age desc"); + // $bmi_date = Db::table('ws_bmi')->where("age <= $month_num and Sex = '$gender'")->order('age desc')->limit(1)->field('middle')->select(); + $bmi_date = Db::query("select * from ws_bmi where age <= $age_m and gender = '$gender' order by age desc"); + $return_data = array( + 'height' => $height_date[0]['middle'], + 'weight' => $weight_date[0]['middle'], + 'bmi' => $bmi_date[0]['middle'], + ); + }else{ + $bmi_data = [ + '1' => [ // 男性 + [ + 'age' => ['min' => 216, 'max' => 299], // 18-24岁(216-299月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.5', 'max_val' => '23.9', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.0', 'max_val' => '27.9', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.0', 'max_val' => '31.9', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 300, 'max' => 419], // 25-34岁(300-419月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.0', 'max_val' => '24.4', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.5', 'max_val' => '28.4', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.5', 'max_val' => '32.4', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 420, 'max' => 539], // 35-44岁(420-539月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.5', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 540, 'max' => 719], // 45-59岁(540-719月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.0', 'max_val' => '25.5', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.6', 'max_val' => '29.5', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.6', 'max_val' => '33.5', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 720, 'max' => '99999'], // ≥60岁(720+月龄) + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.5', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.5', 'max_val' => '22.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.5', 'max_val' => '26.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '26.1', 'max_val' => '29.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '29.1', 'max_val' => '33.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '33.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ] + ], + '2' => [ // 女性 + [ + 'age' => ['min' => 216, 'max' => 299], // 18-24岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '19.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.0', 'max_val' => '22.9', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '23.0', 'max_val' => '26.9', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '27.0', 'max_val' => '30.9', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '31.0', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 300, 'max' => 419], // 25-34岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '20.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '20.5', 'max_val' => '23.4', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '23.5', 'max_val' => '27.4', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '27.5', 'max_val' => '31.4', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '31.5', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 420, 'max' => 539], // 35-44岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '20.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.0', 'max_val' => '24.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 540, 'max' => 719], // 45-59岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '21.4', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '21.5', 'max_val' => '24.5', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '24.6', 'max_val' => '28.5', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.6', 'max_val' => '32.5', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.6', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ], + [ + 'age' => ['min' => 720, 'max' => 99999], // ≥60岁 + 'list'=>[ + ['min_val' => '0', 'max_val' => '18.0', 'text' => '低体重', 'color' => '#8BC8FB'], + ['min_val' => '18.0', 'max_val' => '21.9', 'text' => '偏瘦', 'color' => '#B4E3FD'], + ['min_val' => '22.0', 'max_val' => '25.0', 'text' => '正常', 'color' => '#6CD86F'], + ['min_val' => '25.1', 'max_val' => '28.0', 'text' => '超重', 'color' => '#FFD166'], + ['min_val' => '28.1', 'max_val' => '32.0', 'text' => '肥胖', 'color' => '#FF9A5A'], + ['min_val' => '32.1', 'max_val' => '99999', 'text' => '重度肥胖', 'color' => '#FF6B6B'] + ] + ] + ] + ]; + + foreach ($bmi_data[$gender] as $group) { + if ($age_m >= $group['age']['min'] && $age_m <= $group['age']['max']) { + $return_data['bmi'] = bcdiv(bcadd($group['list'][2]['min_val'],$group['list'][2]['max_val'],20),2,1); + } + } + + } + return $return_data; + } + public function touwei_temporary_use($age,$gender){ + $return_data = [ + + ]; + if(!in_array($gender,['1','2'])){ + return $return_data; + } + + $age_m = $this->calculateAgeInMonthsWithPrecision($age); + + if($age_m <= 36){ + // $touwei_date = Db::table('ws_touwei')->where("age <= $age_m and gender = '$gender'")->order('age desc')->limit(1)->field('middle')->fetchSql(true)->select(); + $touwei_date = Db::query("select * from ws_touwei where age <= $age_m and gender = '$gender' order by age desc"); + $return_data = $touwei_date[0]; + } + return $return_data; + } + diff --git a/application/testapp/controller/Cardparts.php b/application/testapp/controller/Cardparts.php index bde25eb..d27aa9d 100644 --- a/application/testapp/controller/Cardparts.php +++ b/application/testapp/controller/Cardparts.php @@ -1,6 +1,6 @@ 'app_user_data', - '2'=>'app_card_data_sub_item', - '3'=>'app_card_data_sub_item_data', - '4'=>'admin_estimate', - '5'=>'app_card_data' + '1'=>'app_user_data_copy1', + '2'=>'app_card_data_sub_item_copy1', + '3'=>'app_card_data_sub_item_data_copy1', + '4'=>'admin_estimate_copy1', + '5'=>'app_card_data_copy1' ]; protected $curve_color = ['#f7b03e','#fb7b92','#ff9f40','#3fcba7',]; diff --git a/application/testapp/controller/Deepseek.php b/application/testapp/controller/Deepseek.php index bf4d722..73bb81c 100644 --- a/application/testapp/controller/Deepseek.php +++ b/application/testapp/controller/Deepseek.php @@ -1,6 +1,6 @@ 'admin_editor_text_content', - '2'=>'admin_editor_text_like_up_log', - '3'=>'admin_notice_banner', - '4'=>'admin_business_cooperation' + '1'=>'admin_editor_text_content_copy1', + '2'=>'admin_editor_text_like_up_log_copy1', + '3'=>'admin_notice_banner_copy1', + '4'=>'admin_business_cooperation_copy1' ]; protected $page_num = 10; // 加 bcadd(,,20) diff --git a/application/testapp/controller/Device.php b/application/testapp/controller/Device.php index 5f0b606..57a9e84 100644 --- a/application/testapp/controller/Device.php +++ b/application/testapp/controller/Device.php @@ -1,6 +1,6 @@ 'app_device_data', - '2'=>'app_account_number', - '3'=>'app_device_code_data', + '1'=>'app_device_data_copy1', + '2'=>'app_account_number_copy1', + '3'=>'app_device_code_data_copy1', ]; diff --git a/application/testapp/controller/Download.php b/application/testapp/controller/Download.php index 0d5efc2..e9b0188 100644 --- a/application/testapp/controller/Download.php +++ b/application/testapp/controller/Download.php @@ -1,6 +1,6 @@ 'app_card_body_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data','10'=>'app_card_data_sub_item_data']; + protected $db_name = ['2'=>'app_card_body_data_copy1','6'=>'app_card_skip_data_copy1','8'=>'app_card_vitalcapacity_data_copy1','10'=>'app_card_data_sub_item_data_copy1']; protected $index_use_db_name = [ - '1'=>'app_version_log', - '2'=>'app_user_data', - '3'=>'app_card_body_data', - '4'=>'app_device_code_data', - '5'=>'app_device_data', - '6'=>'app_card_data', - '7'=>'app_account_number', - '8'=>'app_card_data_sub_item', - '9'=>'app_card_data_sub_item_data', - '10'=>'admin_estimate' + '1'=>'app_version_log_copy1', + '2'=>'app_user_data_copy1', + '3'=>'app_card_body_data_copy1', + '4'=>'app_device_code_data_copy1', + '5'=>'app_device_data_copy1', + '6'=>'app_card_data_copy1', + '7'=>'app_account_number_copy1', + '8'=>'app_card_data_sub_item_copy1', + '9'=>'app_card_data_sub_item_data_copy1', + '10'=>'admin_estimate_copy1' ]; // protected $card_key = ['2'=>'body','6'=>'skip','8'=>'vitalcapacity']; protected $default_card = ['2','6','8']; @@ -65,7 +65,7 @@ class Index extends Base{ protected $language_country = [ 'en' => 'English', // 英语(通用)★ - 'zh' => '中文', // 中文(简体)★ + 'zh-Hans' => '中文', // 中文(简体)★ // 'es' => 'Español', // 西班牙语(西班牙)★ // 'fr' => 'Français', // 法语(法国)★ // 'pt' => 'Português', // 葡萄牙语(巴西)★ @@ -103,7 +103,7 @@ class Index extends Base{ // 检测版本及判断是否登录失效 public function login_invalid_version($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a']){ - try { + // try { // 获取客户端IP $ip = request()->ip(); // 调用IP识别方法 @@ -147,33 +147,28 @@ class Index extends Base{ $url = ''; } $user_token_state = $this->token_time_validate($data['token']); - - $user_language_data = Db::table($this->index_use_db_name['7'])->where(['token'=>$data['token']])->field('language')->find(); - if($user_language_data != null){ - $language_data = $user_language_data['language']; - }else{ - $language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language); - } + + $language_data = $this->pd_language($user_token_state['language'],$isSupportedLanguage,$language); if($user_token_state['state'] === false){ - return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]); + return $this->msg(-1,'未登录',['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); }else{ - return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->language_country]); + return $this->msg(['version'=>$version,'url'=>$url,'language'=>$language_data,'language_arr'=>$this->process_Language()]); } - } catch (\Exception $e) { - // 捕获异常 - $logContent["flie"] = $e->getFile(); - $logContent["line"] = $e->getLine(); - $logContent['all_content'] = "异常信息:\n"; - $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; - $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; - $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; - $logContent['all_content'] .= "方法: " . __METHOD__ . "\n"; - $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; - $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; - $this->record_api_log($data, $logContent, null); - return $this->msg(99999); - } + // } catch (\Exception $e) { + // // 捕获异常 + // $logContent["flie"] = $e->getFile(); + // $logContent["line"] = $e->getLine(); + // $logContent['all_content'] = "异常信息:\n"; + // $logContent['all_content'] .= "消息: " . $e->getMessage() . "\n"; + // $logContent['all_content'] .= "代码: " . $e->getCode() . "\n"; + // $logContent['all_content'] .= "文件: " . $e->getFile() . "\n"; + // $logContent['all_content'] .= "方法: " . __METHOD__ . "\n"; + // $logContent['all_content'] .= "行号: " . $e->getLine() . "\n"; + // $logContent['all_content'] .= "跟踪信息:\n" . $e->getTraceAsString() . "\n"; + // $this->record_api_log($data, $logContent, null); + // return $this->msg(99999); + // } } // 添加IP信息获取方法 @@ -190,7 +185,7 @@ class Index extends Base{ } } - public function set_language_country($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','language'=>'zh']){ + public function set_language_country($data = ['token'=>'caadd1be045a65f30b92aa805f1de54a','language'=>'zh-Hans']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -358,7 +353,7 @@ class Index extends Base{ // 获取账号下用户列表 // $type 1获取列表,2获取详细信息 - public function get_user_card_list($data = ['aan_id'=>4,'type'=>2,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function get_user_card_list($data = ['aan_id'=>87,'type'=>2,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -366,7 +361,6 @@ class Index extends Base{ } if(!array_key_exists('token', $data) || !array_key_exists('aan_id', $data) || !array_key_exists('type', $data)){ // 失败 - $this->record_api_log($data, null, ['code'=>10001,'msg'=>'',[]]); return $this->msg(10001); } if(!$this->verify_data_is_ok($data['aan_id'],'intnum')){ @@ -425,7 +419,7 @@ class Index extends Base{ } // 获取指定用户详细信息 - public function get_user_data_information($data = ['aud_id'=>61]){ + public function get_user_data_information($data = ['aud_id'=>144]){ // try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -1152,7 +1146,7 @@ class Index extends Base{ if($isSupportedLanguage){ $result = $language; }else{ - $result = 'en'; // 默认语言为中文 + $result = 'zh-Hans'; // 默认语言为中文 } }else{ $result = $user_language; @@ -1160,6 +1154,16 @@ class Index extends Base{ return $result; } + // 处理返回的语言数组 + public function process_Language(){ + $temporary_arr = []; + foreach ($this->language_country as $key => $value) { + array_push($temporary_arr,['key'=>$key,'value'=>$value]); + } + return $temporary_arr; + } + + diff --git a/application/testapp/controller/Language.php b/application/testapp/controller/Language.php index 141bcac..a4ee93c 100644 --- a/application/testapp/controller/Language.php +++ b/application/testapp/controller/Language.php @@ -1,6 +1,6 @@ 'German' ]; + // $language_data = new Language(); + // if(!$language_str['language']){ + // $language_str['language'] = 'zh-Hans'; + // } + // $result_end = $language_data->handling_languages_from_multiple_countries($language_str['language'], $result_end); + // 语言映射表 protected $languageMap = [ 'en' => [ @@ -74,19 +80,122 @@ class Language extends Base '肥胖等级' => "Obesity Level", '体重不足' => "Underweight", '肥胖的程度,表现实际体重与理想体重的差距。肥胖等级是判定肥胖症的一个指标。' => "Obesity level indicates the disparity between actual and ideal weight, serving as a diagnostic criterion for obesity.", + '孩子可能存在营养不良:对于处在生长发育期的孩子而言,蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、钙、铁、维生素D、赖氨酸等营养。建议补充含鸡内金山楂膏健脾开胃类药食同源食物。' => "The child may be malnourished: For growing children, protein, carbohydrates, vitamins, and minerals are critical. Ensure adequate intake of protein, zinc, calcium, iron, vitamin D, lysine, etc. Consider herbal foods like chicken gizzard-hawthorn paste to improve digestion and appetite.", - '孩子可能存在营养不良:对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养。' => "The child may be malnourished: For children in their growth and development stage, the most beneficial nutrients for height growth are proteins, carbohydrates, vitamins, and minerals. It is recommended to ensure adequate intake of nutrients such as protein, zinc, iron, calcium, vitamin D, and lysine.", + '坚持适当、科学的跳跃运动能够科学地增加学生体重,能够改善学 生体重过低的情况;同时运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。' => "Moderate, scientifically designed jumping exercises can help underweight students gain weight by boosting energy expenditure and gastrointestinal motility, thereby increasing appetite. Combined with balanced nutrition, this supports healthy weight gain.", - '3-7岁的孩子:骑两轮车、拍踢球、打篮球、游泳、爬山,每天高强度运动不超过30分钟。' => "Ages 3–7: Bicycling, ball games, basketball, swimming, hiking. Limit high-intensity exercise to 30 minutes daily.", - '该年龄段睡眠时间建议:9-11小时' => "Recommended sleep duration for this age group: 9–11 hours.", - '孩子开始对于赞赏、鼓励、认同和肯定有需求,而且此阶段父亲在孩子的性格塑造、情绪控制以及责任感培养方面扮演着重要的角色,必须告诉孩子什么事应该做、什么事不应该做,并经常性地给孩子一些积极地暗示。例如,可以时常向孩子表达“我会一直在你身边,不要害怕””我对你的进步都看在眼里等类似的话语。' => "Children begin to crave praise, encouragement, and validation. Fathers play a key role in shaping character, emotional regulation, and responsibility during this phase. Clearly define boundaries while offering positive affirmations (e.g., 'I’m always here for you,' 'I see your progress').", + + '孩子开始对于赞赏、鼓励、认同和肯定有需求,而且此阶段父亲在孩子的性格塑造、情绪控制以及责任感培养方面扮演着重要的角色,必须告诉孩子什么事应该做、什么事不应该做,并经常性地给孩子一些积极地暗示。例如,可以时常向孩子表达“我会一直在你身边,不要害怕””我对你的进步都看在眼里等类似的话语。' => 'Children begin developing needs for praise, encouragement, recognition and affirmation. During this phase, fathers play a vital role in character formation, emotional regulation and responsibility cultivation. Clearly communicate appropriate behaviors while providing consistent positive reinforcement, such as saying: "I\'ll always be here for you" or "I see your progress."', + + '步入最佳学习期,除了文化课的学习更多的还有情绪调节、人际交往的学习,会模仿父母、老师同学。此阶段需要的不仅是尊重和信任,还需要更多自由选择的权利,变管制为引导。' => 'Entering the optimal learning period, children develop emotional regulation and social skills beyond academics, mimicking parents, teachers and peers. They require not just respect and trust, but also increased autonomy - transitioning from control to guidance.', + + '该年龄段睡眠时间建议:11-14小时' => 'Recommended sleep duration: 11-14 hours', + + '0-1岁的孩子:6个月之前多练习趴着、抬头、翻身等,6个月后练习爬行,8个月后可尝试坐着。充分的爬行运动有利于孩子协调性和平衡力的培养。' => '0-1 year olds: Practice tummy time, head lifting and rolling before 6 months; crawling after 6 months; attempt sitting at 8 months. Ample crawling enhances coordination and balance.', + + '3-7岁的孩子:骑两轮车、拍踢球、打篮球、游泳、爬山,每天高强度运动不超过30分钟。' => '3-7 year olds: Bicycle riding, ball games, basketball, swimming, mountain climbing. Limit high-intensity exercise to 30 minutes daily.', + + '正值青春期,生理的特点决定了情绪的跌宕起伏。当孩子出现情绪问题时,父母可以告诉孩子一些解决的办法,然后让他自行体悟和理解,教会孩子接纳情绪的方法而不是如何对抗情绪。' => 'Adolescents experience physiological mood fluctuations. When emotional issues arise, parents should teach coping strategies for self-discovery, emphasizing emotional acceptance over resistance.', + + '该年龄段睡眠时间建议:8-10小时' => 'Recommended sleep duration: 8-10 hours', + + '睡眠时间建议:晚上9点到凌晨1点、早上5点到7点是孩子生长激素分泌最多的时间段,此时进入深度睡眠,生长激素的分泌就会最大化,建议处在生长发育期的孩子尽量在9点前睡觉。' => 'Optimal sleep window: 9pm-1am and 5-7am when growth hormone peaks. Maximize secretion through deep sleep. Growing children should sleep before 9pm.', + + '1、情绪的不稳定影响了下丘脑及垂体系统的正常工作,进而使垂体生长激素分泌减少,长期的情绪障碍除了影响身高,同时还会造成孩子智力增长慢、多动、人际关系不协调等异常现象。' => '1. Emotional instability disrupts hypothalamic-pituitary function, reducing growth hormone secretion. Chronic emotional issues may impair height development, cognitive growth, and cause hyperactivity or social maladjustment.', + + '1-3岁的孩子:此年龄段实现了由走到跑的转变,神经系统也得到了发育。鼓励孩子有利于生长发育的活动即可:踩图案、绕障碍行走、学小动物走路(如青蛙跳、猴子跑、老虎匍匐前进等)、仰卧起坐等。' => '1-3 year olds: Transitioning from walking to running with developing nervous systems. Encourage developmental activities: pattern stepping, obstacle courses, animal walks (frog jumps, monkey runs, tiger crawls), and sit-ups.', + + '该年龄段睡眠时间建议:14-17小时' => 'Recommended sleep duration: 14-17 hours', + + '该年龄段睡眠时间建议:10-13小时' => 'Recommended sleep duration: 10-13 hours', + + '该年龄段睡眠时间建议:12-15小时' => 'Recommended sleep duration: 12-15 hours', + + '除了满足食物等生理需求,需要建立足够的安全感,充分陪伴、呵护。还要在排除一些安全隐患后适当满足孩子的探索需求。' => 'Beyond physiological needs like food, provide security through attentive care while enabling safe exploration after risk assessment.', + + '该年龄段睡眠时间建议:9-11小时' => 'Recommended sleep duration: 9-11 hours', + + '8-16岁的孩子:1、每周3-5次跳绳,50-100次左右/组,每天做5组,每组间隔5分钟;2、立定跳远,每周5-7次,每次20-50次;3、慢跑500-1000米;3、20个俯卧撑,30个上下蹲、30个仰卧起坐。' => '8-16 year olds: 1) Rope skipping 3-5x/week: 5 sets of 50-100 skips daily with 5-minute intervals; 2) Standing long jumps 5-7x/week (20-50 reps); 3) Jogging 500-1000m; 4) 20 push-ups, 30 squats, 30 sit-ups.', + + '这个阶段的孩子最调皮,一方面非常依赖父母,另一方面又相对独立。这个阶段仍然需要安全感,并且父母本身的心理状态对孩子的影响依然深远,当他们情绪不稳定,孩子也极有可能受到影响。' => 'Children at this stage exhibit mischievousness while balancing dependence and independence. They still require security, and parental emotional stability profoundly impacts them - children often mirror parental emotional turbulence.', + + '孩子可能存在营养不良:对于处在生长发育期的孩子而言,蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、钙、铁、维生素D、赖氨酸等营养。' => 'The child may be malnourished: For growing children, four key nutrients - proteins, carbohydrates, vitamins and minerals - are crucial. Recommend supplementing adequate protein, zinc, calcium, iron, vitamin D, and lysine.', + + '孩子可能存在营养不良:对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养。' => 'The child may be malnourished: The most height-beneficial nutrients for growing children are proteins, carbohydrates, vitamins and minerals. Recommend supplementing adequate protein, zinc, iron, calcium, vitamin D, and lysine.', + + '对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养,预防营养不良。' => 'For growing children, the most height-promoting nutrients are proteins, carbohydrates, vitamins and minerals. Recommend supplementing adequate protein, zinc, iron, calcium, vitamin D, and lysine to prevent malnutrition.', + + '超重的孩子如不加以控制,则极易向肥胖转变。超重的孩子饮食注意事项:控制食量,吃八分饱;三餐规律,避免暴饮暴食;细嚼慢咽;营养均衡搭配,拒绝高油、高盐、高糖的食物,养成清淡的口味。' => 'Overweight children easily progress to obesity without intervention. Dietary guidelines: 80% fullness; regular meals; thorough chewing; balanced nutrition; avoiding greasy/salty/sugary foods; developing light tastes.', + + '孩子可能存在中度营养不良:对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养。' => 'The child may have moderate malnutrition: The most height-beneficial nutrients are proteins, carbohydrates, vitamins and minerals. Recommend supplementing adequate protein, zinc, iron, calcium, vitamin D, and lysine.', + + '孩子可能存在重度营养不良:对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养。' => 'The child may have severe malnutrition: The most height-beneficial nutrients are proteins, carbohydrates, vitamins and minerals. Recommend supplementing adequate protein, zinc, iron, calcium, vitamin D, and lysine.', + + '1、肥胖在某种意义来说是隐性的营养不良,由于摄入热量过高,孩子虽然看着胖,但营养的摄入是不均衡的,尤其对于8-14岁的孩子来说,肥胖会极大地提高性早熟的概率。肥胖的孩子过度进食甜食、油腻的食物极易出现血糖高、高脂血症从而影响生长激素的分泌,影响终身高。肥胖的孩子更容易缺乏维生素D影响骨骼的钙化和成长。2、肥胖的孩子饮食注意事项:控制食量,吃八分饱;三餐规律,避免暴饮暴食;细嚼慢咽;营养均衡搭配,拒绝高油、高盐、高糖的食物,养成清淡的口味。' => '1. Obesity represents hidden malnutrition - while calorie intake is excessive, nutrition remains unbalanced. Particularly for 8-14 year olds, obesity significantly increases precocious puberty risks. Overconsumption of sweets/greasy foods elevates blood sugar/lipids, impairing growth hormone secretion and final height. Obese children also face higher vitamin D deficiency risks, affecting bone calcification. 2. Dietary guidelines: 80% fullness; regular meals; thorough chewing; balanced nutrition; avoiding greasy/salty/sugary foods; developing light tastes.', + + '对于处在生长发育期的孩子而言,蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、铁、钙、维生素D、赖氨酸等营养,预防营养不良造成体型偏瘦。' => 'For growing children, four key nutrients - proteins, carbohydrates, vitamins and minerals - are essential. Recommend supplementing adequate protein, zinc, iron, calcium, vitamin D, and lysine to prevent underweight malnutrition.', + + '超重或肥胖的孩子如不加以控制,则极易向肥胖转变。超重或肥胖的孩子饮食注意事项:控制食量,吃八分饱;三餐规律,避免暴饮暴食;细嚼慢咽;营养均衡搭配,拒绝高油、高盐、高糖的食物,养成清淡的口味。建议补充含鸡内金山楂膏健脾开胃类药食同源食物。' => 'Overweight/obese children easily progress to worse obesity without control. Dietary guidelines: 80% fullness; regular meals; thorough chewing; balanced nutrition; avoiding greasy/salty/sugary foods; developing light tastes. Recommend supplementing with chicken gizzard-hawthorn paste (a food-grade herbal digestant).', + + '对于处在生长发育期的孩子而言,蛋白质、碳水化合物、维生素和矿物质这四类营养素非常重要。建议补充足够的蛋白质、锌、钙、维生素D、赖氨酸等营养,预防营养不良造成体型偏瘦。建议补充含鸡内金山楂膏健脾开胃类药食同源食物。' => 'For growing children, four key nutrients - proteins, carbohydrates, vitamins and minerals - are essential. Recommend supplementing adequate protein, zinc, calcium, vitamin D, and lysine to prevent underweight malnutrition, along with chicken gizzard-hawthorn paste (a food-grade herbal digestant).', + + '对于处在生长发育期的孩子而言,最有利于长高的营养素是蛋白质、碳水化合物、维生素和矿物质四类。建议补充足够的蛋白质、锌、钙、维生素D、赖氨酸等营养,预防营养不良。铁' => 'For growing children, the most height-promoting nutrients are proteins, carbohydrates, vitamins and minerals. Recommend supplementing adequate protein, zinc, calcium, vitamin D, and lysine to prevent malnutrition. Iron.', + + '运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。'=> 'Physical activity burns calories and enhances gastrointestinal motility, significantly stimulating children\'s appetite. When combined with balanced nutrition, this effectively supports healthy weight gain.', + + '体育运动可以有效刺激骨骼与全身关节,从而促进生长激素分泌,加速软骨细胞分裂,从而促进了身高的增长。跳绳运动是一项非常健康的运动方式,可以促进青少年的骨骼生长和发育,促进青少年的体质健康。' => 'Exercise actively stimulates bones and joints throughout the body, promoting growth hormone secretion and accelerating chondrocyte division to facilitate height increase. Rope skipping is an exceptionally beneficial exercise that enhances adolescents\' bone development and overall physical fitness.', + + '适宜的运动,能促进全身及骨的钙磷代谢,促进骨生长,长期的户外运动,加速骨细胞的生长,使管状骨变长,横径增粗,促进生长发育。'=> 'Moderate exercise optimizes whole-body calcium-phosphorus metabolism and bone growth. Regular outdoor activities accelerate osteocyte proliferation, lengthening long bones while increasing their diameter to promote healthy development.', + + '运动会消耗能量,培养运动习惯,减少静坐时间,建议每天参加体育运动的时间至少30分钟,不贪睡,睡得越久,人体代谢速度就会越慢,极易囤积脂肪。'=> 'Exercise consumes energy, establishes active habits and reduces sedentary behavior. We recommend minimum 30 minutes of daily physical activity. Excessive sleep slows metabolic rate and promotes fat accumulation.', + + '体育运动可以有效刺激骨骼与全身关节,从而促进生长激素分泌,加速软骨细胞分裂,从而促进了身高的增长。长期科学地坚持跳绳,可以在很大程度上增加骨强度和骨密度,促进骨生长,从而改善青少年的骨健康情况。跳绳运动是一项非常健康的运动方式,可以促进青少年的骨骼生长和发育,促进青少年的体质健康。' => 'Physical training effectively activates skeletal and articular systems, boosting growth hormone production and chondrocyte multiplication to enhance height. Scientifically-guided long-term rope skipping significantly improves bone mineral density and strength, optimizing adolescents\' skeletal health. This exercise is particularly effective for promoting bone development and physical conditioning.', + + '体育运动可以有效刺激骨骼与全身关节,从而促进生长激素分泌,加速软骨细胞分裂,从而促进了身高的增长。补救身高的最好方式就是长期坚持适当的体育运动,只要是采取科学的锻炼方法,都能促进骨骼的生长。在所有的运动项目中,全身运动、动力性跳跃运动和伸展运动这三类运动最能够促进身高增长。' => 'Exercise stimulates osseous and joint systems to enhance growth hormone release and cartilage cell division, facilitating height development. The most effective height-correction method involves sustained, moderate physical activity - any scientifically-designed regimen promotes bone growth. Among all exercises, full-body movements, plyometric jumps and stretching prove most beneficial for height improvement.', + + '运动会消耗能量,会增加体内脂肪的消耗,减少储存量,起到帮助控制体重的作用;培养运动习惯,减少静坐时间,建议每天参加体育运动的时间至少30分钟,不贪睡,睡得越久,人体代谢速度就会越慢,极易囤积脂肪。' => 'Physical exertion increases calorie expenditure and fat utilization while reducing adipose storage, effectively aiding weight management. Establish consistent exercise routines and minimize inactivity with at least 30 minutes daily movement. Prolonged sleep decreases metabolic efficiency and encourages fat deposition.', + + '运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子维持合格的体重。' => 'Exercise burns calories and stimulates digestive peristalsis, markedly improving children\'s appetite. Paired with nutritional balance, this helps maintain optimal body weight parameters.', + + '建议多做跳跃运动(立定跳远,跳绳)中跳跃刺激的频率以及速度都对于机体中过多脂肪的消耗起到促进作用,能够一定程度上起到预防和控制肥胖、降低体重的作用;同时培养运动习惯,减少静坐时间,建议每天参加体育运动的时间至少30分钟,不贪睡,睡得越久,人体代谢速度就会越慢,极易囤积脂肪。' => 'Prioritize jumping exercises (standing broad jumps, rope skipping) as their impact frequency and velocity significantly enhance fat oxidation, effectively preventing obesity and aiding weight control. Cultivate regular workout habits and limit sedentary periods to minimum 30 minutes daily activity. Excessive sleep duration reduces metabolic rate and promotes lipid accumulation.', + + '运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子维持合格的体重。' => 'Physical activity expends energy and intensifies gastrointestinal motility, substantially boosting children\'s appetite. Combined with balanced nutrition, this assists in maintaining healthy weight standards.', + + '体育运动可以有效刺激骨骼与全身关节,从而促进生长激素分泌,加速软骨细胞分裂,从而促进了身高的增长。' => 'Systematic exercise effectively activates skeletal and articular systems, stimulating growth hormone secretion and accelerating cartilage cell proliferation to optimize height development.', + + '坚持适当、科学的跳跃运动能够科学地增加学生体重,能够改善学生体重过低的情况;同时运动会消耗能量并加速胃肠蠕动,这会使孩子的食欲大开,再配合均衡的营养有利于孩子增重。' => 'Consistent, properly-designed jumping exercises can scientifically increase students\' body mass and correct underweight conditions. Concurrently, physical training consumes energy and enhances digestive motility, stimulating appetite which - when supported by nutritional balance - promotes healthy weight gain.', + '《中华人民共和国卫生行业标准WS 423-2013》' => "《Chinese Health Industry Standard WS 423-2013》", '《中华人民共和国卫生行业标准WS/T 612-2018》' => "《Chinese Health Industry Standard WS/T 612-2018》", '《中华人民共和国卫生行业标准WS/T1586-2018》' => "《Chinese Health Industry Standard WS/T 1586-2018》", '《WHO 5~19岁身高/体重判定标准》' => "《WHO Growth Reference for Children and Adolescents (5–19 Years)》", '头围' => "Head Circumference", '头围是指绕头部一周的最大长度,头围的大小与脑的发育密切相关' => "Head circumference refers to the maximum length around the head. Its measurement is closely related to brain development.", - + '跳绳数量或者分钟、秒钟值必须为整数' => 'The number of jump ropes, minutes, or seconds must be integers.', + '跳绳数不能小于等于0' => 'The jump rope count cannot be less than or equal to 0.', + '秒钟值不能大于60' => 'The seconds value cannot exceed 60.', + '跳绳个数(个)' => 'Jump rope count (times)', + '跳绳时长(分钟)' => 'Jump rope duration (minutes)', + '消耗卡路里(kcal)' => 'Calories burned (kcal)', + '个数' => 'Count', + '时长' => 'Duration', + '卡路里' => 'Calories', + '第一次' => 'First try', + '第二次' => 'Second try', + '第三次' => 'Third try', + '三次平均' => 'Average of three', + '最后成绩' => 'Final score', + '分' => 'Score', + '平均' => 'Average', + '成绩' => 'Score', + '时间(天)' => 'Time (days)', + '增重(kg)' => 'Weight gain (kg)', + '减脂(kg)' => 'Fat loss (kg)', + '数据变化' => 'Data changes', + '趋势' => 'Trend', + '之前' => 'Before', + '之后' => 'After', + '异常' => 'Abnormal', ], // 可以添加更多语言映射 ]; @@ -104,14 +213,14 @@ class Language extends Base // dump($data); // 验证语言是否支持 if (!$this->isLanguageSupported($language)) { - return $this->msg($data['data']); + return $data; } // 如果是数组,递归处理每个元素 if (is_array($data)) { // dump(2); $data = $this->translateArray($language, $data); - return $this->msg($data['data']); + return $data; } // 如果是字符串,直接翻译 @@ -122,7 +231,7 @@ class Language extends Base // dump($data); // 其他类型直接返回 - return $this->msg($data['data']); + return $data; } /** diff --git a/application/testapp/controller/Login.php b/application/testapp/controller/Login.php index cd8f044..acfa417 100644 --- a/application/testapp/controller/Login.php +++ b/application/testapp/controller/Login.php @@ -1,11 +1,11 @@ 'app_account_number', + '1'=>'app_account_number_copy1', ]; ################################################################接口################################################################ @@ -413,7 +413,8 @@ class Login extends Base{ * $type(验证类型,是注册用,还是其他用途) 字符串 默认register(注册)(register、login、reset_password) * $road(是手机还是邮箱还是其他) 字符串 默认tel或email */ - public function send_phone_email_code($data = ['data'=>'18736019909']){ + //18736019909 18530934717 + public function send_phone_email_code($data = ['data'=>'18530934717']){ if(count(input('post.')) > 0){ $data = input('post.'); @@ -428,8 +429,12 @@ class Login extends Base{ $num = mt_rand(100000,999999); if (preg_match('/^\d{11}$/', $data['data'])) { + // 本公司短信 $result = $this->send_tel_code($data['data'],$num); - // return $this->msg($result); + // 阿里云短信 + // $sms_all = new Smsaliyun; + // $result = $sms_all->send_sms($data['data'],$num); + // dump($result); $road = 'tel'; }else{ $result = $this->send_email_code([$data['data']],['title'=>'体测APP验证码','from_user_name'=>'体测APP','content'=>$num]); @@ -467,13 +472,10 @@ class Login extends Base{ // 设置POST数据 $postData = array( 'phone' => $tel, - // 'content' => '您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码三分钟内有效,若非本人操作,请忽略!' - // 'content' => '【Reedaw】您好,欢迎使用Reedaw,您的验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' 'content' => '【巨天】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' + // 'content' => '【郑州品传科技】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' // 'content' => '【小白秤】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' - // 'content' => '【品传科技】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' - // 'content' => '【巨天】您好,欢迎使用巨天,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略!' - + // 'content' => '【郑州巨天信息】您好,欢迎使用Reedaw,您的手机验证码是:'.$code.',验证码一分钟内有效,若非本人操作,请忽略本短信' ); $postData = json_encode($postData); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); @@ -481,6 +483,7 @@ class Login extends Base{ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 发送请求并获取响应 $response = curl_exec($ch); + // dump($response); // 检查是否有错误发生 if (curl_errno($ch)) { $error_message = curl_error($ch); @@ -489,7 +492,7 @@ class Login extends Base{ // 关闭cURL会话 curl_close($ch); // 处理响应 - + // dump(json_decode($response,true)); if ($response) { return json_decode($response,true); } else { diff --git a/application/testapp/controller/Msginformation.php b/application/testapp/controller/Msginformation.php index 9139895..9ecded9 100644 --- a/application/testapp/controller/Msginformation.php +++ b/application/testapp/controller/Msginformation.php @@ -1,6 +1,6 @@ 'admin_editor_text_content', - '2'=>'admin_editor_text_like_up_log', - '3'=>'admin_notice_banner', - '4'=>'admin_business_cooperation' + '1'=>'admin_editor_text_content_copy1', + '2'=>'admin_editor_text_like_up_log_copy1', + '3'=>'admin_notice_banner_copy1', + '4'=>'admin_business_cooperation_copy1' ]; protected $page_num = 10; // 加 bcadd(,,20) diff --git a/application/testapp/controller/Myinformation.php b/application/testapp/controller/Myinformation.php index 69c9574..cf923dd 100644 --- a/application/testapp/controller/Myinformation.php +++ b/application/testapp/controller/Myinformation.php @@ -1,15 +1,15 @@ 'app_account_number', + '1'=>'app_account_number_copy1', ]; // 加 bcadd(,,20) // 减 bcsub(,,20) diff --git a/application/testapp/controller/Pagingcontrast.php b/application/testapp/controller/Pagingcontrast.php index 29a543a..cb1386e 100644 --- a/application/testapp/controller/Pagingcontrast.php +++ b/application/testapp/controller/Pagingcontrast.php @@ -1,18 +1,18 @@ 'app_card_body_data','6'=>'app_card_skip_data','8'=>'app_card_vitalcapacity_data']; + protected $db_name = ['2'=>'app_card_body_data_copy1','6'=>'app_card_skip_data_copy1','8'=>'app_card_vitalcapacity_data_copy1']; protected $pagingcontrast_use_db_name = [ - '1'=>'app_card_body_data', - '2'=>'app_card_skip_data', - '3'=>'app_card_vitalcapacity_data', - '4'=>'app_user_data', + '1'=>'app_card_body_data_copy1', + '2'=>'app_card_skip_data_copy1', + '3'=>'app_card_vitalcapacity_data_copy1', + '4'=>'app_user_data_copy1', ]; protected $request_result = [ '2'=>['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI',''],'head'=>['头围',''],'fat_w'=>['脂肪量','kg'],'fat_r'=>['脂肪率','%'],'muscleval'=>['肌肉量','kg'],'muscle'=>['肌肉率','%'],'proteinval'=>['蛋白量','kg'],'protein'=>['蛋白率','%'],'water'=>['水分',''],'bone'=>['骨重','kg'],'visceral'=>['内脏指数',''],'sfr'=>['皮下脂肪','%'],'kcal'=>['基础代谢','kcal'],'un_fat_w_weight'=>['去脂体重','kg'],'body_age'=>['体龄',''],'body_level'=>['肥胖等级',''],'body_type'=>['体型','']], @@ -69,7 +69,7 @@ class Pagingcontrast extends Base{ } // 获取记录信息(分页)(包含身体、跳绳、肺活量) - public function get_all_record_data_page($data = ['aud_id'=>'11','page'=>1,'token'=>'0dafb98a10995c98b5a33b7d59d986ca','type'=>'2']){ + public function get_all_record_data_page($data = ['aud_id'=>'144','page'=>1,'token'=>'caadd1be045a65f30b92aa805f1de54a','type'=>'8']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -87,7 +87,7 @@ class Pagingcontrast extends Base{ if(!$this->verify_data_is_ok($data['type'],'intnum')){ return $this->msg(10005); } - unset($data['token']); + // unset($data['token']); if(array_key_exists($data['type'],$this->db_name)){ $return_data = $this->jump_transfer_interface_record($data,'page'); }else{ @@ -112,7 +112,7 @@ class Pagingcontrast extends Base{ } // 获取详细历史数据信息(包含身体、跳绳、肺活量) - public function get_all_record_detailed_information($data = ['id'=>'36','type'=>'8','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function get_all_record_detailed_information($data = ['id'=>'3802','type'=>'2','aan_id'=>'1841','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -458,6 +458,8 @@ class Pagingcontrast extends Base{ // $for_data_arr = ['height'=>['身高','cm'],'weight'=>['体重','kg'],'age'=>['年龄','岁'],'bmi'=>['BMI','']]; // } $result_data = []; + // dump($result); + // dump($for_data_arr); foreach ($for_data_arr as $key => $value) { $temporary_arr['key_name'] = $key; $temporary_arr['name'] = $value[0]; @@ -471,10 +473,16 @@ class Pagingcontrast extends Base{ $temporary_arr['value'] = explode(',',$result[$key])[0]; } }else{ + if($key == 'un_fat_w_weight'){ $temporary_arr['value'] = bcsub(explode(',',$result['weight'])[0],explode(',',$result['fat_w'])[0],2); }else{ - $temporary_arr['value'] = explode(',',$result[$key])[0]; + // dump($key); + // dump($result[$key]); + if(array_key_exists($key,$result)){ + $temporary_arr['value'] = explode(',',$result[$key])[0]; + } + } } diff --git a/application/testapp/controller/Skip.php b/application/testapp/controller/Skip.php index 0dbc8fe..47e3243 100644 --- a/application/testapp/controller/Skip.php +++ b/application/testapp/controller/Skip.php @@ -1,6 +1,6 @@ ['跳绳个数','个','#009DFF'],'jump_time'=>['跳绳时长','分钟','#009DFF'],'jump_kcal'=>['消耗卡路里','kcal','#009DFF']]; protected $skip_use_db_name = [ - '1'=>'app_card_skip_data', - '2'=>'app_user_data', - '3'=>'app_card_body_data', + '1'=>'app_card_skip_data_copy1', + '2'=>'app_user_data_copy1', + '3'=>'app_card_body_data_copy1', + '4'=>'app_account_number_copy1', ]; protected $result_end_data_mould = [ 'name'=>'', @@ -29,7 +30,7 @@ class Skip extends Base{ ################################################################接口################################################################ ################################################################接口################################################################ // 手动记录 - public function skip_manual_recording($data = ['aud_id'=>'61','r_time'=>'2024-07-24','num'=>'369','time_m'=>'02','time_s'=>'42','type'=>'free','token'=>'caadd1be045a65f30b92aa805f1de54a']){ + public function skip_manual_recording($data = ['aud_id'=>'144','r_time'=>'2024-07-24','num'=>'369','time_m'=>'02','time_s'=>'42','type'=>'free','token'=>'caadd1be045a65f30b92aa805f1de54a']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -137,7 +138,7 @@ class Skip extends Base{ } // 今日数据 - public function skip_today_data($data = ['aud_id'=>'26','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function skip_today_data($data = ['aud_id'=>'144','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -153,7 +154,7 @@ class Skip extends Base{ $return_data = $this->skip_today_data_action($data); // 成功 - $this->record_api_log($data, null, $return_data); + // $this->record_api_log($data, null, $return_data); return $return_data; } catch (\Exception $e) { // 捕获异常 @@ -171,7 +172,7 @@ class Skip extends Base{ } // 曲线 - public function skip_curve_chart($data = ['aud_id'=>'9','time'=>'2024-10','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){ + public function skip_curve_chart($data = ['aud_id'=>'144','time'=>'2025-04','token'=>'caadd1be045a65f30b92aa805f1de54a']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ @@ -183,7 +184,6 @@ class Skip extends Base{ if(!$this->verify_data_is_ok($data['aud_id'],'intnum')){ return $this->msg(10005); } - unset($data['token']); $return_data = $this->skip_curve_chart_action($data); // 成功 @@ -422,6 +422,16 @@ class Skip extends Base{ // $return_data[1]['line']['series'][0]['data'][$key] = $jump_time_long['h'].':'.$jump_time_long['m'].':'.$jump_time_long['s']; } + // dump($return_data); + $language_str = Db::table($this->skip_use_db_name['4'])->where(['token'=>$data['token']])->field('language')->find(); + $language_data = new Language(); + if(!$language_str['language']){ + $language_str['language'] = 'zh-Hans'; + } + // dump($language_str['language']); + $return_data = $language_data->handling_languages_from_multiple_countries($language_str['language'], $return_data); + // dump($return_data); + // die; return $this->msg($return_data); } diff --git a/application/testapp/controller/Smsaliyun.php b/application/testapp/controller/Smsaliyun.php new file mode 100644 index 0000000..40c9e3b --- /dev/null +++ b/application/testapp/controller/Smsaliyun.php @@ -0,0 +1,84 @@ + 'LTAI5tQCdWe9Epir3ydXWbzp', + 'accessKeySecret' => 'JKLzF0b5AXw2ajhwtem2fhPSUZVOZ5', + 'signName' => '郑州巨天信息', + 'templateCode' => 'SMS_484085215', + 'regionId' => 'cn-hangzhou' + ]; + + /** + * 发送短信接口 + * @param string $phone 手机号 + * @param string $code 验证码 + */ + public function send_sms($phone='18530934717', $code='0932') + { + try { + // 初始化阿里云客户端 + AlibabaCloud::accessKeyClient( + $this->smsConfig['accessKeyId'], + $this->smsConfig['accessKeySecret'] + ) + ->regionId($this->smsConfig['regionId']) + ->asDefaultClient(); + + // 发送短信请求 + $result = AlibabaCloud::rpc() + ->product('Dysmsapi') + ->version('2017-05-25') + ->action('SendSms') + ->method('POST') + ->host('dysmsapi.aliyuncs.com') + ->options([ + 'query' => [ + 'RegionId' => $this->smsConfig['regionId'], + 'PhoneNumbers' => $phone, + 'SignName' => $this->smsConfig['signName'], + 'TemplateCode' => $this->smsConfig['templateCode'], + 'TemplateParam' => json_encode(['code' => $code]), + ], + ]) + ->request(); + + $result = $result->toArray(); + + if ($result['Code'] == 'OK') { + return [ + 'code' => 0, + 'message' => '短信发送成功', + 'data' => $result + ]; + } else { + return [ + 'code' => 99999, + 'message' => $result['Message'], + 'error' => $result + ]; + } + } catch (ClientException $e) { + return [ + 'code' => 99998, + 'message' => '客户端异常: ' . $e->getErrorMessage(), + 'error' => $e->getMessage() + ]; + } catch (ServerException $e) { + return [ + 'code' => 99997, + 'message' => '服务端异常: ' . $e->getErrorMessage(), + 'error' => $e->getMessage() + ]; + } + } +} \ No newline at end of file diff --git a/application/testapp/controller/Sportstesting.php b/application/testapp/controller/Sportstesting.php index 0b2e856..c707783 100644 --- a/application/testapp/controller/Sportstesting.php +++ b/application/testapp/controller/Sportstesting.php @@ -1,6 +1,6 @@ 'admin_estimate', - '2'=>'app_sportstesting_data', - '3'=>'app_user_data', + '1'=>'admin_estimate_copy1', + '2'=>'app_sportstesting_data_copy1', + '3'=>'app_user_data_copy1', ]; protected $page_num = 10; protected $default_address = '上海'; diff --git a/application/testapp/controller/Vitalcapacity.php b/application/testapp/controller/Vitalcapacity.php index 03902ac..fe64f70 100644 --- a/application/testapp/controller/Vitalcapacity.php +++ b/application/testapp/controller/Vitalcapacity.php @@ -1,6 +1,6 @@ '0','max_val'=>'9','text'=>'无效','color'=>'#FF5656'], ]; protected $vitalcapacity_use_db_name = [ - '1'=>'app_user_data', - '2'=>'app_card_vitalcapacity_data', - '3'=>'pc_vitalcapacity_standard', + '1'=>'app_user_data_copy1', + '2'=>'app_card_vitalcapacity_data_copy1', + '3'=>'pc_vitalcapacity_standard_copy1', ]; protected $result_end_data_mould = [ 'name'=>'', @@ -107,7 +107,7 @@ class Vitalcapacity extends Base{ } // 数据报告 - public function vitalcapacity_data_report($data = ['aud_id'=>'83','token'=>'caadd1be045a65f30b92aa805f1de54a']){ + public function vitalcapacity_data_report($data = ['aud_id'=>'144','token'=>'caadd1be045a65f30b92aa805f1de54a']){ try { // 你的业务逻辑 if(count(input('post.')) > 0){ diff --git a/application/testapp/controller/Wechat.php b/application/testapp/controller/Wechat.php index 53d19e4..9b35c95 100644 --- a/application/testapp/controller/Wechat.php +++ b/application/testapp/controller/Wechat.php @@ -1,6 +1,6 @@ 'admin_editor_text_content', - '2'=>'admin_editor_text_like_up_log', + '1'=>'admin_editor_text_content_copy1', + '2'=>'admin_editor_text_like_up_log_copy1', ]; protected $page_num = 10; // 加 bcadd(,,20) diff --git a/composer.json b/composer.json index 1a7fa4c..78988bd 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,8 @@ "phpmailer/phpmailer": "^6.9", "phpoffice/phpspreadsheet": "^1.25", "overtrue/wechat": "~4.0", - "zoujingli/ip2region": "^2.0" + "zoujingli/ip2region": "^2.0", + "alibabacloud/client": "^1.5" }, "autoload": { "psr-4": { diff --git a/vendor/adbario/php-dot-notation/LICENSE.md b/vendor/adbario/php-dot-notation/LICENSE.md new file mode 100644 index 0000000..fe01323 --- /dev/null +++ b/vendor/adbario/php-dot-notation/LICENSE.md @@ -0,0 +1,21 @@ +# The MIT License (MIT) + +Copyright (c) 2016-2019 Riku Särkinen + +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/adbario/php-dot-notation/composer.json b/vendor/adbario/php-dot-notation/composer.json new file mode 100644 index 0000000..cea7126 --- /dev/null +++ b/vendor/adbario/php-dot-notation/composer.json @@ -0,0 +1,29 @@ +{ + "name": "adbario/php-dot-notation", + "description": "PHP dot notation access to arrays", + "keywords": ["dotnotation", "arrayaccess"], + "homepage": "https://github.com/adbario/php-dot-notation", + "license": "MIT", + "authors": [ + { + "name": "Riku Särkinen", + "email": "riku@adbar.io" + } + ], + "require": { + "php": "^5.5 || ^7.0 || ^8.0", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", + "squizlabs/php_codesniffer": "^3.6" + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Adbar\\": "src" + } + } +} diff --git a/vendor/adbario/php-dot-notation/src/Dot.php b/vendor/adbario/php-dot-notation/src/Dot.php new file mode 100644 index 0000000..3cd1c50 --- /dev/null +++ b/vendor/adbario/php-dot-notation/src/Dot.php @@ -0,0 +1,623 @@ + + * @link https://github.com/adbario/php-dot-notation + * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) + */ +namespace Adbar; + +use Countable; +use ArrayAccess; +use ArrayIterator; +use JsonSerializable; +use IteratorAggregate; + +/** + * Dot + * + * This class provides a dot notation access and helper functions for + * working with arrays of data. Inspired by Laravel Collection. + */ +class Dot implements ArrayAccess, Countable, IteratorAggregate, JsonSerializable +{ + /** + * The stored items + * + * @var array + */ + protected $items = []; + + + /** + * The delimiter (alternative to a '.') to be used. + * + * @var string + */ + protected $delimiter = '.'; + + + /** + * Create a new Dot instance + * + * @param mixed $items + * @param string $delimiter + */ + public function __construct($items = [], $delimiter = '.') + { + $this->items = $this->getArrayItems($items); + $this->delimiter = strlen($delimiter) ? $delimiter : '.'; + } + + /** + * Set a given key / value pair or pairs + * if the key doesn't exist already + * + * @param array|int|string $keys + * @param mixed $value + */ + public function add($keys, $value = null) + { + if (is_array($keys)) { + foreach ($keys as $key => $value) { + $this->add($key, $value); + } + } elseif (is_null($this->get($keys))) { + $this->set($keys, $value); + } + } + + /** + * Return all the stored items + * + * @return array + */ + public function all() + { + return $this->items; + } + + /** + * Delete the contents of a given key or keys + * + * @param array|int|string|null $keys + */ + public function clear($keys = null) + { + if (is_null($keys)) { + $this->items = []; + + return; + } + + $keys = (array) $keys; + + foreach ($keys as $key) { + $this->set($key, []); + } + } + + /** + * Delete the given key or keys + * + * @param array|int|string $keys + */ + public function delete($keys) + { + $keys = (array) $keys; + + foreach ($keys as $key) { + if ($this->exists($this->items, $key)) { + unset($this->items[$key]); + + continue; + } + + $items = &$this->items; + $segments = explode($this->delimiter, $key); + $lastSegment = array_pop($segments); + + foreach ($segments as $segment) { + if (!isset($items[$segment]) || !is_array($items[$segment])) { + continue 2; + } + + $items = &$items[$segment]; + } + + unset($items[$lastSegment]); + } + } + + /** + * Checks if the given key exists in the provided array. + * + * @param array $array Array to validate + * @param int|string $key The key to look for + * + * @return bool + */ + protected function exists($array, $key) + { + return array_key_exists($key, $array); + } + + /** + * Flatten an array with the given character as a key delimiter + * + * @param string $delimiter + * @param array|null $items + * @param string $prepend + * @return array + */ + public function flatten($delimiter = '.', $items = null, $prepend = '') + { + $flatten = []; + + if (is_null($items)) { + $items = $this->items; + } + + if (!func_num_args()) { + $delimiter = $this->delimiter; + } + + foreach ($items as $key => $value) { + if (is_array($value) && !empty($value)) { + $flatten = array_merge( + $flatten, + $this->flatten($delimiter, $value, $prepend.$key.$delimiter) + ); + } else { + $flatten[$prepend.$key] = $value; + } + } + + return $flatten; + } + + /** + * Return the value of a given key + * + * @param int|string|null $key + * @param mixed $default + * @return mixed + */ + public function get($key = null, $default = null) + { + if (is_null($key)) { + return $this->items; + } + + if ($this->exists($this->items, $key)) { + return $this->items[$key]; + } + + if (strpos($key, $this->delimiter) === false) { + return $default; + } + + $items = $this->items; + + foreach (explode($this->delimiter, $key) as $segment) { + if (!is_array($items) || !$this->exists($items, $segment)) { + return $default; + } + + $items = &$items[$segment]; + } + + return $items; + } + + /** + * Return the given items as an array + * + * @param mixed $items + * @return array + */ + protected function getArrayItems($items) + { + if (is_array($items)) { + return $items; + } elseif ($items instanceof self) { + return $items->all(); + } + + return (array) $items; + } + + /** + * Check if a given key or keys exists + * + * @param array|int|string $keys + * @return bool + */ + public function has($keys) + { + $keys = (array) $keys; + + if (!$this->items || $keys === []) { + return false; + } + + foreach ($keys as $key) { + $items = $this->items; + + if ($this->exists($items, $key)) { + continue; + } + + foreach (explode($this->delimiter, $key) as $segment) { + if (!is_array($items) || !$this->exists($items, $segment)) { + return false; + } + + $items = $items[$segment]; + } + } + + return true; + } + + /** + * Check if a given key or keys are empty + * + * @param array|int|string|null $keys + * @return bool + */ + public function isEmpty($keys = null) + { + if (is_null($keys)) { + return empty($this->items); + } + + $keys = (array) $keys; + + foreach ($keys as $key) { + if (!empty($this->get($key))) { + return false; + } + } + + return true; + } + + /** + * Merge a given array or a Dot object with the given key + * or with the whole Dot object + * + * @param array|string|self $key + * @param array|self $value + */ + public function merge($key, $value = []) + { + if (is_array($key)) { + $this->items = array_merge($this->items, $key); + } elseif (is_string($key)) { + $items = (array) $this->get($key); + $value = array_merge($items, $this->getArrayItems($value)); + + $this->set($key, $value); + } elseif ($key instanceof self) { + $this->items = array_merge($this->items, $key->all()); + } + } + + /** + * Recursively merge a given array or a Dot object with the given key + * or with the whole Dot object. + * + * Duplicate keys are converted to arrays. + * + * @param array|string|self $key + * @param array|self $value + */ + public function mergeRecursive($key, $value = []) + { + if (is_array($key)) { + $this->items = array_merge_recursive($this->items, $key); + } elseif (is_string($key)) { + $items = (array) $this->get($key); + $value = array_merge_recursive($items, $this->getArrayItems($value)); + + $this->set($key, $value); + } elseif ($key instanceof self) { + $this->items = array_merge_recursive($this->items, $key->all()); + } + } + + /** + * Recursively merge a given array or a Dot object with the given key + * or with the whole Dot object. + * + * Instead of converting duplicate keys to arrays, the value from + * given array will replace the value in Dot object. + * + * @param array|string|self $key + * @param array|self $value + */ + public function mergeRecursiveDistinct($key, $value = []) + { + if (is_array($key)) { + $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key); + } elseif (is_string($key)) { + $items = (array) $this->get($key); + $value = $this->arrayMergeRecursiveDistinct($items, $this->getArrayItems($value)); + + $this->set($key, $value); + } elseif ($key instanceof self) { + $this->items = $this->arrayMergeRecursiveDistinct($this->items, $key->all()); + } + } + + /** + * Merges two arrays recursively. In contrast to array_merge_recursive, + * duplicate keys are not converted to arrays but rather overwrite the + * value in the first array with the duplicate value in the second array. + * + * @param array $array1 Initial array to merge + * @param array $array2 Array to recursively merge + * @return array + */ + protected function arrayMergeRecursiveDistinct(array $array1, array $array2) + { + $merged = &$array1; + + foreach ($array2 as $key => $value) { + if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { + $merged[$key] = $this->arrayMergeRecursiveDistinct($merged[$key], $value); + } else { + $merged[$key] = $value; + } + } + + return $merged; + } + + /** + * Return the value of a given key and + * delete the key + * + * @param int|string|null $key + * @param mixed $default + * @return mixed + */ + public function pull($key = null, $default = null) + { + if (is_null($key)) { + $value = $this->all(); + $this->clear(); + + return $value; + } + + $value = $this->get($key, $default); + $this->delete($key); + + return $value; + } + + /** + * Push a given value to the end of the array + * in a given key + * + * @param mixed $key + * @param mixed $value + */ + public function push($key, $value = null) + { + if (is_null($value)) { + $this->items[] = $key; + + return; + } + + $items = $this->get($key); + + if (is_array($items) || is_null($items)) { + $items[] = $value; + $this->set($key, $items); + } + } + + /** + * Replace all values or values within the given key + * with an array or Dot object + * + * @param array|string|self $key + * @param array|self $value + */ + public function replace($key, $value = []) + { + if (is_array($key)) { + $this->items = array_replace($this->items, $key); + } elseif (is_string($key)) { + $items = (array) $this->get($key); + $value = array_replace($items, $this->getArrayItems($value)); + + $this->set($key, $value); + } elseif ($key instanceof self) { + $this->items = array_replace($this->items, $key->all()); + } + } + + /** + * Set a given key / value pair or pairs + * + * @param array|int|string $keys + * @param mixed $value + */ + public function set($keys, $value = null) + { + if (is_array($keys)) { + foreach ($keys as $key => $value) { + $this->set($key, $value); + } + + return; + } + + $items = &$this->items; + + foreach (explode($this->delimiter, $keys) as $key) { + if (!isset($items[$key]) || !is_array($items[$key])) { + $items[$key] = []; + } + + $items = &$items[$key]; + } + + $items = $value; + } + + /** + * Replace all items with a given array + * + * @param mixed $items + */ + public function setArray($items) + { + $this->items = $this->getArrayItems($items); + } + + /** + * Replace all items with a given array as a reference + * + * @param array $items + */ + public function setReference(array &$items) + { + $this->items = &$items; + } + + /** + * Return the value of a given key or all the values as JSON + * + * @param mixed $key + * @param int $options + * @return string + */ + public function toJson($key = null, $options = 0) + { + if (is_string($key)) { + return json_encode($this->get($key), $options); + } + + $options = $key === null ? 0 : $key; + + return json_encode($this->items, $options); + } + + /* + * -------------------------------------------------------------- + * ArrayAccess interface + * -------------------------------------------------------------- + */ + + /** + * Check if a given key exists + * + * @param int|string $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return $this->has($key); + } + + /** + * Return the value of a given key + * + * @param int|string $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->get($key); + } + + /** + * Set a given value to the given key + * + * @param int|string|null $key + * @param mixed $value + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + if (is_null($key)) { + $this->items[] = $value; + + return; + } + + $this->set($key, $value); + } + + /** + * Delete the given key + * + * @param int|string $key + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + $this->delete($key); + } + + /* + * -------------------------------------------------------------- + * Countable interface + * -------------------------------------------------------------- + */ + + /** + * Return the number of items in a given key + * + * @param int|string|null $key + * @return int + */ + #[\ReturnTypeWillChange] + public function count($key = null) + { + return count($this->get($key)); + } + + /* + * -------------------------------------------------------------- + * IteratorAggregate interface + * -------------------------------------------------------------- + */ + + /** + * Get an iterator for the stored items + * + * @return \ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return new ArrayIterator($this->items); + } + + /* + * -------------------------------------------------------------- + * JsonSerializable interface + * -------------------------------------------------------------- + */ + + /** + * Return items for JSON serialization + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->items; + } +} diff --git a/vendor/adbario/php-dot-notation/src/helpers.php b/vendor/adbario/php-dot-notation/src/helpers.php new file mode 100644 index 0000000..bebb952 --- /dev/null +++ b/vendor/adbario/php-dot-notation/src/helpers.php @@ -0,0 +1,24 @@ + + * @link https://github.com/adbario/php-dot-notation + * @license https://github.com/adbario/php-dot-notation/blob/2.x/LICENSE.md (MIT License) + */ + +use Adbar\Dot; + +if (! function_exists('dot')) { + /** + * Create a new Dot object with the given items and optional delimiter + * + * @param mixed $items + * @param string $delimiter + * @return \Adbar\Dot + */ + function dot($items, $delimiter = '.') + { + return new Dot($items, $delimiter); + } +} diff --git a/vendor/alibabacloud/client/CHANGELOG.md b/vendor/alibabacloud/client/CHANGELOG.md new file mode 100644 index 0000000..ad5fcf8 --- /dev/null +++ b/vendor/alibabacloud/client/CHANGELOG.md @@ -0,0 +1,311 @@ +# CHANGELOG + +## 1.5.32 - 2022-12-08 + +- Support PHP versions: From 5.5 up to 8.1 + +## 1.5.31 - 2021-05-13 + +- Deprecate `\GuzzleHttp\Psr7\parse_query` method + +## 1.5.30 - 2021-03-22 +- Fixed incompatibility in PHP 5.6 version. + +## 1.5.29 - 2020-08-03 +- Fixed RPC Signature. + +## 1.5.28 - 2020-08-03 +- Updated `endpoints`. + +## 1.5.27 - 2020-07-17 +- Fixed composer error config. + +## 1.5.26 - 2020-07-17 +- Validate RegionID/EndpointSuffix/Network. + +## 1.5.25 - 2020-07-04 +- Fixed ROA signature. +- Deprecated `LogFormatter`. + +## 1.5.24 - 2020-06-04 +- Fixed Resolve Host. + +## 1.5.23 - 2020-05-22 +- Optimized global product support. + +## 1.5.22 - 2020-05-12 +- Updated Endpoints. + +## 1.5.21 - 2020-02-26 +- Improved Nonce. +- Updated Endpoints. + +## 1.5.20 - 2019-12-30 +- Improved Docs. +- Updated Endpoints. + +## 1.5.19 - 2019-12-17 +- Updated Endpoints. + +## 1.5.18 - 2019-10-11 +- Updated Request link. +- Updated Endpoints data. + +## 1.5.17 - 2019-09-15 +- Improved Host Finder. +- Updated Endpoints Data. + +## 1.5.16 - 2019-08-21 +- Updated Endpoints Data. + +## 1.5.15 - 2019-08-14 +- Improved Client. + + +## 1.5.14 - 2019-07-25 +- Improved Credential Filter. + + +## 1.5.13 - 2019-07-18 +- Improved API Resolver. + + +## 1.5.12 - 2019-06-20 +- Fixed Signature for ROA. + + +## 1.5.11 - 2019-06-14 +- Added endpoint rules. + + +## 1.5.10 - 2019-06-13 +- Improved `Resovler`. +- Updated `endpoints`. + + +## 1.5.9 - 2019-06-04 +- Improved `UUID`. + + +## 1.5.8 - 2019-05-30 +- Improved `Arrays`. + + +## 1.5.7 - 2019-05-29 +- Improved `uuid`. + + +## 1.5.6 - 2019-05-29 +- Fixed `uuid` version lock. + + +## 1.5.5 - 2019-05-23 +- Improved `Signature`. + + +## 1.5.4 - 2019-05-22 +- Updated `Endpoints`. +- Fixed `Content-Type` in header. + + +## 1.5.3 - 2019-05-13 +- Improved `Endpoint` tips. +- Improved `Endpoints` for `STS`. + + +## 1.5.2 - 2019-05-10 +- Improved `Result` object. + + +## 1.5.1 - 2019-05-09 +- Supported `Resolver` for Third-party dependencies. + + +## 1.5.0 - 2019-05-07 +- Improved `Resolver` for products. + + +## 1.4.0 - 2019-05-06 +- Support `Retry` and `Asynchronous` for Request. + + +## 1.3.1 - 2019-04-30 +- Allow timeouts to be set in microseconds. + + +## 1.3.0 - 2019-04-18 +- Improved parameters methods. +- Optimized the logic for body encode. + + +## 1.2.1 - 2019-04-11 +- Improve exception code and message for `Region ID`. + + +## 1.2.0 - 2019-04-11 +- Improve exception message for `Region ID`. + + +## 1.1.1 - 2019-04-02 +- Added endpoints for `batchcomputenew`, `privatelink`. +- Improve Region ID tips. + + +## 1.1.0 - 2019-04-01 +- Updated `composer.json`. + + +## 1.0.27 - 2019-03-31 +- Support `Policy` for `ramRoleArnClient`. + + +## 1.0.26 - 2019-03-27 +- Support `pid`, `cost`, `start_time` for Log. + + +## 1.0.25 - 2019-03-27 +- Updated default log format. +- Add endpoints for `dbs`. + + +## 1.0.24 - 2019-03-26 +- Support Log. + + +## 1.0.23 - 2019-03-23 +- Remove SVG. + + +## 1.0.22 - 2019-03-20 +- Add endpoint `cn-hangzhou` for `idaas` . + + +## 1.0.21 - 2019-03-19 +- Installing by Using the ZIP file. +- Update Docs. + + +## 1.0.20 - 2019-03-13 +- Improve Tests. +- Update Docs. + + +## 1.0.19 - 2019-03-12 +- Add SSL Verify Option `verify()`. + + +## 1.0.18 - 2019-03-11 +- Add endpoints for `acr`. +- Add endpoints for `faas`. +- Add endpoints for `ehs`. +- SSL certificates are not validated by default. + + +## 1.0.17 - 2019-03-08 +- Support Mock for Test. + + +## 1.0.16 - 2019-03-07 +- Support Credential Provider Chain. +- Support `CCC`. +- Add `ap-south-1` for `cas`. +- Add `ap-southeast-1` for `waf`. +- Update Docs. + + +## 1.0.15 - 2019-02-27 +- Add endpoints for `Chatbot`. +- Change endpoints for `drdspost` and `drdspre`. + + +## 1.0.14 - 2019-02-21 +- Enable debug mode by set environment variable `DEBUG=sdk`. + + +## 1.0.13 - 2019-02-18 +- Support Release Script `composer release`. +- Add endpoints for apigateway in `drdspre` in `cn-qingdao`. +- Add endpoints for apigateway in `drdspre` in `cn-beijing`. +- Add endpoints for apigateway in `drdspre` in `cn-hangzhou`. +- Add endpoints for apigateway in `drdspre` in `cn-shanghai`. +- Add endpoints for apigateway in `drdspre` in `cn-shenzhen`. +- Add endpoints for apigateway in `drdspre` in `cn-hongkong`. +- Add endpoints for apigateway in `drdspost` in `ap-southeast-1`. +- Add endpoints for apigateway in `drdspost` in `cn-shanghai`. +- Add endpoints for apigateway in `drdspost` in `cn-hongkong`. +- Add endpoints for apigateway in `vod` in `ap-southeast-1`. +- Add endpoints for apigateway in `vod` in `eu-central-1`. + + +## 1.0.12 - 2019-02-16 +- Support `open_basedir`. + + +## 1.0.11 - 2019-02-13 +- Improve User Agent. + + +## 1.0.10 - 2019-02-12 +- `userAgentAppend` is renamed to `appendUserAgent`. + + +## 1.0.9 - 2019-02-12 +- `userAgent` is renamed to `userAgentAppend`. + + +## 1.0.8 - 2019-02-11 +- `userAgent` - Support DIY User Agent. +- Add endpoints for apigateway in Zhangjiakou. +- Add endpoints for apigateway in Hu He Hao Te. +- Add endpoints for vod in Hu He Hao Te. +- Add endpoints for hsm in Zhangjiakou. +- Add endpoints for luban in Germany. +- Add endpoints for linkwan in Hangzhou. +- Add endpoints for drdspost in Singapore. + + +## 1.0.7 - 2019-01-28 +- Add endpoints for gpdb in Tokyo. +- Add endpoints for elasticsearch in Beijing. + + +## 1.0.6 - 2019-01-23 +- Add endpoints for dysmsapi in Singapore. +- Add endpoints for dybaseapi. +- Add endpoints for dyiotapi. +- Add endpoints for dycdpapi. +- Add endpoints for dyplsapi. +- Add endpoints for dypnsapi. +- Add endpoints for dyvmsapi. +- Add endpoints for snsuapi. + + +## 1.0.5 - 2019-01-21 +- Add endpoints for ApiGateway in Silicon Valley, Virginia. +- Add endpoints for Image Search in Shanghai. + + +## 1.0.4 - 2019-01-17 +- Support fixer all. +- Add Endpoints. + + +## 1.0.3 - 2019-01-15 +- Update Endpoints. +- Update README.md. +- Update Return Result Message. + + +## 1.0.2 - 2019-01-15 +- Optimize the documentation. +- Adjust the CI configuration. + + +## 1.0.1 - 2019-01-09 +- Distinguish credential error. +- Add endpoints for NLS. +- Add not found product tip. + + +## 1.0.0 - 2019-01-07 +- Initial release of the Alibaba Cloud Client for PHP Version 1.0.0 on Packagist See for more information. diff --git a/vendor/alibabacloud/client/CONTRIBUTING.md b/vendor/alibabacloud/client/CONTRIBUTING.md new file mode 100644 index 0000000..a1c52a0 --- /dev/null +++ b/vendor/alibabacloud/client/CONTRIBUTING.md @@ -0,0 +1,30 @@ +# Contributing to the Alibaba Cloud Client for PHP + +We work hard to provide a high-quality and useful SDK for Alibaba Cloud, and +we greatly value feedback and contributions from our community. Please submit +your [issues][issues] or [pull requests][pull-requests] through GitHub. + +## Tips + +- The SDK is released under the [Apache license][license]. Any code you submit + will be released under that license. For substantial contributions, we may + ask you to sign a [Alibaba Documentation Corporate Contributor License + Agreement (CLA)][cla]. +- We follow all of the relevant PSR recommendations from the [PHP Framework + Interop Group][php-fig]. Please submit code that follows these standards. + The [PHP CS Fixer][cs-fixer] tool can be helpful for formatting your code. + Your can use `composer fixer` to fix code. +- We maintain a high percentage of code coverage in our unit tests. If you make + changes to the code, please add, update, and/or remove tests as appropriate. +- If your code does not conform to the PSR standards, does not include adequate + tests, or does not contain a changelog document, we may ask you to update + your pull requests before we accept them. We also reserve the right to deny + any pull requests that do not align with our standards or goals. + +[issues]: https://github.com/aliyun/openapi-sdk-php-client/issues +[pull-requests]: https://github.com/aliyun/openapi-sdk-php-client/pulls +[license]: http://www.apache.org/licenses/LICENSE-2.0 +[cla]: https://alibaba-cla-2018.oss-cn-beijing.aliyuncs.com/Alibaba_Documentation_Open_Source_Corporate_CLA.pdf +[php-fig]: http://php-fig.org +[cs-fixer]: http://cs.sensiolabs.org/ +[docs-readme]: https://github.com/aliyun/openapi-sdk-php-client/blob/master/README.md diff --git a/vendor/alibabacloud/client/LICENSE.md b/vendor/alibabacloud/client/LICENSE.md new file mode 100644 index 0000000..ec13fcc --- /dev/null +++ b/vendor/alibabacloud/client/LICENSE.md @@ -0,0 +1,13 @@ +Copyright (c) 2009-present, Alibaba Cloud All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/vendor/alibabacloud/client/NOTICE.md b/vendor/alibabacloud/client/NOTICE.md new file mode 100644 index 0000000..db04164 --- /dev/null +++ b/vendor/alibabacloud/client/NOTICE.md @@ -0,0 +1,88 @@ +# Alibaba Cloud Client for PHP + + + +Copyright (c) 2009-present, Alibaba Cloud All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"). +You may not use this file except in compliance with the License. +A copy of the License is located at + + + +or in the "license" file accompanying this file. This file is distributed +on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +express or implied. See the License for the specific language governing +permissions and limitations under the License. + +# Guzzle + + + +Copyright (c) 2011-2018 Michael Dowling, https://github.com/mtdowling + +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. + +# jmespath.php + + + +Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling + +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. + +# Dot + + + +Copyright (c) 2016-2019 Riku Särkinen + +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/alibabacloud/client/README-zh-CN.md b/vendor/alibabacloud/client/README-zh-CN.md new file mode 100644 index 0000000..b27d282 --- /dev/null +++ b/vendor/alibabacloud/client/README-zh-CN.md @@ -0,0 +1,168 @@ +[English](/README.md) | 简体中文 + + +# Alibaba Cloud Client for PHP +[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client) +[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client) +[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client) +[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client) +[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg?token=90Yd5Bne3S)](https://codecov.io/gh/aliyun/openapi-sdk-php-client) +[![PHP Version Require](http://poser.pugx.org/alibabacloud/client/require/php)](https://packagist.org/packages/alibabacloud/client) + + +![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) + + +Alibaba Cloud Client for PHP 是帮助 PHP 开发者管理凭据、发送请求的客户端工具,[Alibaba Cloud SDK for PHP][SDK] 由本工具提供底层支持。 + + +## 使用诊断 +[Troubleshoot](https://troubleshoot.api.aliyun.com/?source=github_sdk) 提供 OpenAPI 使用诊断服务,通过 `RequestID` 或 `报错信息` ,帮助开发者快速定位,为开发者提供解决方案。 + +## 在线示例 +[阿里云 OpenAPI 开发者门户]https://next.api.aliyun.com/) 提供在线调用阿里云产品,并动态生成 SDK 代码和快速检索接口等能力,能显著降低使用云 API 的难度。 + + +## 先决条件 +您的系统需要满足[先决条件](/docs/zh-CN/0-Prerequisites.md),包括 PHP> = 5.5。 我们强烈建议使用cURL扩展,并使用TLS后端编译cURL 7.16.2+。 + + +## 安装依赖 +如果已在系统上[全局安装 Composer](https://getcomposer.org/doc/00-intro.md#globally),请直接在项目目录中运行以下内容来安装 Alibaba Cloud Client for PHP 作为依赖项: +``` +composer require alibabacloud/client +``` +> 一些用户可能由于网络问题无法安装,可以使用[阿里云 Composer 全量镜像](https://developer.aliyun.com/composer)。 + +请看[安装](/docs/zh-CN/1-Installation.md)有关通过 Composer 和其他方式安装的详细信息。 + + +## 快速使用 +在您开始之前,您需要注册阿里云帐户并获取您的[凭证](https://usercenter.console.aliyun.com/#/manage/ak)。 + +```php +asDefaultClient(); +``` + + +## 请求 +> 请求风格分为 `ROA` 和 `RPC`,不同产品风格不同,使用前,请参考产品文档。推荐使用 [Alibaba Cloud SDK for PHP][SDK] ,细节已被封装,无需关心风格。 + + +### ROA 请求 +```php +regionId('cn-hangzhou') // 指定请求的区域,不指定则使用客户端区域、默认区域 + ->product('CS') // 指定产品 + ->version('2015-12-15') // 指定产品版本 + ->action('DescribeClusterServices') // 指定产品接口 + ->serviceCode('cs') // 设置 ServiceCode 以备寻址,非必须 + ->endpointType('openAPI') // 设置类型,非必须 + ->method('GET') // 指定请求方式 + ->host('cs.aliyun.com') // 指定域名则不会寻址,如认证方式为 Bearer Token 的服务则需要指定 + ->pathPattern('/clusters/[ClusterId]/services') // 指定ROA风格路径规则 + ->withClusterId('123456') // 为路径中参数赋值,方法名:with + 参数 + ->request(); // 发起请求并返回结果对象,请求需要放在设置的最后面 + + print_r($result->toArray()); + +} catch (ClientException $exception) { + print_r($exception->getErrorMessage()); +} catch (ServerException $exception) { + print_r($exception->getErrorMessage()); +} +``` + +### RPC 请求 +```php +product('Cdn') + ->version('2014-11-11') + ->action('DescribeCdnService') + ->method('POST') + ->request(); + + print_r($result->toArray()); + +} catch (ClientException $exception) { + print_r($exception->getErrorMessage()); +} catch (ServerException $exception) { + print_r($exception->getErrorMessage()); +} +``` + + +## 文档 +* [先决条件](/docs/zh-CN/0-Prerequisites.md) +* [安装](/docs/zh-CN/1-Installation.md) +* [客户端和凭证](/docs/zh-CN/2-Client.md) +* [请求](/docs/zh-CN/3-Request.md) +* [结果](/docs/zh-CN/4-Result.md) +* [区域](/docs/zh-CN/5-Region.md) +* [域名](/docs/zh-CN/6-Host.md) +* [SSL 验证](/docs/zh-CN/7-Verify.md) +* [调试](/docs/zh-CN/8-Debug.md) +* [日志](/docs/zh-CN/9-Log.md) +* [测试](/docs/zh-CN/10-Test.md) + + +## 问题 +[提交 Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose),不符合指南的问题可能会立即关闭。 + + +## 发行说明 +每个版本的详细更改记录在[发行说明](/CHANGELOG.md)中。 + + +## 贡献 +提交 Pull Request 之前请阅读[贡献指南](/CONTRIBUTING.md)。 + + +## 相关 +* [阿里云服务 Regions & Endpoints][endpoints] +* [阿里云 OpenAPI 开发者门户][open-api] +* [Packagist][packagist] +* [Composer][composer] +* [Guzzle中文文档][guzzle-docs] +* [最新源码][latest-release] + + +## 许可证 +[Apache-2.0](/LICENSE.md) + +Copyright (c) 2009-present, Alibaba Cloud All rights reserved. + + +[SDK]: https://github.com/aliyun/openapi-sdk-php +[open-api]: https://next.api.aliyun.com/ +[latest-release]: https://github.com/aliyun/openapi-sdk-php-client +[guzzle-docs]: https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html +[composer]: https://getcomposer.org +[packagist]: https://packagist.org/packages/alibabacloud/sdk +[home]: https://home.console.aliyun.com +[aliyun]: https://www.aliyun.com +[regions]: https://help.aliyun.com/document_detail/40654.html +[endpoints]: https://developer.aliyun.com/endpoints +[cURL]: http://php.net/manual/zh/book.curl.php +[OPCache]: http://php.net/manual/zh/book.opcache.php +[xdebug]: http://xdebug.org +[OpenSSL]: http://php.net/manual/zh/book.openssl.php +[client]: https://github.com/aliyun/openapi-sdk-php-client diff --git a/vendor/alibabacloud/client/README.md b/vendor/alibabacloud/client/README.md new file mode 100644 index 0000000..dacf2bf --- /dev/null +++ b/vendor/alibabacloud/client/README.md @@ -0,0 +1,167 @@ +English | [简体中文](/README-zh-CN.md) + + +# Alibaba Cloud Client for PHP +[![Latest Stable Version](https://poser.pugx.org/alibabacloud/client/v/stable)](https://packagist.org/packages/alibabacloud/client) +[![composer.lock](https://poser.pugx.org/alibabacloud/client/composerlock)](https://packagist.org/packages/alibabacloud/client) +[![Total Downloads](https://poser.pugx.org/alibabacloud/client/downloads)](https://packagist.org/packages/alibabacloud/client) +[![License](https://poser.pugx.org/alibabacloud/client/license)](https://packagist.org/packages/alibabacloud/client) +[![codecov](https://codecov.io/gh/aliyun/openapi-sdk-php-client/branch/master/graph/badge.svg?token=90Yd5Bne3S)](https://codecov.io/gh/aliyun/openapi-sdk-php-client) +[![PHP Version Require](http://poser.pugx.org/alibabacloud/client/require/php)](https://packagist.org/packages/alibabacloud/client) + + +![](https://aliyunsdk-pages.alicdn.com/icons/AlibabaCloud.svg) + + +Alibaba Cloud Client for PHP is a client tool that helps PHP developers manage credentials and send requests, [Alibaba Cloud SDK for PHP][SDK] dependency on this tool. + +## Troubleshoot +[Troubleshoot](https://troubleshoot.api.aliyun.com/?source=github_sdk) Provide OpenAPI diagnosis service to help developers locate quickly and provide solutions for developers through `RequestID` or `error message`. + +## Online Demo +[Alibaba Cloud OpenAPI Developer Portal](https://next.api.aliyun.com/) provides the ability to call the cloud product OpenAPI online, and dynamically generate SDK Example code and quick retrieval interface, which can significantly reduce the difficulty of using the cloud API. + +## Prerequisites +Your system will need to meet the [Prerequisites](/docs/en-US/0-Prerequisites.md), including having PHP >= 5.5. We highly recommend having it compiled with the cURL extension and cURL 7.16.2+. + + +## Installation +If Composer is already [installed globally on your system](https://getcomposer.org/doc/00-intro.md#globally), run the following in the base directory of your project to install Alibaba Cloud Client for PHP as a dependency: +``` +composer require alibabacloud/client +``` +> Some users may not be able to install due to network problems, you can try to switch the Composer mirror. + +Please see the [Installation](/docs/en-US/1-Installation.md) for more detailed information about installing the Alibaba Cloud Client for PHP through Composer and other means. + + +## Quick Examples +Before you begin, you need to sign up for an Alibaba Cloud account and retrieve your [Credentials](https://usercenter.console.aliyun.com/#/manage/ak). + +### Create Client +```php +asDefaultClient(); +``` + + +## Request +> Request styles are divided into `ROA` and `RPC`. Different product styles are different. Please refer to the product documentation before using. It is recommended to use [Alibaba cloud SDK for PHP][SDK], the details have been encapsulated, and you do not need to care about the style. + + +### ROA Request +```php +regionId('cn-hangzhou') // Specify the requested regionId, if not specified, use the client regionId, then default regionId + ->product('CS') // Specify product + ->version('2015-12-15') // Specify product version + ->action('DescribeClusterServices') // Specify product interface + ->serviceCode('cs') // Set ServiceCode for addressing, optional + ->endpointType('openAPI') // Set type, optional + ->method('GET') // Set request method + ->host('cs.aliyun.com') // Location Service will not be enabled if the host is specified. For example, service with a Certification type-Bearer Token should be specified + ->pathPattern('/clusters/[ClusterId]/services') // Specify path rule with ROA-style + ->withClusterId('123456') // Assign values to parameters in the path. Method: with + Parameter + ->request(); // Make a request and return to result object. The request is to be placed at the end of the setting + + print_r($result->toArray()); + +} catch (ClientException $exception) { + print_r($exception->getErrorMessage()); +} catch (ServerException $exception) { + print_r($exception->getErrorMessage()); +} +``` + +### RPC Request +```php +product('Cdn') + ->version('2014-11-11') + ->action('DescribeCdnService') + ->method('POST') + ->request(); + + print_r($result->toArray()); + +} catch (ClientException $exception) { + print_r($exception->getErrorMessage()); +} catch (ServerException $exception) { + print_r($exception->getErrorMessage()); +} +``` + + +## Documentation +* [Prerequisites](/docs/en-US/0-Prerequisites.md) +* [Installation](/docs/en-US/1-Installation.md) +* [Client & Credentials](/docs/en-US/2-Client.md) +* [Request](/docs/en-US/3-Request.md) +* [Result](/docs/en-US/4-Result.md) +* [Region](/docs/en-US/5-Region.md) +* [Host](/docs/en-US/6-Host.md) +* [SSL Verify](/docs/en-US/7-Verify.md) +* [Debug](/docs/en-US/8-Debug.md) +* [Log](/docs/en-US/9-Log.md) +* [Test](/docs/en-US/10-Test.md) + + +## Issues +[Opening an Issue](https://github.com/aliyun/openapi-sdk-php-client/issues/new/choose), Issues not conforming to the guidelines may be closed immediately. + + +## Changelog +Detailed changes for each release are documented in the [release notes](/CHANGELOG.md). + + +## Contribution +Please make sure to read the [Contributing Guide](/CONTRIBUTING.md) before making a pull request. + + +## References +* [Alibaba Cloud Regions & Endpoints][endpoints] +* [Alibaba Cloud OpenAPI Developer Portal][open-api] +* [Packagist][packagist] +* [Composer][composer] +* [Guzzle Documentation][guzzle-docs] +* [Latest Release][latest-release] + + +## License +[Apache-2.0](/LICENSE.md) + +Copyright (c) 2009-present, Alibaba Cloud All rights reserved. + + +[SDK]: https://github.com/aliyun/openapi-sdk-php +[open-api]: https://next.api.aliyun.com/ +[latest-release]: https://github.com/aliyun/openapi-sdk-php-client +[guzzle-docs]: http://docs.guzzlephp.org/en/stable/request-options.html +[composer]: https://getcomposer.org +[packagist]: https://packagist.org/packages/alibabacloud/sdk +[home]: https://home.console.aliyun.com +[alibabacloud]: https://www.alibabacloud.com +[regions]: https://www.alibabacloud.com/help/doc-detail/40654.html +[endpoints]: https://developer.aliyun.com/endpoints +[cURL]: http://php.net/manual/en/book.curl.php +[OPCache]: http://php.net/manual/en/book.opcache.php +[xdebug]: http://xdebug.org +[OpenSSL]: http://php.net/manual/en/book.openssl.php +[client]: https://github.com/aliyun/openapi-sdk-php-client diff --git a/vendor/alibabacloud/client/UPGRADING.md b/vendor/alibabacloud/client/UPGRADING.md new file mode 100644 index 0000000..08c1bb3 --- /dev/null +++ b/vendor/alibabacloud/client/UPGRADING.md @@ -0,0 +1,6 @@ +Upgrading Guide +=============== + +1.x +----------------------- +- This is the first version. See for more information. diff --git a/vendor/alibabacloud/client/autoload.php b/vendor/alibabacloud/client/autoload.php new file mode 100644 index 0000000..e654320 --- /dev/null +++ b/vendor/alibabacloud/client/autoload.php @@ -0,0 +1,17 @@ +=5.5", + "ext-curl": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-openssl": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xmlwriter": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "mtdowling/jmespath.php": "^2.5", + "adbario/php-dot-notation": "^2.4.1", + "clagiordano/weblibs-configmanager": "^1.0" + }, + "require-dev": { + "ext-spl": "*", + "ext-dom": "*", + "ext-pcre": "*", + "psr/cache": "^1.0", + "ext-sockets": "*", + "drupal/coder": "^8.3", + "symfony/dotenv": "^3.4", + "league/climate": "^3.2.4", + "phpunit/phpunit": "^5.7|^6.6|^7.5|^8.5|^9.5", + "monolog/monolog": "^1.24", + "composer/composer": "^1.8", + "mikey179/vfsstream": "^1.6", + "symfony/var-dumper": "^3.4" + }, + "suggest": { + "ext-sockets": "To use client-side monitoring" + }, + "autoload": { + "psr-4": { + "AlibabaCloud\\Client\\": "src" + }, + "files": [ + "src/Functions.php" + ] + }, + "autoload-dev": { + "psr-4": { + "AlibabaCloud\\Client\\Tests\\": "tests/" + } + }, + "config": { + "preferred-install": "dist", + "optimize-autoloader": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts-descriptions": { + "cs": "Tokenizes PHP, JavaScript and CSS files to detect violations of a defined coding standard.", + "cbf": "Automatically correct coding standard violations.", + "fixer": "Fixes code to follow standards.", + "test": "Run all tests.", + "unit": "Run Unit tests.", + "feature": "Run Feature tests.", + "clearCache": "Clear cache like coverage.", + "coverage": "Show Coverage html.", + "endpoints": "Update endpoints from OSS." + }, + "scripts": { + "cs": "phpcs --standard=PSR2 -n ./", + "cbf": "phpcbf --standard=PSR2 -n ./", + "fixer": "php-cs-fixer fix ./", + "test": [ + "phpunit --colors=always" + ], + "test4HighVersion": [ + "@clearCache", + "phpunit --testsuite=Test4HighVersion --colors=always" + ], + "test4LowVersion": [ + "@clearCache", + "phpunit --testsuite=Test4LowVersion --colors=always" + ], + "unit4HighVersion": [ + "@clearCache", + "phpunit --testsuite=Unit4HighVersion --colors=always" + ], + "unit4LowVersion": [ + "@clearCache", + "phpunit --testsuite=Unit4LowVersion --colors=always" + ], + "feature4HighVersion": [ + "@clearCache", + "phpunit --testsuite=Feature4HighVersion --colors=always" + ], + "feature4LowVersion": [ + "@clearCache", + "phpunit --testsuite=Feature4LowVersion --colors=always" + ], + "coverage": "open cache/coverage/index.html", + "clearCache": "rm -rf cache/*", + "endpoints": [ + "AlibabaCloud\\Client\\Regions\\LocationService::updateEndpoints", + "@fixer" + ], + "release": [ + "AlibabaCloud\\Client\\Release::release" + ] + } +} diff --git a/vendor/alibabacloud/client/src/Accept.php b/vendor/alibabacloud/client/src/Accept.php new file mode 100644 index 0000000..e7c5261 --- /dev/null +++ b/vendor/alibabacloud/client/src/Accept.php @@ -0,0 +1,53 @@ +format = $format; + } + + /** + * @param $format + * + * @return Accept + */ + public static function create($format) + { + return new static($format); + } + + /** + * @return mixed|string + */ + public function toString() + { + $key = \strtoupper($this->format); + + $list = [ + 'JSON' => 'application/json', + 'XML' => 'application/xml', + 'RAW' => 'application/octet-stream', + 'FORM' => 'application/x-www-form-urlencoded' + ]; + + return isset($list[$key]) ? $list[$key] : $list['RAW']; + } +} diff --git a/vendor/alibabacloud/client/src/AlibabaCloud.php b/vendor/alibabacloud/client/src/AlibabaCloud.php new file mode 100644 index 0000000..16847fa --- /dev/null +++ b/vendor/alibabacloud/client/src/AlibabaCloud.php @@ -0,0 +1,62 @@ +credential = $credential; + $this->signature = $signature; + $this->options['connect_timeout'] = Request::CONNECT_TIMEOUT; + $this->options['timeout'] = Request::TIMEOUT; + $this->options['verify'] = false; + } + + /** + * @return AccessKeyCredential|BearerTokenCredential|CredentialsInterface|EcsRamRoleCredential|RamRoleArnCredential|RsaKeyPairCredential|StsCredential + */ + public function getCredential() + { + return $this->credential; + } + + /** + * @return SignatureInterface|BearerTokenSignature|ShaHmac1Signature|ShaHmac256Signature|ShaHmac256WithRsaSignature + */ + public function getSignature() + { + return $this->signature; + } +} diff --git a/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php b/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php new file mode 100644 index 0000000..e97cd6c --- /dev/null +++ b/vendor/alibabacloud/client/src/Clients/EcsRamRoleClient.php @@ -0,0 +1,26 @@ +credential)) { + case EcsRamRoleCredential::class: + return (new EcsRamRoleProvider($this))->get(); + case RamRoleArnCredential::class: + return (new RamRoleArnProvider($this))->get($timeout, $connectTimeout); + case RsaKeyPairCredential::class: + return (new RsaKeyPairProvider($this))->get($timeout, $connectTimeout); + default: + return $this->credential; + } + } + + /** + * @return static + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function asGlobalClient() + { + return $this->asDefaultClient(); + } + + /** + * Set the current client as the default client. + * + * @return static + * @throws ClientException + */ + public function asDefaultClient() + { + return $this->name(CredentialsProvider::getDefaultName()); + } + + /** + * Naming clients. + * + * @param string $name + * + * @return static + * @throws ClientException + */ + public function name($name) + { + Filter::name($name); + + return AlibabaCloud::set($name, $this); + } + + /** + * @return bool + */ + public function isDebug() + { + if (isset($this->options['debug'])) { + return $this->options['debug'] === true && PHP_SAPI === 'cli'; + } + + return false; + } +} diff --git a/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php b/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php new file mode 100644 index 0000000..b7d3087 --- /dev/null +++ b/vendor/alibabacloud/client/src/Clients/RamRoleArnClient.php @@ -0,0 +1,33 @@ +getValue( + \strtolower($configPath), + $defaultValue + ); + } + + /** + * @return ConfigManager + */ + private static function getConfigManager() + { + if (!self::$configManager instanceof ConfigManager) { + self::$configManager = new ConfigManager(__DIR__ . DIRECTORY_SEPARATOR . 'Data.php'); + } + + return self::$configManager; + } + + /** + * @param string $configPath + * @param mixed $newValue + * + * @return ConfigManager + * @throws Exception + */ + public static function set($configPath, $newValue) + { + self::getConfigManager()->setValue(\strtolower($configPath), $newValue); + + return self::getConfigManager()->saveConfigFile(); + } +} diff --git a/vendor/alibabacloud/client/src/Config/Data.php b/vendor/alibabacloud/client/src/Config/Data.php new file mode 100644 index 0000000..883b2f0 --- /dev/null +++ b/vendor/alibabacloud/client/src/Config/Data.php @@ -0,0 +1,3799 @@ + + [ + 'dysmsapi' => + [ + 'cn-hangzhou' => 'dysmsapi.aliyuncs.com', + 'ap-southeast-1' => 'dysmsapi.ap-southeast-1.aliyuncs.com', + ], + 'ccc' => + [ + 'global' => 'ccc.cn-shanghai.aliyuncs.com', + 'cn-shanghai' => 'ccc.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'ccc.cn-hangzhou.aliyuncs.com', + ], + 'dbs' => + [ + 'cn-hangzhou' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'dbs-api.ap-southeast-1.aliyuncs.com', + 'ap-northeast-1' => 'dbs-api.ap-northeast-1.aliyuncs.com', + ], + 'dybaseapi' => + [ + 'global' => 'dybaseapi.aliyuncs.com', + 'cn-hangzhou' => 'dybaseapi.aliyuncs.com', + ], + 'dyiotapi' => + [ + 'global' => 'dyiotapi.aliyuncs.com', + 'cn-hangzhou' => 'dyiotapi.aliyuncs.com', + ], + 'dycdpapi' => + [ + 'global' => 'dycdpapi.aliyuncs.com', + 'cn-hangzhou' => 'dycdpapi.aliyuncs.com', + ], + 'dyplsapi' => + [ + 'global' => 'dyplsapi.aliyuncs.com', + 'cn-hangzhou' => 'dyplsapi.aliyuncs.com', + ], + 'dypnsapi' => + [ + 'global' => 'dypnsapi.aliyuncs.com', + 'cn-hangzhou' => 'dypnsapi.aliyuncs.com', + ], + 'dyvmsapi' => + [ + 'global' => 'dyvmsapi.aliyuncs.com', + 'cn-hangzhou' => 'dyvmsapi.aliyuncs.com', + ], + 'snsuapi' => + [ + 'global' => 'snsuapi.aliyuncs.com', + 'cn-hangzhou' => 'snsuapi.aliyuncs.com', + ], + 'ecs' => + [ + 'jp-fudao-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'me-east-1' => 'ecs.me-east-1.aliyuncs.com', + 'us-east-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'ap-northeast-1' => 'ecs.ap-northeast-1.aliyuncs.com', + 'cn-hangzhou-bj-b01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-beijing-nu16-b01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-beijing-am13-c01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'in-west-antgroup-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-guizhou-gov' => 'ecs-cn-hangzhou.aliyuncs.com', + 'in-west-antgroup-2' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'ecs-cn-hangzhou.aliyuncs.com', + 'tw-snowcloud-kaohsiung' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-finance-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-guizhou' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-fujian' => 'ecs-cn-hangzhou.aliyuncs.com', + 'in-mumbai-alipay' => 'ecs-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-anhui-gov-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-anhui-gov' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'ecs-cn-hangzhou.aliyuncs.com', + 'ap-southeast-2' => 'ecs.ap-southeast-2.aliyuncs.com', + 'cn-qingdao' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-su18-b02' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-su18-b03' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-su18-b01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'ap-southeast-antgroup-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-henan-am12001' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-gansu-am6' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-ningxiazhongwei' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-ningxia-am7-c01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-st4-d01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'eu-central-1' => 'ecs.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'ecs.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ecs.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'ecs.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'ecs.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'ecs.eu-west-1.aliyuncs.com', + 'ap-south-1' => 'ecs.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'ecs.cn-chengdu.aliyuncs.com', + 'cn-north-2-gov-1' => 'ecs.aliyuncs.com', + 'cn-edge-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', + 'cn-hangzhou-internal-prod-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-internal-test-3' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', + 'cn-qingdao-nebula' => 'ecs.cn-qingdao-nebula.aliyuncs.com', + 'cn-shanghai-internal-test-1' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-zhangbei-na61-b01' => 'ecs-cn-hangzhou.aliyuncs.com', + 'cn-zhengzhou-nebula-1' => 'ecs.cn-qingdao-nebula.aliyuncs.com', + 'eu-west-1-oxs' => 'ecs.cn-shenzhen-cloudstone.aliyuncs.com', + 'cn-heyuan' => 'ecs.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'ecs.cn-wulanchabu.aliyuncs.com', + ], + 'rds' => + [ + 'me-east-1' => 'rds.me-east-1.aliyuncs.com', + 'us-east-1' => 'rds.aliyuncs.com', + 'ap-northeast-1' => 'rds.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'rds.aliyuncs.com', + 'cn-qingdao-cm9' => 'rds.aliyuncs.com', + 'cn-shanghai-finance-1' => 'rds.aliyuncs.com', + 'cn-beijing-gov-1' => 'rds.aliyuncs.com', + 'cn-shanghai' => 'rds.aliyuncs.com', + 'cn-shenzhen-inner' => 'rds.aliyuncs.com', + 'cn-fujian' => 'rds.aliyuncs.com', + 'us-west-1' => 'rds.aliyuncs.com', + 'cn-shanghai-inner' => 'rds.aliyuncs.com', + 'cn-hangzhou' => 'rds.aliyuncs.com', + 'cn-beijing-inner' => 'rds.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'rds.aliyuncs.com', + 'cn-shenzhen' => 'rds.aliyuncs.com', + 'ap-southeast-2' => 'rds.ap-southeast-2.aliyuncs.com', + 'cn-qingdao' => 'rds.aliyuncs.com', + 'cn-beijing' => 'rds.aliyuncs.com', + 'cn-hangzhou-d' => 'rds.aliyuncs.com', + 'cn-gansu-am6' => 'rds.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'rds.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'rds.aliyuncs.com', + 'ap-southeast-1' => 'rds.aliyuncs.com', + 'eu-central-1' => 'rds.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'rds.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'rds.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'rds.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'rds.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'rds.eu-west-1.aliyuncs.com', + 'ap-south-1' => 'rds.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'rds.cn-chengdu.aliyuncs.com', + 'cn-north-2-gov-1' => 'rds.aliyuncs.com', + 'cn-yushanfang' => 'rds.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'rds.cn-chengdu.aliyuncs.com', + 'cn-heyuan' => 'rds.aliyuncs.com', + ], + 'vpc' => + [ + 'me-east-1' => 'vpc.me-east-1.aliyuncs.com', + 'us-east-1' => 'vpc.aliyuncs.com', + 'ap-northeast-1' => 'vpc.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'vpc.aliyuncs.com', + 'cn-beijing-am13-c01' => 'vpc.aliyuncs.com', + 'cn-guizhou-gov' => 'vpc.aliyuncs.com', + 'cn-shanghai-finance-1' => 'vpc.aliyuncs.com', + 'cn-guizhou' => 'vpc.aliyuncs.com', + 'cn-shanghai' => 'vpc.aliyuncs.com', + 'us-west-1' => 'vpc.aliyuncs.com', + 'cn-hangzhou' => 'vpc.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'vpc.aliyuncs.com', + 'cn-anhui-gov' => 'vpc.aliyuncs.com', + 'cn-shenzhen' => 'vpc.aliyuncs.com', + 'ap-southeast-2' => 'vpc.ap-southeast-2.aliyuncs.com', + 'cn-henan-am12001' => 'vpc.aliyuncs.com', + 'cn-beijing' => 'vpc.aliyuncs.com', + 'cn-gansu-am6' => 'vpc.aliyuncs.com', + 'cn-ningxiazhongwei' => 'vpc.aliyuncs.com', + 'cn-ningxia-am7-c01' => 'vpc.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'vpc.aliyuncs.com', + 'ap-southeast-1' => 'vpc.aliyuncs.com', + 'eu-central-1' => 'vpc.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'vpc.cn-zhangjiakou.aliyuncs.com', + 'cn-qingdao' => 'vpc.aliyuncs.com', + 'cn-huhehaote' => 'vpc.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'vpc.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'vpc.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'vpc.eu-west-1.aliyuncs.com', + 'ap-south-1' => 'vpc.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'vpc.cn-chengdu.aliyuncs.com', + 'cn-north-2-gov-1' => 'vpc.aliyuncs.com', + 'ap-northeast-2-pop' => 'vpc.aliyuncs.com', + 'cn-beijing-finance-1' => 'vpc.aliyuncs.com', + 'cn-beijing-finance-pop' => 'vpc.aliyuncs.com', + 'cn-edge-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'vpc.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'vpc.aliyuncs.com', + 'cn-hangzhou-internal-test-3' => 'vpc.aliyuncs.com', + 'cn-hongkong-finance-pop' => 'vpc.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', + 'cn-qingdao-nebula' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', + 'cn-shanghai-et15-b01' => 'vpc.aliyuncs.com', + 'cn-wuhan' => 'vpc.aliyuncs.com', + 'cn-zhangbei-na61-b01' => 'vpc.aliyuncs.com', + 'cn-zhengzhou-nebula-1' => 'vpc-nebula.cn-qingdao-nebula.aliyuncs.com', + 'eu-west-1-oxs' => 'vpc-nebula.cn-shenzhen-cloudstone.aliyuncs.com', + 'rus-west-1-pop' => 'vpc.aliyuncs.com', + 'cn-heyuan' => 'vpc.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'vpc.cn-wulanchabu.aliyuncs.com', + ], + 'kms' => + [ + 'me-east-1' => 'kms.me-east-1.aliyuncs.com', + 'ap-northeast-1' => 'kms.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'kms.cn-hongkong.aliyuncs.com', + 'cn-shanghai-finance-1' => 'kms.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shanghai' => 'kms.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'kms.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'kms.cn-shenzhen.aliyuncs.com', + 'ap-southeast-2' => 'kms.ap-southeast-2.aliyuncs.com', + 'cn-beijing' => 'kms.cn-beijing.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'kms.cn-shenzhen-finance-1.aliyuncs.com', + 'ap-southeast-1' => 'kms.ap-southeast-1.aliyuncs.com', + 'eu-central-1' => 'kms.eu-central-1.aliyuncs.com', + 'cn-qingdao' => 'kms.cn-qingdao.aliyuncs.com', + 'cn-zhangjiakou' => 'kms.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'kms.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'kms.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'kms.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'kms.eu-west-1.aliyuncs.com', + 'us-west-1' => 'kms.us-west-1.aliyuncs.com', + 'us-east-1' => 'kms.us-east-1.aliyuncs.com', + 'ap-south-1' => 'kms.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'kms.cn-chengdu.aliyuncs.com', + 'cn-hangzhou-finance' => 'kms.cn-hangzhou-finance.aliyuncs.com', + 'cn-north-2-gov-1' => 'kms.cn-north-2-gov-1.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'kms.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'kms.cn-hangzhou.aliyuncs.com', + 'cn-heyuan' => 'kms.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'kms.cn-wulanchabu.aliyuncs.com', + ], + 'cms' => + [ + 'me-east-1' => 'metrics.cn-hangzhou.aliyuncs.com', + 'us-east-1' => 'metrics.cn-hangzhou.aliyuncs.com', + 'ap-northeast-1' => 'metrics.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'metrics.aliyuncs.com', + 'cn-shanghai' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'metrics.aliyuncs.com', + 'us-west-1' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'metrics.aliyuncs.com', + 'cn-hangzhou' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'metrics.aliyuncs.com', + 'cn-shenzhen' => 'metrics.cn-hangzhou.aliyuncs.com', + 'ap-southeast-2' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'metrics.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'metrics.aliyuncs.com', + 'ap-southeast-1' => 'metrics.cn-hangzhou.aliyuncs.com', + 'eu-central-1' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-zhangjiakou' => 'metrics.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'metrics.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'metrics.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'metrics.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'metrics.eu-west-1.aliyuncs.com', + 'ap-south-1' => 'metrics.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'metrics.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'metrics.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'metrics.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'metrics.cn-north-2-gov-1.aliyuncs.com', + 'cn-qingdao-nebula' => 'metrics.cn-qingdao-nebula.aliyuncs.com', + 'cn-heyuan' => 'metrics.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'metrics.cn-wulanchabu.aliyuncs.com', + ], + 'slb' => + [ + 'me-east-1' => 'slb.me-east-1.aliyuncs.com', + 'us-east-1' => 'slb.aliyuncs.com', + 'ap-northeast-1' => 'slb.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'slb.aliyuncs.com', + 'cn-qingdao-cm9' => 'slb.aliyuncs.com', + 'cn-shanghai' => 'slb.aliyuncs.com', + 'cn-shenzhen-inner' => 'slb.aliyuncs.com', + 'us-west-1' => 'slb.aliyuncs.com', + 'cn-shanghai-inner' => 'slb.aliyuncs.com', + 'cn-hangzhou' => 'slb.aliyuncs.com', + 'cn-beijing-inner' => 'slb.aliyuncs.com', + 'cn-shenzhen' => 'slb.aliyuncs.com', + 'ap-southeast-2' => 'slb.ap-southeast-2.aliyuncs.com', + 'cn-qingdao' => 'slb.aliyuncs.com', + 'cn-beijing' => 'slb.aliyuncs.com', + 'cn-hangzhou-d' => 'slb.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'slb.aliyuncs.com', + 'ap-southeast-1' => 'slb.aliyuncs.com', + 'eu-central-1' => 'slb.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'slb.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'slb.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'slb.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'slb.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'slb.eu-west-1.aliyuncs.com', + 'ap-south-1' => 'slb.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'slb.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'slb.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'slb.aliyuncs.com', + 'cn-north-2-gov-1' => 'slb.aliyuncs.com', + 'cn-fujian' => 'slb.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'slb.aliyuncs.com', + 'cn-hangzhou-test-306' => 'slb.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'slb-api.cn-qingdao-nebula.aliyuncs.com', + 'cn-heyuan' => 'slb.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'slb.cn-wulanchabu.aliyuncs.com', + ], + 'cs' => + [ + 'us-east-1' => 'cs.us-east-1.aliyuncs.com', + 'cn-hongkong' => 'cs.cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'cs.aliyuncs.com', + 'cn-shanghai' => 'cs.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'cs.aliyuncs.com', + 'us-west-1' => 'cs.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'cs.aliyuncs.com', + 'cn-hangzhou' => 'cs.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'cs.aliyuncs.com', + 'cn-shenzhen' => 'cs.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'cs.aliyuncs.com', + 'cn-beijing' => 'cs.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'cs.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'cs.aliyuncs.com', + 'ap-southeast-1' => 'cs.ap-southeast-1.aliyuncs.com', + 'cn-chengdu' => 'cs.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'cs.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'cs.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'cs.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'cs.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'cs.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'cs.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'cs.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'cs.eu-central-1.aliyuncs.com', + 'me-east-1' => 'cs.me-east-1.aliyuncs.com', + 'ap-south-1' => 'cs.ap-south-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'cs.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'cs.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'cs.cn-north-2-gov-1.aliyuncs.com', + ], + 'push' => + [ + 'us-east-1' => 'cloudpush.aliyuncs.com', + 'cn-hongkong' => 'cloudpush.aliyuncs.com', + 'cn-qingdao-cm9' => 'cloudpush.aliyuncs.com', + 'cn-shanghai' => 'cloudpush.aliyuncs.com', + 'cn-shenzhen-inner' => 'cloudpush.aliyuncs.com', + 'us-west-1' => 'cloudpush.aliyuncs.com', + 'cn-shanghai-inner' => 'cloudpush.aliyuncs.com', + 'cn-hangzhou' => 'cloudpush.aliyuncs.com', + 'cn-beijing-inner' => 'cloudpush.aliyuncs.com', + 'cn-shenzhen' => 'cloudpush.aliyuncs.com', + 'cn-qingdao' => 'cloudpush.aliyuncs.com', + 'cn-beijing' => 'cloudpush.aliyuncs.com', + 'cn-hangzhou-d' => 'cloudpush.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'cloudpush.aliyuncs.com', + 'ap-southeast-1' => 'cloudpush.aliyuncs.com', + ], + 'cos' => + [ + 'us-east-1' => 'cos.aliyuncs.com', + 'cn-hongkong' => 'cos.aliyuncs.com', + 'cn-qingdao-cm9' => 'cos.aliyuncs.com', + 'cn-shanghai' => 'cos.aliyuncs.com', + 'cn-shenzhen-inner' => 'cos.aliyuncs.com', + 'us-west-1' => 'cos.aliyuncs.com', + 'cn-shanghai-inner' => 'cos.aliyuncs.com', + 'cn-hangzhou' => 'cos.aliyuncs.com', + 'cn-beijing-inner' => 'cos.aliyuncs.com', + 'cn-shenzhen' => 'cos.aliyuncs.com', + 'cn-qingdao' => 'cos.aliyuncs.com', + 'cn-beijing' => 'cos.aliyuncs.com', + 'cn-hangzhou-d' => 'cos.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'cos.aliyuncs.com', + 'ap-southeast-1' => 'cos.aliyuncs.com', + ], + 'ess' => + [ + 'us-east-1' => 'ess.aliyuncs.com', + 'cn-hongkong' => 'ess.aliyuncs.com', + 'cn-qingdao-cm9' => 'ess.aliyuncs.com', + 'cn-shanghai' => 'ess.aliyuncs.com', + 'cn-shenzhen-inner' => 'ess.aliyuncs.com', + 'us-west-1' => 'ess.aliyuncs.com', + 'cn-shanghai-inner' => 'ess.aliyuncs.com', + 'cn-hangzhou' => 'ess.aliyuncs.com', + 'cn-beijing-inner' => 'ess.aliyuncs.com', + 'cn-shenzhen' => 'ess.aliyuncs.com', + 'cn-qingdao' => 'ess.aliyuncs.com', + 'cn-beijing' => 'ess.aliyuncs.com', + 'cn-hangzhou-d' => 'ess.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ess.aliyuncs.com', + 'ap-southeast-1' => 'ess.aliyuncs.com', + 'cn-zhangjiakou' => 'ess.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ess.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'ess.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'ess.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'ess.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'ess.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'ess.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'ess.eu-central-1.aliyuncs.com', + 'me-east-1' => 'ess.me-east-1.aliyuncs.com', + 'ap-south-1' => 'ess.ap-south-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'ess.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'ess.aliyuncs.com', + 'cn-north-2-gov-1' => 'ess.aliyuncs.com', + 'cn-chengdu' => 'ess.cn-chengdu.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'ess.aliyuncs.com', + 'cn-heyuan' => 'ess.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'ess.cn-wulanchabu.aliyuncs.com', + ], + 'ace-ops' => + [ + 'us-east-1' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'ace-ops.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ace-ops.cn-hangzhou.aliyuncs.com', + ], + 'billing' => + [ + 'us-east-1' => 'billing.aliyuncs.com', + 'cn-hongkong' => 'billing.aliyuncs.com', + 'cn-qingdao-cm9' => 'billing.aliyuncs.com', + 'cn-shanghai' => 'billing.aliyuncs.com', + 'cn-shenzhen-inner' => 'billing.aliyuncs.com', + 'us-west-1' => 'billing.aliyuncs.com', + 'cn-shanghai-inner' => 'billing.aliyuncs.com', + 'cn-hangzhou' => 'billing.aliyuncs.com', + 'cn-beijing-inner' => 'billing.aliyuncs.com', + 'cn-beijing' => 'billing.aliyuncs.com', + 'cn-hangzhou-d' => 'billing.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'billing.aliyuncs.com', + 'ap-southeast-1' => 'billing.aliyuncs.com', + ], + 'dqs' => + [ + 'us-east-1' => 'dqs.aliyuncs.com', + 'cn-hongkong' => 'dqs.aliyuncs.com', + 'cn-qingdao-cm9' => 'dqs.aliyuncs.com', + 'cn-shanghai' => 'dqs.aliyuncs.com', + 'cn-shenzhen-inner' => 'dqs.aliyuncs.com', + 'us-west-1' => 'dqs.aliyuncs.com', + 'cn-shanghai-inner' => 'dqs.aliyuncs.com', + 'cn-hangzhou' => 'dqs.aliyuncs.com', + 'cn-beijing-inner' => 'dqs.aliyuncs.com', + 'cn-shenzhen' => 'dqs.aliyuncs.com', + 'cn-qingdao' => 'dqs.aliyuncs.com', + 'cn-beijing' => 'dqs.aliyuncs.com', + 'cn-hangzhou-d' => 'dqs.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'dqs.aliyuncs.com', + 'ap-southeast-1' => 'dqs.aliyuncs.com', + ], + 'dds' => + [ + 'us-east-1' => 'mongodb.aliyuncs.com', + 'cn-hongkong' => 'mongodb.aliyuncs.com', + 'cn-qingdao-cm9' => 'mongodb.aliyuncs.com', + 'cn-shanghai' => 'mongodb.aliyuncs.com', + 'cn-shenzhen-inner' => 'mongodb.aliyuncs.com', + 'us-west-1' => 'mongodb.aliyuncs.com', + 'cn-shanghai-inner' => 'mongodb.aliyuncs.com', + 'cn-hangzhou' => 'mongodb.aliyuncs.com', + 'cn-beijing-inner' => 'mongodb.aliyuncs.com', + 'cn-shenzhen' => 'mongodb.aliyuncs.com', + 'cn-qingdao' => 'mongodb.aliyuncs.com', + 'cn-beijing' => 'mongodb.aliyuncs.com', + 'cn-hangzhou-d' => 'mongodb.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'mongodb.aliyuncs.com', + 'ap-southeast-1' => 'mongodb.aliyuncs.com', + 'cn-zhangjiakou' => 'mongodb.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'mongodb.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'mongodb.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'mongodb.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'mongodb.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'mongodb.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'mongodb.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'mongodb.eu-central-1.aliyuncs.com', + 'me-east-1' => 'mongodb.me-east-1.aliyuncs.com', + 'ap-south-1' => 'mongodb.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'mongodb.cn-chengdu.aliyuncs.com', + 'cn-hangzhou-finance' => 'mongodb.aliyuncs.com', + 'cn-shanghai-finance-1' => 'mongodb.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'mongodb.aliyuncs.com', + 'cn-north-2-gov-1' => 'mongodb.aliyuncs.com', + 'cn-heyuan' => 'mongodb.aliyuncs.com', + 'cn-wulanchabu' => 'mongodb.aliyuncs.com', + ], + 'emr' => + [ + 'us-east-1' => 'emr.us-east-1.aliyuncs.com', + 'cn-hongkong' => 'emr.cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'emr.aliyuncs.com', + 'cn-shanghai' => 'emr.aliyuncs.com', + 'cn-shenzhen-inner' => 'emr.aliyuncs.com', + 'us-west-1' => 'emr.aliyuncs.com', + 'cn-shanghai-inner' => 'emr.aliyuncs.com', + 'cn-hangzhou' => 'emr.aliyuncs.com', + 'cn-beijing-inner' => 'emr.aliyuncs.com', + 'cn-shenzhen' => 'emr.aliyuncs.com', + 'cn-qingdao' => 'emr.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'emr.aliyuncs.com', + 'cn-hangzhou-d' => 'emr.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'emr.aliyuncs.com', + 'ap-southeast-1' => 'emr.aliyuncs.com', + 'cn-zhangjiakou' => 'emr.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'emr.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'emr.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'emr.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'emr.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'emr.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'emr.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'emr.eu-central-1.aliyuncs.com', + 'me-east-1' => 'emr.me-east-1.aliyuncs.com', + 'ap-south-1' => 'emr.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'emr.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'emr.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'emr.aliyuncs.com', + ], + 'sms' => + [ + 'us-east-1' => 'sms.aliyuncs.com', + 'cn-hongkong' => 'sms.aliyuncs.com', + 'cn-qingdao-cm9' => 'sms.aliyuncs.com', + 'cn-shanghai' => 'sms.aliyuncs.com', + 'cn-shenzhen-inner' => 'sms.aliyuncs.com', + 'us-west-1' => 'sms.aliyuncs.com', + 'cn-shanghai-inner' => 'sms.aliyuncs.com', + 'cn-hangzhou' => 'sms.aliyuncs.com', + 'cn-beijing-inner' => 'sms.aliyuncs.com', + 'cn-shenzhen' => 'sms.aliyuncs.com', + 'cn-qingdao' => 'sms.aliyuncs.com', + 'cn-beijing' => 'sms.aliyuncs.com', + 'cn-hangzhou-d' => 'sms.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'sms.aliyuncs.com', + 'ap-southeast-1' => 'sms.aliyuncs.com', + ], + 'jaq' => + [ + 'us-east-1' => 'jaq.aliyuncs.com', + 'cn-hongkong' => 'jaq.aliyuncs.com', + 'cn-qingdao-cm9' => 'jaq.aliyuncs.com', + 'cn-shanghai' => 'jaq.aliyuncs.com', + 'cn-shenzhen-inner' => 'jaq.aliyuncs.com', + 'us-west-1' => 'jaq.aliyuncs.com', + 'cn-shanghai-inner' => 'jaq.aliyuncs.com', + 'cn-hangzhou' => 'jaq.aliyuncs.com', + 'cn-beijing-inner' => 'jaq.aliyuncs.com', + 'cn-shenzhen' => 'jaq.aliyuncs.com', + 'cn-qingdao' => 'jaq.aliyuncs.com', + 'cn-beijing' => 'jaq.aliyuncs.com', + 'cn-hangzhou-d' => 'jaq.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'jaq.aliyuncs.com', + 'ap-southeast-1' => 'jaq.aliyuncs.com', + ], + 'hpc' => + [ + 'us-east-1' => 'hpc.aliyuncs.com', + 'cn-hongkong' => 'hpc.aliyuncs.com', + 'cn-qingdao-cm9' => 'hpc.aliyuncs.com', + 'cn-shanghai' => 'hpc.aliyuncs.com', + 'cn-shenzhen-inner' => 'hpc.aliyuncs.com', + 'us-west-1' => 'hpc.aliyuncs.com', + 'cn-shanghai-inner' => 'hpc.aliyuncs.com', + 'cn-hangzhou' => 'hpc.aliyuncs.com', + 'cn-beijing-inner' => 'hpc.aliyuncs.com', + 'cn-shenzhen' => 'hpc.aliyuncs.com', + 'cn-qingdao' => 'hpc.aliyuncs.com', + 'cn-beijing' => 'hpc.aliyuncs.com', + 'cn-hangzhou-d' => 'hpc.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'hpc.aliyuncs.com', + 'ap-southeast-1' => 'hpc.aliyuncs.com', + ], + 'location' => + [ + 'us-east-1' => 'location.aliyuncs.com', + 'cn-hongkong' => 'location.aliyuncs.com', + 'cn-qingdao-cm9' => 'location.aliyuncs.com', + 'cn-shanghai' => 'location.aliyuncs.com', + 'cn-shenzhen-inner' => 'location.aliyuncs.com', + 'us-west-1' => 'location.aliyuncs.com', + 'cn-shanghai-inner' => 'location.aliyuncs.com', + 'cn-hangzhou' => 'location.aliyuncs.com', + 'cn-beijing-inner' => 'location.aliyuncs.com', + 'cn-shenzhen' => 'location.aliyuncs.com', + 'cn-qingdao' => 'location.aliyuncs.com', + 'cn-beijing' => 'location.aliyuncs.com', + 'cn-hangzhou-d' => 'location.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'location.aliyuncs.com', + 'ap-southeast-1' => 'location.aliyuncs.com', + ], + 'chargingservice' => + [ + 'us-east-1' => 'chargingservice.aliyuncs.com', + 'cn-hongkong' => 'chargingservice.aliyuncs.com', + 'cn-qingdao-cm9' => 'chargingservice.aliyuncs.com', + 'cn-shanghai' => 'chargingservice.aliyuncs.com', + 'cn-shenzhen-inner' => 'chargingservice.aliyuncs.com', + 'us-west-1' => 'chargingservice.aliyuncs.com', + 'cn-shanghai-inner' => 'chargingservice.aliyuncs.com', + 'cn-hangzhou' => 'chargingservice.aliyuncs.com', + 'cn-beijing-inner' => 'chargingservice.aliyuncs.com', + 'cn-beijing' => 'chargingservice.aliyuncs.com', + 'cn-hangzhou-d' => 'chargingservice.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'chargingservice.aliyuncs.com', + 'ap-southeast-1' => 'chargingservice.aliyuncs.com', + ], + 'msg' => + [ + 'us-east-1' => 'msg-inner.aliyuncs.com', + 'cn-hongkong' => 'msg-inner.aliyuncs.com', + 'cn-qingdao-cm9' => 'msg-inner.aliyuncs.com', + 'cn-shanghai' => 'msg-inner.aliyuncs.com', + 'cn-shenzhen-inner' => 'msg-inner.aliyuncs.com', + 'us-west-1' => 'msg-inner.aliyuncs.com', + 'cn-shanghai-inner' => 'msg-inner.aliyuncs.com', + 'cn-hangzhou' => 'msg-inner.aliyuncs.com', + 'cn-beijing-inner' => 'msg-inner.aliyuncs.com', + 'cn-beijing' => 'msg-inner.aliyuncs.com', + 'cn-hangzhou-d' => 'msg-inner.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'msg-inner.aliyuncs.com', + 'ap-southeast-1' => 'msg-inner.aliyuncs.com', + ], + 'commondriver' => + [ + 'us-east-1' => 'common.driver.aliyuncs.com', + 'cn-hongkong' => 'common.driver.aliyuncs.com', + 'cn-qingdao-cm9' => 'common.driver.aliyuncs.com', + 'cn-shanghai' => 'common.driver.aliyuncs.com', + 'cn-shenzhen-inner' => 'common.driver.aliyuncs.com', + 'us-west-1' => 'common.driver.aliyuncs.com', + 'cn-shanghai-inner' => 'common.driver.aliyuncs.com', + 'cn-hangzhou' => 'common.driver.aliyuncs.com', + 'cn-beijing-inner' => 'common.driver.aliyuncs.com', + 'cn-shenzhen' => 'common.driver.aliyuncs.com', + 'cn-qingdao' => 'common.driver.aliyuncs.com', + 'cn-beijing' => 'common.driver.aliyuncs.com', + 'cn-hangzhou-d' => 'common.driver.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'common.driver.aliyuncs.com', + 'ap-southeast-1' => 'common.driver.aliyuncs.com', + ], + 'r-kvstore' => + [ + 'us-east-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'r-kvstore-cn-hangzhou.aliyuncs.com', + ], + 'bss' => + [ + 'us-east-1' => 'bss.aliyuncs.com', + 'cn-hongkong' => 'bss.aliyuncs.com', + 'cn-qingdao-cm9' => 'bss.aliyuncs.com', + 'cn-shanghai' => 'bss.aliyuncs.com', + 'cn-shenzhen-inner' => 'bss.aliyuncs.com', + 'us-west-1' => 'bss.aliyuncs.com', + 'cn-shanghai-inner' => 'bss.aliyuncs.com', + 'cn-hangzhou' => 'bss.aliyuncs.com', + 'cn-beijing-inner' => 'bss.aliyuncs.com', + 'cn-shenzhen' => 'bss.aliyuncs.com', + 'cn-qingdao' => 'bss.aliyuncs.com', + 'cn-beijing' => 'bss.aliyuncs.com', + 'cn-hangzhou-d' => 'bss.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'bss.aliyuncs.com', + 'ap-southeast-1' => 'bss.aliyuncs.com', + ], + 'workorder' => + [ + 'us-east-1' => 'workorder.aliyuncs.com', + 'cn-hongkong' => 'workorder.aliyuncs.com', + 'cn-qingdao-cm9' => 'workorder.aliyuncs.com', + 'cn-shanghai' => 'workorder.aliyuncs.com', + 'cn-shenzhen-inner' => 'workorder.aliyuncs.com', + 'us-west-1' => 'workorder.aliyuncs.com', + 'cn-shanghai-inner' => 'workorder.aliyuncs.com', + 'cn-hangzhou' => 'workorder.aliyuncs.com', + 'cn-beijing-inner' => 'workorder.aliyuncs.com', + 'cn-beijing' => 'workorder.aliyuncs.com', + 'cn-hangzhou-d' => 'workorder.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'workorder.aliyuncs.com', + 'ap-southeast-1' => 'workorder.aliyuncs.com', + ], + 'ocs' => + [ + 'us-east-1' => 'm-kvstore.aliyuncs.com', + 'cn-hongkong' => 'm-kvstore.aliyuncs.com', + 'cn-qingdao-cm9' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai' => 'm-kvstore.aliyuncs.com', + 'cn-shenzhen-inner' => 'm-kvstore.aliyuncs.com', + 'us-west-1' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai-inner' => 'm-kvstore.aliyuncs.com', + 'cn-hangzhou' => 'm-kvstore.aliyuncs.com', + 'cn-beijing-inner' => 'm-kvstore.aliyuncs.com', + 'cn-shenzhen' => 'm-kvstore.aliyuncs.com', + 'cn-qingdao' => 'm-kvstore.aliyuncs.com', + 'cn-beijing' => 'm-kvstore.aliyuncs.com', + 'cn-hangzhou-d' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com', + 'ap-southeast-1' => 'm-kvstore.aliyuncs.com', + ], + 'yundun' => + [ + 'us-east-1' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'yundun-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'yundun-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'yundun-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'yundun-cn-hangzhou.aliyuncs.com', + ], + 'ubsms-inner' => + [ + 'us-east-1' => 'ubsms-inner.aliyuncs.com', + 'cn-hongkong' => 'ubsms-inner.aliyuncs.com', + 'cn-qingdao-cm9' => 'ubsms-inner.aliyuncs.com', + 'cn-shanghai' => 'ubsms-inner.aliyuncs.com', + 'cn-shenzhen-inner' => 'ubsms-inner.aliyuncs.com', + 'us-west-1' => 'ubsms-inner.aliyuncs.com', + 'cn-shanghai-inner' => 'ubsms-inner.aliyuncs.com', + 'cn-hangzhou' => 'ubsms-inner.aliyuncs.com', + 'cn-beijing-inner' => 'ubsms-inner.aliyuncs.com', + 'cn-shenzhen' => 'ubsms-inner.aliyuncs.com', + 'cn-qingdao' => 'ubsms-inner.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ubsms-inner.aliyuncs.com', + 'cn-hangzhou-d' => 'ubsms-inner.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ubsms-inner.aliyuncs.com', + 'ap-southeast-1' => 'ubsms-inner.aliyuncs.com', + ], + 'dm' => + [ + 'us-east-1' => 'dm.aliyuncs.com', + 'cn-hongkong' => 'dm.aliyuncs.com', + 'cn-qingdao-cm9' => 'dm.aliyuncs.com', + 'cn-shanghai' => 'dm.aliyuncs.com', + 'cn-shenzhen-inner' => 'dm.aliyuncs.com', + 'us-west-1' => 'dm.aliyuncs.com', + 'cn-shanghai-inner' => 'dm.aliyuncs.com', + 'cn-hangzhou' => 'dm.aliyuncs.com', + 'cn-beijing-inner' => 'dm.aliyuncs.com', + 'cn-shenzhen' => 'dm.aliyuncs.com', + 'cn-qingdao' => 'dm.aliyuncs.com', + 'cn-beijing' => 'dm.aliyuncs.com', + 'cn-hangzhou-d' => 'dm.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'dm.aliyuncs.com', + 'ap-southeast-1' => 'dm.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'dm.ap-southeast-2.aliyuncs.com', + ], + 'green' => + [ + 'us-east-1' => 'green.aliyuncs.com', + 'cn-hongkong' => 'green.aliyuncs.com', + 'cn-qingdao-cm9' => 'green.aliyuncs.com', + 'cn-shanghai' => 'green.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'green.aliyuncs.com', + 'us-west-1' => 'green.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'green.aliyuncs.com', + 'cn-hangzhou' => 'green.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'green.aliyuncs.com', + 'cn-shenzhen' => 'green.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'green.aliyuncs.com', + 'cn-beijing' => 'green.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'green.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'green.aliyuncs.com', + 'ap-southeast-1' => 'green.ap-southeast-1.aliyuncs.com', + ], + 'risk' => + [ + 'us-east-1' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'risk-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'risk-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'risk-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'risk-cn-hangzhou.aliyuncs.com', + ], + 'oceanbase' => + [ + 'us-east-1' => 'oceanbase.aliyuncs.com', + 'cn-hongkong' => 'oceanbase.aliyuncs.com', + 'cn-qingdao-cm9' => 'oceanbase.aliyuncs.com', + 'cn-shanghai' => 'oceanbasepro-share.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'oceanbase.aliyuncs.com', + 'us-west-1' => 'oceanbase.aliyuncs.com', + 'cn-shanghai-inner' => 'oceanbase.aliyuncs.com', + 'cn-hangzhou' => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'oceanbase.aliyuncs.com', + 'cn-shenzhen' => 'oceanbase.aliyuncs.com', + 'cn-qingdao' => 'oceanbase.aliyuncs.com', + 'cn-beijing' => 'oceanbasepro-share.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'oceanbase.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'oceanbase.aliyuncs.com', + 'ap-southeast-1' => 'oceanbasepro-share.ap-southeast-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'oceanbasepro-share.cn-shanghai-finance-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'oceanbasepro-share.cn-hangzhou.aliyuncs.com', + ], + 'msc' => + [ + 'us-east-1' => 'msc-inner.aliyuncs.com', + 'cn-hongkong' => 'msc-inner.aliyuncs.com', + 'cn-qingdao-cm9' => 'msc-inner.aliyuncs.com', + 'cn-shanghai' => 'msc-inner.aliyuncs.com', + 'cn-shenzhen-inner' => 'msc-inner.aliyuncs.com', + 'us-west-1' => 'msc-inner.aliyuncs.com', + 'cn-shanghai-inner' => 'msc-inner.aliyuncs.com', + 'cn-hangzhou' => 'msc-inner.aliyuncs.com', + 'cn-beijing-inner' => 'msc-inner.aliyuncs.com', + 'cn-beijing' => 'msc-inner.aliyuncs.com', + 'cn-hangzhou-d' => 'msc-inner.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'msc-inner.aliyuncs.com', + 'ap-southeast-1' => 'msc-inner.aliyuncs.com', + ], + 'yundunhsm' => + [ + 'us-east-1' => 'yundunhsm.aliyuncs.com', + 'cn-hongkong' => 'yundunhsm.aliyuncs.com', + 'cn-qingdao-cm9' => 'yundunhsm.aliyuncs.com', + 'cn-shanghai' => 'yundunhsm.aliyuncs.com', + 'cn-shenzhen-inner' => 'yundunhsm.aliyuncs.com', + 'us-west-1' => 'yundunhsm.aliyuncs.com', + 'cn-shanghai-inner' => 'yundunhsm.aliyuncs.com', + 'cn-hangzhou' => 'yundunhsm.aliyuncs.com', + 'cn-beijing-inner' => 'yundunhsm.aliyuncs.com', + 'cn-beijing' => 'yundunhsm.aliyuncs.com', + 'cn-hangzhou-d' => 'yundunhsm.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'yundunhsm.aliyuncs.com', + 'ap-southeast-1' => 'yundunhsm.aliyuncs.com', + ], + 'iot' => + [ + 'cn-hongkong' => 'iot.aliyuncs.com', + 'cn-qingdao-cm9' => 'iot.aliyuncs.com', + 'cn-shanghai' => 'iot.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'iot.aliyuncs.com', + 'us-west-1' => 'iot.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'iot.aliyuncs.com', + 'cn-hangzhou' => 'iot.aliyuncs.com', + 'cn-beijing-inner' => 'iot.aliyuncs.com', + 'cn-shenzhen' => 'iot.aliyuncs.com', + 'cn-qingdao' => 'iot.aliyuncs.com', + 'cn-beijing' => 'iot.aliyuncs.com', + 'cn-hangzhou-d' => 'iot.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'iot.aliyuncs.com', + 'ap-southeast-1' => 'iot.ap-southeast-1.aliyuncs.com', + 'ap-northeast-1' => 'iot.ap-northeast-1.aliyuncs.com', + 'us-east-1' => 'iot.us-east-1.aliyuncs.com', + 'eu-central-1' => 'iot.eu-central-1.aliyuncs.com', + ], + 'oms' => + [ + 'us-east-1' => 'oms.aliyuncs.com', + 'cn-hongkong' => 'oms.aliyuncs.com', + 'cn-qingdao-cm9' => 'oms.aliyuncs.com', + 'cn-shanghai' => 'oms.aliyuncs.com', + 'cn-shenzhen-inner' => 'oms.aliyuncs.com', + 'us-west-1' => 'oms.aliyuncs.com', + 'cn-shanghai-inner' => 'oms.aliyuncs.com', + 'cn-hangzhou' => 'oms.aliyuncs.com', + 'cn-beijing-inner' => 'oms.aliyuncs.com', + 'cn-shenzhen' => 'oms.aliyuncs.com', + 'cn-qingdao' => 'oms.aliyuncs.com', + 'cn-beijing' => 'oms.aliyuncs.com', + 'cn-hangzhou-d' => 'oms.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'oms.aliyuncs.com', + 'ap-southeast-1' => 'oms.aliyuncs.com', + ], + 'live' => + [ + 'us-east-1' => 'live.aliyuncs.com', + 'cn-hongkong' => 'live.aliyuncs.com', + 'cn-qingdao-cm9' => 'live.aliyuncs.com', + 'cn-shanghai' => 'live.aliyuncs.com', + 'cn-shenzhen-inner' => 'live.aliyuncs.com', + 'us-west-1' => 'live.aliyuncs.com', + 'cn-shanghai-inner' => 'live.aliyuncs.com', + 'cn-hangzhou' => 'live.aliyuncs.com', + 'cn-beijing-inner' => 'live.aliyuncs.com', + 'cn-shenzhen' => 'live.aliyuncs.com', + 'cn-qingdao' => 'live.aliyuncs.com', + 'cn-beijing' => 'live.aliyuncs.com', + 'cn-hangzhou-d' => 'live.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'live.aliyuncs.com', + 'ap-southeast-1' => 'live.aliyuncs.com', + 'ap-northeast-1' => 'live.aliyuncs.com', + 'eu-central-1' => 'live.aliyuncs.com', + 'ap-southeast-5' => 'live.aliyuncs.com', + 'ap-south-1' => 'live.aliyuncs.com', + ], + 'ubsms' => + [ + 'us-east-1' => 'ubsms.aliyuncs.com', + 'cn-hongkong' => 'ubsms.aliyuncs.com', + 'cn-qingdao-cm9' => 'ubsms.aliyuncs.com', + 'cn-shanghai' => 'ubsms.aliyuncs.com', + 'cn-shenzhen-inner' => 'ubsms.aliyuncs.com', + 'us-west-1' => 'ubsms.aliyuncs.com', + 'cn-shanghai-inner' => 'ubsms.aliyuncs.com', + 'cn-hangzhou' => 'ubsms.aliyuncs.com', + 'cn-beijing-inner' => 'ubsms.aliyuncs.com', + 'cn-shenzhen' => 'ubsms.aliyuncs.com', + 'cn-qingdao' => 'ubsms.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ubsms.aliyuncs.com', + 'cn-hangzhou-d' => 'ubsms.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ubsms.aliyuncs.com', + 'ap-southeast-1' => 'ubsms.aliyuncs.com', + ], + 'alert' => + [ + 'us-east-1' => 'alert.aliyuncs.com', + 'cn-hongkong' => 'alert.aliyuncs.com', + 'cn-qingdao-cm9' => 'alert.aliyuncs.com', + 'cn-shanghai' => 'alert.aliyuncs.com', + 'cn-shenzhen-inner' => 'alert.aliyuncs.com', + 'us-west-1' => 'alert.aliyuncs.com', + 'cn-shanghai-inner' => 'alert.aliyuncs.com', + 'cn-hangzhou' => 'alert.aliyuncs.com', + 'cn-beijing-inner' => 'alert.aliyuncs.com', + 'cn-shenzhen' => 'alert.aliyuncs.com', + 'cn-qingdao' => 'alert.aliyuncs.com', + 'cn-beijing' => 'alert.aliyuncs.com', + 'cn-hangzhou-d' => 'alert.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'alert.aliyuncs.com', + 'ap-southeast-1' => 'alert.aliyuncs.com', + ], + 'ace' => + [ + 'us-east-1' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'ace.cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'ace.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ace.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'ace.cn-hangzhou.aliyuncs.com', + ], + 'ams' => + [ + 'us-east-1' => 'ams.aliyuncs.com', + 'cn-hongkong' => 'ams.aliyuncs.com', + 'cn-qingdao-cm9' => 'ams.aliyuncs.com', + 'cn-shanghai' => 'ams.aliyuncs.com', + 'cn-shenzhen-inner' => 'ams.aliyuncs.com', + 'us-west-1' => 'ams.aliyuncs.com', + 'cn-shanghai-inner' => 'ams.aliyuncs.com', + 'cn-hangzhou' => 'ams.aliyuncs.com', + 'cn-beijing-inner' => 'ams.aliyuncs.com', + 'cn-beijing' => 'ams.aliyuncs.com', + 'cn-hangzhou-d' => 'ams.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ams.aliyuncs.com', + 'ap-southeast-1' => 'ams.aliyuncs.com', + ], + 'ros' => + [ + 'us-east-1' => 'ros.aliyuncs.com', + 'cn-hongkong' => 'ros.aliyuncs.com', + 'cn-qingdao-cm9' => 'ros.aliyuncs.com', + 'cn-shanghai' => 'ros.aliyuncs.com', + 'cn-shenzhen-inner' => 'ros.aliyuncs.com', + 'us-west-1' => 'ros.aliyuncs.com', + 'cn-shanghai-inner' => 'ros.aliyuncs.com', + 'cn-hangzhou' => 'ros.aliyuncs.com', + 'cn-beijing-inner' => 'ros.aliyuncs.com', + 'cn-shenzhen' => 'ros.aliyuncs.com', + 'cn-qingdao' => 'ros.aliyuncs.com', + 'cn-beijing' => 'ros.aliyuncs.com', + 'cn-hangzhou-d' => 'ros.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ros.aliyuncs.com', + 'ap-southeast-1' => 'ros.aliyuncs.com', + ], + 'pts' => + [ + 'us-east-1' => 'pts.aliyuncs.com', + 'cn-hongkong' => 'pts.aliyuncs.com', + 'cn-qingdao-cm9' => 'pts.aliyuncs.com', + 'cn-shanghai' => 'pts.aliyuncs.com', + 'cn-shenzhen-inner' => 'pts.aliyuncs.com', + 'us-west-1' => 'pts.aliyuncs.com', + 'cn-shanghai-inner' => 'pts.aliyuncs.com', + 'cn-hangzhou' => 'pts.aliyuncs.com', + 'cn-beijing-inner' => 'pts.aliyuncs.com', + 'cn-shenzhen' => 'pts.aliyuncs.com', + 'cn-qingdao' => 'pts.aliyuncs.com', + 'cn-beijing' => 'pts.aliyuncs.com', + 'cn-hangzhou-d' => 'pts.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'pts.aliyuncs.com', + 'ap-southeast-1' => 'pts.aliyuncs.com', + ], + 'qualitycheck' => + [ + 'us-east-1' => 'qualitycheck.aliyuncs.com', + 'cn-hongkong' => 'qualitycheck.aliyuncs.com', + 'cn-qingdao-cm9' => 'qualitycheck.aliyuncs.com', + 'cn-shanghai' => 'qualitycheck.aliyuncs.com', + 'cn-shenzhen-inner' => 'qualitycheck.aliyuncs.com', + 'us-west-1' => 'qualitycheck.aliyuncs.com', + 'cn-shanghai-inner' => 'qualitycheck.aliyuncs.com', + 'cn-hangzhou' => 'qualitycheck.aliyuncs.com', + 'cn-beijing-inner' => 'qualitycheck.aliyuncs.com', + 'cn-hangzhou-d' => 'qualitycheck.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'qualitycheck.aliyuncs.com', + 'ap-southeast-1' => 'qualitycheck.aliyuncs.com', + ], + 'm-kvstore' => + [ + 'us-east-1' => 'm-kvstore.aliyuncs.com', + 'cn-hongkong' => 'm-kvstore.aliyuncs.com', + 'cn-qingdao-cm9' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai' => 'm-kvstore.aliyuncs.com', + 'cn-shenzhen-inner' => 'm-kvstore.aliyuncs.com', + 'us-west-1' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai-inner' => 'm-kvstore.aliyuncs.com', + 'cn-hangzhou' => 'm-kvstore.aliyuncs.com', + 'cn-beijing-inner' => 'm-kvstore.aliyuncs.com', + 'cn-shenzhen' => 'm-kvstore.aliyuncs.com', + 'cn-qingdao' => 'm-kvstore.aliyuncs.com', + 'cn-beijing' => 'm-kvstore.aliyuncs.com', + 'cn-hangzhou-d' => 'm-kvstore.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'm-kvstore.aliyuncs.com', + 'ap-southeast-1' => 'm-kvstore.aliyuncs.com', + ], + 'highddos' => + [ + 'us-east-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'yd-highddos-cn-hangzhou.aliyuncs.com', + ], + 'cmssitemonitor' => + [ + 'us-east-1' => 'sitemonitor.aliyuncs.com', + 'cn-hongkong' => 'sitemonitor.aliyuncs.com', + 'cn-qingdao-cm9' => 'sitemonitor.aliyuncs.com', + 'cn-shanghai' => 'sitemonitor.aliyuncs.com', + 'cn-shenzhen-inner' => 'sitemonitor.aliyuncs.com', + 'us-west-1' => 'sitemonitor.aliyuncs.com', + 'cn-shanghai-inner' => 'sitemonitor.aliyuncs.com', + 'cn-hangzhou' => 'sitemonitor.aliyuncs.com', + 'cn-beijing-inner' => 'sitemonitor.aliyuncs.com', + 'cn-shenzhen' => 'sitemonitor.aliyuncs.com', + 'cn-qingdao' => 'sitemonitor.aliyuncs.com', + 'cn-beijing' => 'sitemonitor.aliyuncs.com', + 'cn-hangzhou-d' => 'sitemonitor.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'sitemonitor.aliyuncs.com', + 'ap-southeast-1' => 'sitemonitor.aliyuncs.com', + ], + 'batchcompute' => + [ + 'us-east-1' => 'batchCompute.us-east-1.aliyuncs.com', + 'cn-hongkong' => 'batchCompute.cn-hongkong.aliyuncs.com', + 'cn-shanghai' => 'batchCompute.cn-shanghai.aliyuncs.com', + 'us-west-1' => 'batchCompute.us-west-1.aliyuncs.com', + 'cn-hangzhou' => 'batchCompute.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'batchcompute.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'batchcompute.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'batchCompute.cn-beijing.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'batchCompute.cn-shanghai-et2-b01.aliyuncs.com', + 'ap-southeast-1' => 'batchCompute.ap-southeast-1.aliyuncs.com', + ], + 'cf' => + [ + 'us-east-1' => 'cf.aliyuncs.com', + 'cn-hongkong' => 'cf.aliyuncs.com', + 'cn-qingdao-cm9' => 'cf.aliyuncs.com', + 'cn-shanghai' => 'cf.aliyuncs.com', + 'cn-shenzhen-inner' => 'cf.aliyuncs.com', + 'us-west-1' => 'cf.aliyuncs.com', + 'cn-shanghai-inner' => 'cf.aliyuncs.com', + 'cn-hangzhou' => 'cf.aliyuncs.com', + 'cn-beijing-inner' => 'cf.aliyuncs.com', + 'cn-shenzhen' => 'cf.aliyuncs.com', + 'cn-qingdao' => 'cf.aliyuncs.com', + 'cn-beijing' => 'cf.aliyuncs.com', + 'cn-hangzhou-d' => 'cf.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'cf.aliyuncs.com', + 'ap-southeast-1' => 'cf.aliyuncs.com', + ], + 'drds' => + [ + 'us-east-1' => 'drds.aliyuncs.com', + 'cn-hongkong' => 'drds.aliyuncs.com', + 'cn-qingdao-cm9' => 'drds.aliyuncs.com', + 'cn-shanghai' => 'drds.aliyuncs.com', + 'cn-shenzhen-inner' => 'drds.aliyuncs.com', + 'us-west-1' => 'drds.aliyuncs.com', + 'cn-shanghai-inner' => 'drds.aliyuncs.com', + 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'drds.aliyuncs.com', + 'cn-shenzhen' => 'drds.aliyuncs.com', + 'cn-qingdao' => 'drds.aliyuncs.com', + 'cn-beijing' => 'drds.aliyuncs.com', + 'cn-hangzhou-d' => 'drds.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'drds.aliyuncs.com', + 'ap-southeast-1' => 'drds.aliyuncs.com', + ], + 'acs' => + [ + 'us-east-1' => 'acs.aliyun-inc.com', + 'cn-hongkong' => 'acs.aliyun-inc.com', + 'cn-shanghai' => 'acs.aliyun-inc.com', + 'us-west-1' => 'acs.aliyun-inc.com', + 'cn-hangzhou' => 'acs.aliyun-inc.com', + 'cn-shenzhen' => 'acs.aliyun-inc.com', + 'cn-qingdao' => 'acs.aliyun-inc.com', + 'cn-beijing' => 'acs.aliyun-inc.com', + 'cn-shanghai-et2-b01' => 'acs.aliyun-inc.com', + ], + 'httpdns' => + [ + 'us-east-1' => 'httpdns-api.aliyuncs.com', + 'cn-hongkong' => 'httpdns-api.aliyuncs.com', + 'cn-qingdao-cm9' => 'httpdns-api.aliyuncs.com', + 'cn-shanghai' => 'httpdns-api.aliyuncs.com', + 'cn-shenzhen-inner' => 'httpdns-api.aliyuncs.com', + 'us-west-1' => 'httpdns-api.aliyuncs.com', + 'cn-shanghai-inner' => 'httpdns-api.aliyuncs.com', + 'cn-hangzhou' => 'httpdns-api.aliyuncs.com', + 'cn-beijing-inner' => 'httpdns-api.aliyuncs.com', + 'cn-shenzhen' => 'httpdns-api.aliyuncs.com', + 'cn-qingdao' => 'httpdns-api.aliyuncs.com', + 'cn-beijing' => 'httpdns-api.aliyuncs.com', + 'cn-hangzhou-d' => 'httpdns-api.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'httpdns-api.aliyuncs.com', + 'ap-southeast-1' => 'httpdns-api.aliyuncs.com', + ], + 'location-inner' => + [ + 'us-east-1' => 'location-inner.aliyuncs.com', + 'cn-hongkong' => 'location-inner.aliyuncs.com', + 'cn-qingdao-cm9' => 'location-inner.aliyuncs.com', + 'cn-shanghai' => 'location-inner.aliyuncs.com', + 'cn-shenzhen-inner' => 'location-inner.aliyuncs.com', + 'us-west-1' => 'location-inner.aliyuncs.com', + 'cn-shanghai-inner' => 'location-inner.aliyuncs.com', + 'cn-hangzhou' => 'location-inner.aliyuncs.com', + 'cn-beijing-inner' => 'location-inner.aliyuncs.com', + 'cn-shenzhen' => 'location-inner.aliyuncs.com', + 'cn-qingdao' => 'location-inner.aliyuncs.com', + 'cn-beijing' => 'location-inner.aliyuncs.com', + 'cn-hangzhou-d' => 'location-inner.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'location-inner.aliyuncs.com', + 'ap-southeast-1' => 'location-inner.aliyuncs.com', + ], + 'aas' => + [ + 'us-east-1' => 'aas.aliyuncs.com', + 'cn-hongkong' => 'aas.aliyuncs.com', + 'cn-qingdao-cm9' => 'aas.aliyuncs.com', + 'cn-shanghai' => 'aas.aliyuncs.com', + 'cn-shenzhen-inner' => 'aas.aliyuncs.com', + 'us-west-1' => 'aas.aliyuncs.com', + 'cn-shanghai-inner' => 'aas.aliyuncs.com', + 'cn-hangzhou' => 'aas.aliyuncs.com', + 'cn-beijing-inner' => 'aas.aliyuncs.com', + 'cn-shenzhen' => 'aas.aliyuncs.com', + 'cn-qingdao' => 'aas.aliyuncs.com', + 'cn-beijing' => 'aas.aliyuncs.com', + 'cn-hangzhou-d' => 'aas.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'aas.aliyuncs.com', + 'ap-southeast-1' => 'aas.aliyuncs.com', + ], + 'sts' => + [ + 'cn-hangzhou' => 'sts.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'sts.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'sts.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'sts.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'sts.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'sts.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'sts.cn-huhehaote.aliyuncs.com', + 'cn-hongkong' => 'sts.cn-hongkong.aliyuncs.com', + 'cn-chengdu' => 'sts.cn-chengdu.aliyuncs.com', + 'ap-southeast-1' => 'sts.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'sts.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'sts.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'sts.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'sts.ap-northeast-1.aliyuncs.com', + 'ap-south-1' => 'sts.ap-south-1.aliyuncs.com', + 'us-west-1' => 'sts.us-west-1.aliyuncs.com', + 'us-east-1' => 'sts.us-east-1.aliyuncs.com', + 'eu-central-1' => 'sts.eu-central-1.aliyuncs.com', + 'me-east-1' => 'sts.me-east-1.aliyuncs.com', + 'eu-west-1' => 'sts.eu-west-1.aliyuncs.com', + ], + 'dts' => + [ + 'us-east-1' => 'dts.aliyuncs.com', + 'cn-hongkong' => 'dts.aliyuncs.com', + 'cn-qingdao-cm9' => 'dts.aliyuncs.com', + 'cn-shanghai' => 'dts.aliyuncs.com', + 'cn-shenzhen-inner' => 'dts.aliyuncs.com', + 'us-west-1' => 'dts.aliyuncs.com', + 'cn-shanghai-inner' => 'dts.aliyuncs.com', + 'cn-hangzhou' => 'dts.aliyuncs.com', + 'cn-beijing-inner' => 'dts.aliyuncs.com', + 'cn-shenzhen' => 'dts.aliyuncs.com', + 'cn-qingdao' => 'dts.aliyuncs.com', + 'cn-beijing' => 'dts.aliyuncs.com', + 'cn-hangzhou-d' => 'dts.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'dts.aliyuncs.com', + 'ap-southeast-1' => 'dts.aliyuncs.com', + 'cn-zhangjiakou' => 'dts.aliyuncs.com', + 'cn-huhehaote' => 'dts.aliyuncs.com', + 'ap-southeast-2' => 'dts.aliyuncs.com', + 'ap-southeast-3' => 'dts.aliyuncs.com', + 'ap-southeast-5' => 'dts.aliyuncs.com', + 'eu-west-1' => 'dts.aliyuncs.com', + 'eu-central-1' => 'dts.aliyuncs.com', + 'me-east-1' => 'dts.aliyuncs.com', + 'ap-south-1' => 'dts.aliyuncs.com', + 'cn-hangzhou-finance' => 'dts.aliyuncs.com', + 'cn-shanghai-finance-1' => 'dts.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'dts.aliyuncs.com', + 'cn-north-2-gov-1' => 'dts.aliyuncs.com', + 'cn-beijing-gov-1' => 'dts.aliyuncs.com', + ], + 'drc' => + [ + 'us-east-1' => 'drc.aliyuncs.com', + 'cn-hongkong' => 'drc.aliyuncs.com', + 'cn-qingdao-cm9' => 'drc.aliyuncs.com', + 'cn-shanghai' => 'drc.aliyuncs.com', + 'cn-shenzhen-inner' => 'drc.aliyuncs.com', + 'us-west-1' => 'drc.aliyuncs.com', + 'cn-shanghai-inner' => 'drc.aliyuncs.com', + 'cn-hangzhou' => 'drc.aliyuncs.com', + 'cn-beijing-inner' => 'drc.aliyuncs.com', + 'cn-shenzhen' => 'drc.aliyuncs.com', + 'cn-qingdao' => 'drc.aliyuncs.com', + 'cn-beijing' => 'drc.aliyuncs.com', + 'cn-hangzhou-d' => 'drc.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'drc.aliyuncs.com', + 'ap-southeast-1' => 'drc.aliyuncs.com', + ], + 'vpc-inner' => + [ + 'us-east-1' => 'vpc-inner.aliyuncs.com', + 'cn-hongkong' => 'vpc-inner.aliyuncs.com', + 'cn-shanghai' => 'vpc-inner.aliyuncs.com', + 'us-west-1' => 'vpc-inner.aliyuncs.com', + 'cn-hangzhou' => 'vpc-inner.aliyuncs.com', + 'cn-shenzhen' => 'vpc-inner.aliyuncs.com', + 'cn-qingdao' => 'vpc-inner.aliyuncs.com', + 'cn-beijing' => 'vpc-inner.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'vpc-inner.aliyuncs.com', + ], + 'crm' => + [ + 'us-east-1' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'crm-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'crm-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'crm-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'crm-cn-hangzhou.aliyuncs.com', + ], + 'domain' => + [ + 'us-east-1' => 'domain.aliyuncs.com', + 'cn-hongkong' => 'domain.aliyuncs.com', + 'cn-qingdao-cm9' => 'domain.aliyuncs.com', + 'cn-shanghai' => 'domain.aliyuncs.com', + 'cn-shenzhen-inner' => 'domain.aliyuncs.com', + 'us-west-1' => 'domain.aliyuncs.com', + 'cn-shanghai-inner' => 'domain.aliyuncs.com', + 'cn-hangzhou' => 'domain.aliyuncs.com', + 'cn-beijing-inner' => 'domain.aliyuncs.com', + 'cn-shenzhen' => 'domain.aliyuncs.com', + 'cn-qingdao' => 'domain.aliyuncs.com', + 'cn-beijing' => 'domain.aliyuncs.com', + 'cn-hangzhou-d' => 'domain.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'domain.aliyuncs.com', + 'ap-southeast-1' => 'domain.aliyuncs.com', + ], + 'ots' => + [ + 'us-east-1' => 'ots.us-east-1.aliyuncs.com', + 'cn-hongkong' => 'ots.cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'ots-pop.aliyuncs.com', + 'cn-shanghai' => 'ots.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'ots-pop.aliyuncs.com', + 'us-west-1' => 'ots.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'ots-pop.aliyuncs.com', + 'cn-hangzhou' => 'ots.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'ots-pop.aliyuncs.com', + 'cn-shenzhen' => 'ots.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'ots.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ots.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'ots-pop.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ots-pop.aliyuncs.com', + 'ap-southeast-1' => 'ots.ap-southeast-1.aliyuncs.com', + 'cn-zhangjiakou' => 'ots.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ots.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'ots.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'ots.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'ots.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'ots.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'ots.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'ots.eu-central-1.aliyuncs.com', + 'me-east-1' => 'ots.me-east-1.aliyuncs.com', + 'ap-south-1' => 'ots.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'ots.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'ots.cn-shanghai-finance-1.aliyuncs.com', + ], + 'oss' => + [ + 'us-east-1' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'oss-cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-qingdao-finance' => 'oss-cn-qdjbp-a.aliyuncs.com', + 'cn-beijing-gov-1' => 'oss-cn-haidian-a.aliyuncs.com', + 'cn-shanghai' => 'oss-cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'oss-cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'oss-us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-finance' => 'oss-cn-hzjbp-b-console.aliyuncs.com', + 'cn-hangzhou' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'oss-cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'oss-cn-qingdao.aliyuncs.com', + 'oss-cn-bjzwy' => 'oss-cn-bjzwy.aliyuncs.com', + 'cn-beijing' => 'oss-cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'oss-cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'oss-cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'oss-ap-southeast-1.aliyuncs.com', + 'cn-chengdu' => 'oss-cn-chengdu.aliyuncs.com', + 'ap-northeast-1' => 'oss-ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'oss-eu-west-1.aliyuncs.com', + 'me-east-1' => 'oss-me-east-1.aliyuncs.com', + 'ap-south-1' => 'oss-ap-south-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'oss-cn-shanghai-finance-1-internal.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'oss-cn-shenzhen-finance-1-internal.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'oss-cn-huhehaote-nebula-1.aliyuncs.com', + 'cn-zhengzhou-nebula-1' => 'oss-cn-zhengzhou-nebula-1.aliyuncs.com', + 'cn-heyuan' => 'oss-cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'oss-cn-wulanchabu.aliyuncs.com', + ], + 'ram' => + [ + 'global' => 'ram.aliyuncs.com', + 'us-east-1' => 'ram.aliyuncs.com', + 'cn-hongkong' => 'ram.aliyuncs.com', + 'cn-qingdao-cm9' => 'ram.aliyuncs.com', + 'cn-shanghai' => 'ram.aliyuncs.com', + 'cn-shenzhen-inner' => 'ram.aliyuncs.com', + 'us-west-1' => 'ram.aliyuncs.com', + 'cn-shanghai-inner' => 'ram.aliyuncs.com', + 'cn-hangzhou' => 'ram.aliyuncs.com', + 'cn-beijing-inner' => 'ram.aliyuncs.com', + 'cn-shenzhen' => 'ram.aliyuncs.com', + 'cn-qingdao' => 'ram.aliyuncs.com', + 'cn-beijing' => 'ram.aliyuncs.com', + 'cn-hangzhou-d' => 'ram.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ram.aliyuncs.com', + 'ap-southeast-1' => 'ram.aliyuncs.com', + ], + 'sales' => + [ + 'us-east-1' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'sales.cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'sales.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'sales.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'sales.cn-hangzhou.aliyuncs.com', + ], + 'ossadmin' => + [ + 'us-east-1' => 'oss-admin.aliyuncs.com', + 'cn-hongkong' => 'oss-admin.aliyuncs.com', + 'cn-qingdao-cm9' => 'oss-admin.aliyuncs.com', + 'cn-shanghai' => 'oss-admin.aliyuncs.com', + 'cn-shenzhen-inner' => 'oss-admin.aliyuncs.com', + 'us-west-1' => 'oss-admin.aliyuncs.com', + 'cn-shanghai-inner' => 'oss-admin.aliyuncs.com', + 'cn-hangzhou' => 'oss-admin.aliyuncs.com', + 'cn-beijing-inner' => 'oss-admin.aliyuncs.com', + 'cn-shenzhen' => 'oss-admin.aliyuncs.com', + 'cn-qingdao' => 'oss-admin.aliyuncs.com', + 'cn-beijing' => 'oss-admin.aliyuncs.com', + 'cn-hangzhou-d' => 'oss-admin.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'oss-admin.aliyuncs.com', + 'ap-southeast-1' => 'oss-admin.aliyuncs.com', + ], + 'alidns' => + [ + 'us-east-1' => 'alidns.aliyuncs.com', + 'cn-hongkong' => 'alidns.aliyuncs.com', + 'cn-qingdao-cm9' => 'alidns.aliyuncs.com', + 'cn-shanghai' => 'alidns.aliyuncs.com', + 'cn-shenzhen-inner' => 'alidns.aliyuncs.com', + 'us-west-1' => 'alidns.aliyuncs.com', + 'cn-shanghai-inner' => 'alidns.aliyuncs.com', + 'cn-hangzhou' => 'alidns.aliyuncs.com', + 'cn-beijing-inner' => 'alidns.aliyuncs.com', + 'cn-shenzhen' => 'alidns.aliyuncs.com', + 'cn-qingdao' => 'alidns.aliyuncs.com', + 'cn-beijing' => 'alidns.aliyuncs.com', + 'cn-hangzhou-d' => 'alidns.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'alidns.aliyuncs.com', + 'ap-southeast-1' => 'alidns.aliyuncs.com', + ], + 'ons' => + [ + 'us-east-1' => 'ons.us-east-1.aliyuncs.com', + 'cn-hongkong' => 'ons.cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'ons.aliyuncs.com', + 'cn-shanghai' => 'ons.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'ons.aliyuncs.com', + 'us-west-1' => 'ons.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'ons.aliyuncs.com', + 'cn-hangzhou' => 'ons.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'ons.aliyuncs.com', + 'cn-shenzhen' => 'ons.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'ons.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ons.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'ons.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'ons.aliyuncs.com', + 'ap-southeast-1' => 'ons.ap-southeast-1.aliyuncs.com', + 'cn-zhangjiakou' => 'ons.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ons.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'ons.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'ons.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'ons.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'ons.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'ons.eu-central-1.aliyuncs.com', + 'me-east-1' => 'ons.me-east-1.aliyuncs.com', + 'ap-south-1' => 'ons.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'ons.cn-chengdu.aliyuncs.com', + 'cn-hangzhou-finance' => 'ons.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'ons.cn-north-2-gov-1.aliyuncs.com', + 'ap-southeast-5' => 'ons.ap-southeast-5.aliyuncs.com', + ], + 'cdn' => + [ + 'global' => 'cdn.aliyuncs.com', + 'us-east-1' => 'cdn.aliyuncs.com', + 'cn-hongkong' => 'cdn.aliyuncs.com', + 'cn-qingdao-cm9' => 'cdn.aliyuncs.com', + 'cn-shanghai' => 'cdn.aliyuncs.com', + 'cn-shenzhen-inner' => 'cdn.aliyuncs.com', + 'us-west-1' => 'cdn.aliyuncs.com', + 'cn-shanghai-inner' => 'cdn.aliyuncs.com', + 'cn-hangzhou' => 'cdn.aliyuncs.com', + 'cn-beijing-inner' => 'cdn.aliyuncs.com', + 'cn-shenzhen' => 'cdn.aliyuncs.com', + 'cn-qingdao' => 'cdn.aliyuncs.com', + 'cn-beijing' => 'cdn.aliyuncs.com', + 'cn-hangzhou-d' => 'cdn.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'cdn.aliyuncs.com', + 'ap-southeast-1' => 'cdn.aliyuncs.com', + ], + 'yundunddos' => + [ + 'us-east-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-qingdao-cm9' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'us-west-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou-d' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'inner-yundun-ddos.cn-hangzhou.aliyuncs.com', + ], + 'kvstore' => + [ + 'ap-northeast-1' => 'r-kvstore.ap-northeast-1.aliyuncs.com', + ], + 'cloudapi' => + [ + 'cn-hongkong' => 'apigateway.cn-hongkong.aliyuncs.com', + 'cn-shanghai' => 'apigateway.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'apigateway.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'apigateway.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'apigateway.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'apigateway.cn-beijing.aliyuncs.com', + 'ap-southeast-1' => 'apigateway.ap-southeast-1.aliyuncs.com', + ], + 'mts' => + [ + 'cn-hongkong' => 'mts.cn-hongkong.aliyuncs.com', + 'cn-qingdao-cm9' => 'mts.cn-qingdao.aliyuncs.com', + 'cn-shanghai' => 'mts.cn-shanghai.aliyuncs.com', + 'cn-shenzhen-inner' => 'mts.cn-shenzhen.aliyuncs.com', + 'us-west-1' => 'mts.us-west-1.aliyuncs.com', + 'cn-shanghai-inner' => 'mts.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'mts.cn-hangzhou.aliyuncs.com', + 'cn-beijing-inner' => 'mts.cn-beijing.aliyuncs.com', + 'cn-shenzhen' => 'mts.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'mts.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'mts.cn-beijing.aliyuncs.com', + 'cn-hangzhou-d' => 'mts.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'mts.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'mts.ap-southeast-1.aliyuncs.com', + 'cn-zhangjiakou' => 'mts.cn-zhangjiakou.aliyuncs.com', + 'ap-northeast-1' => 'mts.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'mts.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'mts.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'mts.ap-south-1.aliyuncs.com', + 'ap-southeast-5' => 'mts.ap-southeast-5.aliyuncs.com', + ], + 'saf' => + [ + 'cn-shanghai' => 'saf.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'saf.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'saf.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'saf.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'saf.cn-north-2-gov-1.aliyuncs.com', + 'cn-zhangjiakou' => 'saf.cn-zhangjiakou.aliyuncs.com', + ], + 'arms' => + [ + 'cn-shanghai' => 'arms.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'arms.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'arms.cn-shenzhen.aliyuncs.com', + 'cn-beijing' => 'arms.cn-beijing.aliyuncs.com', + 'cn-qingdao' => 'arms.cn-qingdao.aliyuncs.com', + 'cn-zhangjiakou' => 'arms.cn-zhangjiakou.aliyuncs.com', + 'cn-hongkong' => 'arms.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'arms.ap-southeast-1.aliyuncs.com', + 'ap-south-1' => 'arms.ap-south-1.aliyuncs.com', + ], + 'apigateway' => + [ + 'cn-shanghai' => 'apigateway.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'apigateway.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'apigateway.cn-shenzhen.aliyuncs.com', + 'cn-qingdao' => 'apigateway.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'apigateway.cn-beijing.aliyuncs.com', + 'ap-southeast-1' => 'apigateway.ap-southeast-1.aliyuncs.com', + 'cn-hongkong' => 'apigateway.cn-hongkong.aliyuncs.com', + 'ap-southeast-2' => 'apigateway.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'apigateway.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'apigateway.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'apigateway.ap-northeast-1.aliyuncs.com', + 'eu-central-1' => 'apigateway.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'apigateway.ap-south-1.aliyuncs.com', + 'eu-west-1' => 'apigateway.eu-west-1.aliyuncs.com', + 'me-east-1' => 'apigateway.me-east-1.aliyuncs.com', + 'us-east-1' => 'apigateway.us-east-1.aliyuncs.com', + 'us-west-1' => 'apigateway.us-west-1.aliyuncs.com', + 'cn-zhangjiakou' => 'apigateway.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'apigateway.cn-huhehaote.aliyuncs.com', + 'cn-chengdu' => 'apigateway.cn-chengdu.aliyuncs.com', + 'cn-north-2-gov-1' => 'apigateway.cn-north-2-gov-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'apigateway.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'apigateway.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'apigateway.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-shanghai-inner' => 'apigateway.cn-shanghai-inner.aliyuncs.com', + 'cn-heyuan' => 'apigateway.cn-heyuan.aliyuncs.com', + ], + 'vod' => + [ + 'cn-shanghai' => 'vod.cn-shanghai.aliyuncs.com', + 'cn-beijing' => 'vod.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'vod.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'vod.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'vod.ap-southeast-1.aliyuncs.com', + 'eu-central-1' => 'vod.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'vod.cn-zhangjiakou.aliyuncs.com', + 'cn-hongkong' => 'vod.cn-hongkong.aliyuncs.com', + 'ap-southeast-5' => 'vod.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'vod.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'vod.eu-west-1.aliyuncs.com', + 'us-west-1' => 'vod.us-west-1.aliyuncs.com', + 'ap-south-1' => 'vod.ap-south-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'vod.cn-north-2-gov-1.aliyuncs.com', + ], + 'afs' => + [ + 'cn-hangzhou' => 'afs.aliyuncs.com', + ], + 'oas' => + [ + 'cn-hangzhou' => 'cn-hangzhou.oas.aliyuncs.com', + 'cn-shenzhen' => 'cn-shenzhen.oas.aliyuncs.com', + 'cn-beijing' => 'cn-beijing.oas.aliyuncs.com', + ], + 'alikafka' => + [ + 'cn-qingdao' => 'alikafka.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'alikafka.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'alikafka.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'alikafka.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'alikafka.cn-shenzhen.aliyuncs.com', + 'cn-zhangjiakou' => 'alikafka.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'alikafka.cn-huhehaote.aliyuncs.com', + 'cn-hongkong' => 'alikafka.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'alikafka.ap-southeast-1.aliyuncs.com', + 'ap-southeast-5' => 'alikafka.ap-southeast-5.aliyuncs.com', + 'ap-south-1' => 'alikafka.ap-south-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'alikafka.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'alikafka.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'alikafka.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-chengdu' => 'alikafka.cn-chengdu.aliyuncs.com', + 'cn-north-2-gov-1' => 'alikafka.cn-north-2-gov-1.aliyuncs.com', + 'cn-heyuan' => 'alikafka.cn-heyuan.aliyuncs.com', + 'ap-southeast-3' => 'alikafka.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'alikafka.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'alikafka.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'alikafka.eu-central-1.aliyuncs.com', + ], + 'cbn' => + [ + 'cn-qingdao' => 'cbn.aliyuncs.com', + 'cn-beijing' => 'cbn.aliyuncs.com', + 'cn-zhangjiakou' => 'cbn.aliyuncs.com', + 'cn-huhehaote' => 'cbn.aliyuncs.com', + 'cn-hangzhou' => 'cbn.aliyuncs.com', + 'cn-shanghai' => 'cbn.aliyuncs.com', + 'cn-shenzhen' => 'cbn.aliyuncs.com', + 'cn-hongkong' => 'cbn.aliyuncs.com', + 'ap-southeast-1' => 'cbn.aliyuncs.com', + 'ap-southeast-2' => 'cbn.aliyuncs.com', + 'ap-southeast-3' => 'cbn.aliyuncs.com', + 'ap-southeast-5' => 'cbn.aliyuncs.com', + 'ap-northeast-1' => 'cbn.aliyuncs.com', + 'eu-west-1' => 'cbn.aliyuncs.com', + 'us-west-1' => 'cbn.aliyuncs.com', + 'us-east-1' => 'cbn.aliyuncs.com', + 'eu-central-1' => 'cbn.aliyuncs.com', + 'me-east-1' => 'cbn.aliyuncs.com', + 'ap-south-1' => 'cbn.aliyuncs.com', + 'cn-chengdu' => 'cbn.aliyuncs.com', + 'cn-shanghai-finance-1' => 'cbn.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'cbn.aliyuncs.com', + 'ap-northeast-2-pop' => 'cbn.aliyuncs.com', + 'cn-beijing-finance-pop' => 'cbn.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'cbn.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'cbn.aliyuncs.com', + 'cn-hangzhou-internal-test-3' => 'cbn.aliyuncs.com', + 'cn-wuhan' => 'cbn.aliyuncs.com', + 'cn-heyuan' => 'cbn.aliyuncs.com', + 'cn-wulanchabu' => 'cbn.aliyuncs.com', + 'cn-north-2-gov-1' => 'cbn.aliyuncs.com', + ], + 'onsvip' => + [ + 'cn-qingdao' => 'ons.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ons.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'ons.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ons.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'ons.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'ons.ap-southeast-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'ons.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'ons.cn-shanghai-finance.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'ons.cn-shenzhen-finance.aliyuncs.com', + ], + 'ddosbgp' => + [ + 'cn-qingdao' => 'ddosbgp.aliyuncs.com', + 'cn-beijing' => 'ddosbgp.aliyuncs.com', + 'cn-zhangjiakou' => 'ddosbgp.aliyuncs.com', + 'cn-huhehaote' => 'ddosbgp.aliyuncs.com', + 'cn-hangzhou' => 'ddosbgp.aliyuncs.com', + 'cn-shanghai' => 'ddosbgp.aliyuncs.com', + 'cn-shenzhen' => 'ddosbgp.aliyuncs.com', + 'cn-hongkong' => 'ddosbgp.cn-hongkong.aliyuncs.com', + 'us-west-1' => 'ddosbgp.us-west-1.aliyuncs.com', + 'ap-southeast-1' => 'ddosbgp.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'ddosbgp.us-east-1.aliyuncs.com', + 'cn-chengdu' => 'ddosbgp.aliyuncs.com', + 'cn-heyuan' => 'ddosbgp.aliyuncs.com', + 'cn-wulanchabu' => 'ddosbgp.aliyuncs.com', + 'ap-southeast-2' => 'ddosbgp.aliyuncs.com', + 'ap-southeast-3' => 'ddosbgp.aliyuncs.com', + 'ap-southeast-5' => 'ddosbgp.aliyuncs.com', + 'ap-northeast-1' => 'ddosbgp.aliyuncs.com', + 'eu-west-1' => 'ddosbgp.aliyuncs.com', + 'eu-central-1' => 'ddosbgp.aliyuncs.com', + 'me-east-1' => 'ddosbgp.aliyuncs.com', + 'ap-south-1' => 'ddosbgp.aliyuncs.com', + ], + 'ehs' => + [ + 'cn-qingdao' => 'ehpc.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ehpc.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'ehpc.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ehpc.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'ehpc.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ehpc.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'ehpc.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'ehpc.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'ehpc.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'ehpc.ap-southeast-2.aliyuncs.com', + 'eu-central-1' => 'ehpc.eu-central-1.aliyuncs.com', + 'ap-northeast-1' => 'ehpc.ap-northeast-1.aliyuncs.com', + ], + 'redisa' => + [ + 'cn-qingdao' => 'r-kvstore.aliyuncs.com', + 'cn-beijing' => 'r-kvstore.aliyuncs.com', + 'cn-zhangjiakou' => 'r-kvstore.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'r-kvstore.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'r-kvstore.aliyuncs.com', + 'cn-shanghai' => 'r-kvstore.aliyuncs.com', + 'cn-shenzhen' => 'r-kvstore.aliyuncs.com', + 'cn-hongkong' => 'r-kvstore.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'r-kvstore.aliyuncs.com', + 'ap-southeast-2' => 'r-kvstore.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'r-kvstore.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'r-kvstore.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'r-kvstore.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'r-kvstore.eu-west-1.aliyuncs.com', + 'us-west-1' => 'r-kvstore.aliyuncs.com', + 'us-east-1' => 'r-kvstore.aliyuncs.com', + 'eu-central-1' => 'r-kvstore.eu-central-1.aliyuncs.com', + 'me-east-1' => 'r-kvstore.me-east-1.aliyuncs.com', + 'ap-south-1' => 'r-kvstore.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'r-kvstore.cn-chengdu.aliyuncs.com', + 'cn-hangzhou-finance' => 'r-kvstore.aliyuncs.com', + 'cn-shanghai-finance-1' => 'r-kvstore.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'r-kvstore.aliyuncs.com', + 'cn-north-2-gov-1' => 'r-kvstore.aliyuncs.com', + 'cn-heyuan' => 'r-kvstore.aliyuncs.com', + 'cn-wulanchabu' => 'r-kvstore.aliyuncs.com', + ], + 'nas' => + [ + 'cn-qingdao' => 'nas.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'nas.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'nas.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'nas.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'nas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'nas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'nas.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'nas.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'nas.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'nas.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'nas.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'nas.ap-southeast-5.aliyuncs.com', + 'us-east-1' => 'nas.us-east-1.aliyuncs.com', + 'eu-central-1' => 'nas.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'nas.ap-south-1.aliyuncs.com', + 'ap-northeast-1' => 'nas.ap-northeast-1.aliyuncs.com', + 'us-west-1' => 'nas.us-west-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'nas.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'nas.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'nas.cn-north-2-gov-1.aliyuncs.com', + 'eu-west-1' => 'nas.eu-west-1.aliyuncs.com', + 'cn-chengdu' => 'nas.cn-chengdu.aliyuncs.com', + 'cn-heyuan' => 'nas.cn-heyuan.aliyuncs.com', + ], + 'hbase' => + [ + 'cn-qingdao' => 'hbase.aliyuncs.com', + 'cn-beijing' => 'hbase.aliyuncs.com', + 'cn-huhehaote' => 'hbase.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'hbase.aliyuncs.com', + 'cn-shanghai' => 'hbase.aliyuncs.com', + 'cn-shenzhen' => 'hbase.aliyuncs.com', + 'ap-southeast-1' => 'hbase.aliyuncs.com', + 'ap-southeast-2' => 'hbase.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'hbase.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'hbase.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'hbase.aliyuncs.com', + 'us-east-1' => 'hbase.aliyuncs.com', + 'eu-central-1' => 'hbase.eu-central-1.aliyuncs.com', + 'me-east-1' => 'hbase.me-east-1.aliyuncs.com', + 'ap-south-1' => 'hbase.ap-south-1.aliyuncs.com', + 'eu-west-1' => 'hbase.eu-west-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'hbase.aliyuncs.com', + 'cn-shanghai-finance-1' => 'hbase.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'hbase.aliyuncs.com', + 'cn-north-2-gov-1' => 'hbase.aliyuncs.com', + 'cn-zhangjiakou' => 'hbase.cn-zhangjiakou.aliyuncs.com', + 'cn-hongkong' => 'hbase.aliyuncs.com', + 'ap-northeast-1' => 'hbase.ap-northeast-1.aliyuncs.com', + ], + 'ddosbasic' => + [ + 'cn-qingdao' => 'antiddos.aliyuncs.com', + 'cn-beijing' => 'antiddos.aliyuncs.com', + 'cn-zhangjiakou' => 'antiddos-openapi.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'antiddos-openapi.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'antiddos.aliyuncs.com', + 'cn-shanghai' => 'antiddos.aliyuncs.com', + 'cn-shenzhen' => 'antiddos.aliyuncs.com', + 'cn-hongkong' => 'antiddos.aliyuncs.com', + 'ap-southeast-1' => 'antiddos.aliyuncs.com', + 'ap-southeast-2' => 'antiddos-openapi.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'antiddos-openapi.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'antiddos-openapi.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'antiddos-openapi.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'antiddos-openapi.eu-west-1.aliyuncs.com', + 'us-west-1' => 'antiddos.aliyuncs.com', + 'us-east-1' => 'antiddos.aliyuncs.com', + 'eu-central-1' => 'antiddos-openapi.eu-central-1.aliyuncs.com', + 'me-east-1' => 'antiddos-openapi.me-east-1.aliyuncs.com', + 'ap-south-1' => 'antiddos-openapi.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'antiddos-openapi.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'antiddos.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'antiddos.aliyuncs.com', + 'cn-north-2-gov-1' => 'antiddos.aliyuncs.com', + 'cn-fujian' => 'antiddos.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'antiddos.aliyuncs.com', + 'cn-heyuan' => 'antiddos-openapi.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'antiddos-openapi.cn-wulanchabu.aliyuncs.com', + ], + 'polardb' => + [ + 'cn-qingdao' => 'polardb.aliyuncs.com', + 'cn-beijing' => 'polardb.aliyuncs.com', + 'cn-huhehaote' => 'polardb.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'polardb.aliyuncs.com', + 'cn-shanghai' => 'polardb.aliyuncs.com', + 'cn-shenzhen' => 'polardb.aliyuncs.com', + 'cn-hongkong' => 'polardb.aliyuncs.com', + 'cn-zhangjiakou' => 'polardb.cn-zhangjiakou.aliyuncs.com', + 'ap-southeast-1' => 'polardb.aliyuncs.com', + 'ap-southeast-3' => 'polardb.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'polardb.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'polardb.aliyuncs.com', + 'cn-hangzhou-finance' => 'polardb.aliyuncs.com', + 'cn-shanghai-finance-1' => 'polardb.aliyuncs.com', + 'eu-central-1' => 'polardb.eu-central-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'polardb.aliyuncs.com', + 'ap-south-1' => 'polardb.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'polardb.cn-chengdu.aliyuncs.com', + 'ap-northeast-1' => 'polardb.ap-northeast-1.aliyuncs.com', + 'us-east-1' => 'polardb.aliyuncs.com', + ], + 'actiontrail' => + [ + 'cn-qingdao' => 'actiontrail.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'actiontrail.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'actiontrail.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'actiontrail.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'actiontrail.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'actiontrail.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'actiontrail.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'actiontrail.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'actiontrail.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'actiontrail.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'actiontrail.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'actiontrail.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'actiontrail.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'actiontrail.eu-west-1.aliyuncs.com', + 'us-west-1' => 'actiontrail.us-west-1.aliyuncs.com', + 'us-east-1' => 'actiontrail.us-east-1.aliyuncs.com', + 'eu-central-1' => 'actiontrail.eu-central-1.aliyuncs.com', + 'me-east-1' => 'actiontrail.me-east-1.aliyuncs.com', + 'ap-south-1' => 'actiontrail.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'actiontrail.cn-chengdu.aliyuncs.com', + 'cn-shanghai-finance-1' => 'actiontrail.cn-shanghai-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'actiontrail.cn-north-2-gov-1.aliyuncs.com', + 'cn-heyuan' => 'actiontrail.cn-heyuan.aliyuncs.com', + ], + 'codepipeline' => + [ + 'cn-beijing' => 'cds.cn-beijing.aliyuncs.com', + ], + 'hcs_sgw' => + [ + 'cn-beijing' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-zhangjiakou' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-shanghai' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-hongkong' => 'sgw.cn-shanghai.aliyuncs.com', + 'ap-southeast-1' => 'sgw.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'sgw.ap-southeast-2.aliyuncs.com', + 'eu-central-1' => 'sgw.eu-central-1.aliyuncs.com', + 'cn-qingdao' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-huhehaote' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-chengdu' => 'sgw.cn-shanghai.aliyuncs.com', + 'ap-southeast-5' => 'sgw.ap-southeast-5.aliyuncs.com', + 'ap-southeast-3' => 'sgw.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'sgw.ap-northeast-1.aliyuncs.com', + 'us-west-1' => 'sgw.us-west-1.aliyuncs.com', + 'us-east-1' => 'sgw.us-west-1.aliyuncs.com', + 'cn-heyuan' => 'sgw.cn-shanghai.aliyuncs.com', + 'cn-north-2-gov-1' => 'sgw.cn-north-2-gov-1.aliyuncs.com', + ], + 'openanalytics' => + [ + 'cn-beijing' => 'openanalytics.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'openanalytics.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'openanalytics.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'openanalytics.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'openanalytics.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'openanalytics.ap-southeast-1.aliyuncs.com', + 'ap-southeast-3' => 'openanalytics.ap-southeast-3.aliyuncs.com', + 'eu-west-1' => 'openanalytics.eu-west-1.aliyuncs.com', + 'cn-hongkong' => 'openanalytics.cn-hongkong.aliyuncs.com', + 'us-west-1' => 'openanalytics.us-west-1.aliyuncs.com', + 'ap-southeast-2' => 'datalakeanalytics.ap-southeast-2.aliyuncs.com', + 'ap-northeast-1' => 'datalakeanalytics.ap-northeast-1.aliyuncs.com', + 'us-east-1' => 'datalakeanalytics.us-east-1.aliyuncs.com', + 'eu-central-1' => 'datalakeanalytics.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'openanalytics.ap-south-1.aliyuncs.com', + 'ap-southeast-5' => 'openanalytics.ap-southeast-5.aliyuncs.com', + ], + 'clouddesktop' => + [ + 'cn-beijing' => 'clouddesktop.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'clouddesktop.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'clouddesktop.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'clouddesktop.cn-shenzhen.aliyuncs.com', + ], + 'ivision' => + [ + 'cn-beijing' => 'ivision.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'ivision.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ivision.cn-shanghai.aliyuncs.com', + ], + 'fc' => + [ + 'cn-beijing' => 'cn-beijing.fc.aliyuncs.com', + 'cn-hangzhou' => 'cn-hangzhou.fc.aliyuncs.com', + 'cn-shanghai' => 'cn-shanghai.fc.aliyuncs.com', + 'cn-shenzhen' => 'cn-shenzhen.fc.aliyuncs.com', + 'ap-southeast-2' => 'ap-southeast-2.fc.aliyuncs.com', + 'cn-huhehaote' => 'cn-huhehaote.fc.aliyuncs.com', + 'cn-qingdao' => 'cn-qingdao.fc.aliyuncs.com', + 'cn-chengdu' => 'cn-chengdu.fc.aliyuncs.com', + 'cn-zhangjiakou' => 'cn-zhangjiakou.fc.aliyuncs.com', + 'cn-hongkong' => 'cn-hongkong.fc.aliyuncs.com', + 'ap-southeast-1' => 'ap-southeast-1.fc.aliyuncs.com', + 'ap-southeast-3' => 'ap-southeast-3.fc.aliyuncs.com', + 'ap-southeast-5' => 'ap-southeast-5.fc.aliyuncs.com', + 'ap-northeast-1' => 'ap-northeast-1.fc.aliyuncs. com', + 'eu-west-1' => 'eu-west-1.fc.aliyuncs.com', + 'us-west-1' => 'us-west-1.fc.aliyuncs.com', + 'us-east-1' => 'us-east-1.fc.aliyuncs.com', + 'eu-central-1' => 'eu-central-1.fc.aliyuncs.com', + 'ap-south-1' => 'ap-south-1.fc.aliyuncs.com', + 'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com', + ], + 'hsm' => + [ + 'cn-beijing' => 'hsm.aliyuncs.com', + 'cn-hangzhou' => 'hsm.aliyuncs.com', + 'cn-shanghai' => 'hsm.aliyuncs.com', + 'cn-shenzhen' => 'hsm.aliyuncs.com', + 'cn-hongkong' => 'hsm.aliyuncs.com', + 'ap-southeast-1' => 'hsm.aliyuncs.com', + 'cn-shanghai-finance-1' => 'hsm.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'hsm.aliyuncs.com', + 'cn-hangzhou-finance' => 'hsm.aliyuncs.com', + 'cn-north-2-gov-1' => 'hsm.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'hsm.aliyuncs.com', + 'cn-heyuan' => 'hsm.aliyuncs.com', + 'ap-southeast-3' => 'hsm.aliyuncs.com', + ], + 'petadata' => + [ + 'cn-beijing' => 'petadata.aliyuncs.com', + 'cn-zhangjiakou' => 'petadata.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'petadata.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'petadata.aliyuncs.com', + 'cn-shanghai' => 'petadata.aliyuncs.com', + 'cn-shenzhen' => 'petadata.aliyuncs.com', + 'ap-southeast-1' => 'petadata.aliyuncs.com', + 'ap-southeast-2' => 'petadata.ap-southeast-2.aliyuncs.com', + 'ap-southeast-5' => 'petadata.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'petadata.aliyuncs.com', + 'us-east-1' => 'petadata.aliyuncs.com', + 'eu-central-1' => 'petadata.eu-central-1.aliyuncs.com', + 'me-east-1' => 'petadata.me-east-1.aliyuncs.com', + 'cn-hongkong' => 'petadata.aliyuncs.com', + 'cn-qingdao' => 'petadata.aliyuncs.com', + 'cn-shanghai-et2-b01' => 'petadata.aliyuncs.com', + 'cn-zhangjiakou-na62-a01' => 'petadata.aliyuncs.com', + ], + 'gpdb' => + [ + 'cn-beijing' => 'gpdb.aliyuncs.com', + 'cn-zhangjiakou' => 'gpdb.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'gpdb.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'gpdb.aliyuncs.com', + 'cn-shanghai' => 'gpdb.aliyuncs.com', + 'cn-shenzhen' => 'gpdb.aliyuncs.com', + 'ap-southeast-1' => 'gpdb.aliyuncs.com', + 'ap-southeast-2' => 'gpdb.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'gpdb.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'gpdb.ap-southeast-5.aliyuncs.com', + 'eu-west-1' => 'gpdb.eu-west-1.aliyuncs.com', + 'us-west-1' => 'gpdb.aliyuncs.com', + 'us-east-1' => 'gpdb.aliyuncs.com', + 'eu-central-1' => 'gpdb.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'gpdb.ap-south-1.aliyuncs.com', + 'ap-northeast-1' => 'gpdb.ap-northeast-1.aliyuncs.com', + 'cn-hongkong' => 'gpdb.aliyuncs.com', + 'cn-chengdu' => 'gpdb.cn-chengdu.aliyuncs.com', + 'cn-hangzhou-finance' => 'gpdb.aliyuncs.com', + 'cn-shanghai-finance-1' => 'gpdb.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'gpdb.aliyuncs.com', + ], + 'eci' => + [ + 'cn-beijing' => 'eci.aliyuncs.com', + 'cn-hangzhou' => 'eci.aliyuncs.com', + 'cn-shanghai' => 'eci.aliyuncs.com', + 'cn-shenzhen' => 'eci.aliyuncs.com', + 'ap-southeast-1' => 'eci.aliyuncs.com', + 'us-west-1' => 'eci.aliyuncs.com', + 'cn-hongkong' => 'eci.aliyuncs.com', + 'cn-zhangjiakou' => 'eci.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'eci.cn-huhehaote.aliyuncs.com', + 'ap-southeast-2' => 'eci.ap-southeast-2.aliyuncs.com', + 'eu-west-1' => 'eci.eu-west-1.aliyuncs.com', + 'us-east-1' => 'eci.aliyuncs.com', + 'eu-central-1' => 'eci.eu-central-1.aliyuncs.com', + 'cn-chengdu' => 'eci.cn-chengdu.aliyuncs.com', + 'ap-southeast-5' => 'eci.ap-southeast-5.aliyuncs.com', + 'ap-south-1' => 'eci.ap-south-1.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'eci.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'eci.aliyuncs.com', + 'cn-qingdao' => 'eci.aliyuncs.com', + 'cn-heyuan' => 'eci.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'eci.cn-wulanchabu.aliyuncs.com', + 'ap-southeast-3' => 'eci.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'eci.ap-northeast-1.aliyuncs.com', + ], + 'airec' => + [ + 'cn-beijing' => 'airec.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'airec.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'airec.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'airec.cn-shenzhen.aliyuncs.com', + ], + 'imm' => + [ + 'cn-beijing' => 'imm.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'imm.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'imm.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'imm.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'imm.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'imm.ap-southeast-1.aliyuncs.com', + ], + 'gameshield' => + [ + 'cn-zhangjiakou' => 'gameshield.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'gameshield.aliyuncs.com', + ], + 'ims' => + [ + 'cn-hangzhou' => 'ims.aliyuncs.com', + ], + 'cloudfirewall' => + [ + 'cn-hangzhou' => 'cloudfw.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'cloudfw.ap-southeast-1.aliyuncs.com', + ], + 'ens' => + [ + 'cn-hangzhou' => 'ens.aliyuncs.com', + 'ap-southeast-1' => 'ens.ap-southeast-1.aliyuncs.com', + 'cn-beijing' => 'ens.aliyuncs.com', + 'cn-chengdu' => 'ens.aliyuncs.com', + 'cn-zhangjiakou' => 'ens.aliyuncs.com', + 'cn-shanghai' => 'ens.aliyuncs.com', + 'cn-heyuan' => 'ens.aliyuncs.com', + 'cn-wulanchabu' => 'ens.aliyuncs.com', + ], + 'hitsdb' => + [ + 'cn-hangzhou' => 'hitsdb.aliyuncs.com', + 'cn-qingdao' => 'hitsdb.aliyuncs.com', + 'cn-beijing' => 'hitsdb.aliyuncs.com', + 'cn-zhangjiakou' => 'hitsdb.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'hitsdb.cn-huhehaote.aliyuncs.com', + 'cn-shanghai' => 'hitsdb.aliyuncs.com', + 'cn-shenzhen' => 'hitsdb.aliyuncs.com', + 'cn-hongkong' => 'hitsdb.aliyuncs.com', + 'ap-southeast-5' => 'hitsdb.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'hitsdb.aliyuncs.com', + 'us-east-1' => 'hitsdb.aliyuncs.com', + 'ap-southeast-1' => 'hitsdb.aliyuncs.com', + 'ap-southeast-2' => 'hitsdb.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'hitsdb.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'hitsdb.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'hitsdb.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'hitsdb.eu-central-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'hitsdb.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'hitsdb.aliyuncs.com', + ], + 'ddos' => + [ + 'cn-hangzhou' => 'ddospro.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'ddospro.cn-hongkong.aliyuncs.com', + ], + 'rtc' => + [ + 'cn-hangzhou' => 'rtc.aliyuncs.com', + ], + 'emas' => + [ + 'cn-hangzhou' => 'mhub.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mhub.cn-shanghai.aliyuncs.com', + ], + 'vipaegis' => + [ + 'cn-hangzhou' => 'aegis.cn-hangzhou.aliyuncs.com', + 'ap-southeast-3' => 'aegis.ap-southeast-3.aliyuncs.com', + ], + 'ddosrewards' => + [ + 'cn-hangzhou' => 'ddosright.cn-hangzhou.aliyuncs.com', + ], + 'cloudap' => + [ + 'cn-hangzhou' => 'cloudwf.aliyuncs.com', + ], + 'ensdisk' => + [ + 'cn-hangzhou' => 'ens.aliyuncs.com', + ], + 'bastionhost' => + [ + 'cn-hangzhou' => 'yundun-bastionhost.aliyuncs.com', + 'cn-qingdao' => 'yundun-bastionhost.aliyuncs.com', + 'cn-beijing' => 'yundun-bastionhost.aliyuncs.com', + 'cn-chengdu' => 'yundun-bastionhost.aliyuncs.com', + 'cn-zhangjiakou' => 'yundun-bastionhost.aliyuncs.com', + 'cn-huhehaote' => 'yundun-bastionhost.aliyuncs.com', + 'cn-shanghai' => 'yundun-bastionhost.aliyuncs.com', + 'cn-shenzhen' => 'yundun-bastionhost.aliyuncs.com', + 'cn-hongkong' => 'bastionhost.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'bastionhost.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'bastionhost.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'bastionhost.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'bastionhost.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'bastionhost.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'bastionhost.eu-west-1.aliyuncs.com', + 'us-west-1' => 'bastionhost.us-west-1.aliyuncs.com', + 'us-east-1' => 'bastionhost.us-east-1.aliyuncs.com', + 'eu-central-1' => 'bastionhost.eu-central-1.aliyuncs.com', + 'me-east-1' => 'yundun-bastionhost.aliyuncs.com', + 'ap-south-1' => 'bastionhost.ap-south-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'yundun-bastionhost.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'yundun-bastionhost.aliyuncs.com', + 'cn-north-2-gov-1' => 'yundun-bastionhost.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'yundun-bastionhost.aliyuncs.com', + 'cn-heyuan' => 'yundun-bastionhost.aliyuncs.com', + ], + 'pvtz' => + [ + 'cn-hangzhou' => 'pvtz.aliyuncs.com', + ], + 'ccs' => + [ + 'cn-hangzhou' => 'ccs.aliyuncs.com', + ], + 'yunmarket' => + [ + 'cn-hangzhou' => 'market.aliyuncs.com', + ], + 'cas' => + [ + 'cn-hangzhou' => 'cas.aliyuncs.com', + 'ap-southeast-2' => 'cas.ap-southeast-2.aliyuncs.com', + 'ap-northeast-1' => 'cas.ap-northeast-1.aliyuncs.com', + 'eu-central-1' => 'cas.eu-central-1.aliyuncs.com', + 'me-east-1' => 'cas.me-east-1.aliyuncs.com', + 'ap-south-1' => 'cas.ap-south-1.aliyuncs.com', + ], + 'ddoscoo' => + [ + 'cn-hangzhou' => 'ddoscoo.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'ddoscoo.ap-southeast-1.aliyuncs.com', + ], + 'waf' => + [ + 'cn-hangzhou' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'cn-qingdao' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-chengdu' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-zhangjiakou' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-heyuan' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-wulanchabu' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'ap-southeast-3' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'ap-southeast-5' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'eu-west-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'us-west-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'eu-central-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'me-east-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'ap-south-1' => 'wafopenapi.ap-southeast-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + 'cn-north-2-gov-1' => 'wafopenapi.cn-hangzhou.aliyuncs.com', + ], + 'xianzhi' => + [ + 'cn-hangzhou' => 'xianzhi.aliyuncs.com', + ], + 'sas' => + [ + 'cn-hangzhou' => 'tds.aliyuncs.com', + 'ap-southeast-3' => 'tds.ap-southeast-3.aliyuncs.com', + ], + 'cloudauth' => + [ + 'cn-hangzhou' => 'cloudauth.aliyuncs.com', + ], + 'dmsenterprise' => + [ + 'cn-hangzhou' => 'dms-enterprise.aliyuncs.com', + 'cn-shanghai' => 'dms-enterprise.aliyuncs.com', + 'cn-shenzhen' => 'dms-enterprise.aliyuncs.com', + 'cn-beijing' => 'dms-enterprise.aliyuncs.com', + 'cn-qingdao' => 'dms-enterprise.aliyuncs.com', + 'ap-northeast-1' => 'dms-enterprise.aliyuncs.com', + 'ap-southeast-1' => 'dms-enterprise.aliyuncs.com', + ], + 'baas' => + [ + 'cn-hangzhou' => 'baas.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'ap-northeast-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'cn-beijing' => 'baas.aliyuncs.com', + 'cn-shanghai' => 'baas.aliyuncs.com', + 'cn-shenzhen' => 'baas.aliyuncs.com', + 'cn-hongkong' => 'baas.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'baas.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'eu-central-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'cn-qingdao' => 'baas.aliyuncs.com', + 'cn-zhangjiakou' => 'baas.aliyuncs.com', + 'cn-huhehaote' => 'baas.aliyuncs.com', + 'eu-west-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'us-west-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'ap-south-1' => 'baas.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'baas.cn-north-2-gov-1.aliyuncs.com', + ], + 'alimt' => + [ + 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', + ], + 'dcdn' => + [ + 'cn-hangzhou' => 'dcdn.aliyuncs.com', + ], + 'hcs_mgw' => + [ + 'cn-hangzhou' => 'mgw.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mgw.cn-shanghai.aliyuncs.com', + 'ap-southeast-1' => 'mgw.ap-southeast-1.aliyuncs.com', + ], + 'linkedmall' => + [ + 'cn-hangzhou' => 'linkedmall.aliyuncs.com', + 'cn-shanghai' => 'linkedmall.aliyuncs.com', + ], + 'cps' => + [ + 'cn-hangzhou' => 'cloudpush.aliyuncs.com', + ], + 'scdn' => + [ + 'cn-hangzhou' => 'scdn.aliyuncs.com', + ], + 'trademark' => + [ + 'cn-hangzhou' => 'trademark.aliyuncs.com', + ], + 'elasticsearch' => + [ + 'cn-hangzhou' => 'elasticsearch.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'elasticsearch.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'elasticsearch.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'elasticsearch.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'elasticsearch.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'elasticsearch.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'elasticsearch.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'elasticsearch.ap-northeast-1.aliyuncs.com', + 'us-west-1' => 'elasticsearch.us-west-1.aliyuncs.com', + 'eu-central-1' => 'elasticsearch.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'elasticsearch.ap-south-1.aliyuncs.com', + 'cn-qingdao' => 'elasticsearch.cn-qingdao.aliyuncs.com', + 'ap-southeast-5' => 'elasticsearch.ap-southeast-5.aliyuncs.com', + 'cn-beijing' => 'elasticsearch.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'elasticsearch.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou-finance' => 'elasticsearch.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'elasticsearch.cn-shanghai-finance-1.aliyuncs.com', + 'us-east-1' => 'elasticsearch.us-east-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'elasticsearch.cn-north-2-gov-1.aliyuncs.com', + 'eu-west-1' => 'elasticsearch.eu-west-1.aliyuncs.com', + ], + 'luban' => + [ + 'cn-hangzhou' => 'luban.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'luban.cn-shanghai.aliyuncs.com', + ], + 'pcdn' => + [ + 'cn-hangzhou' => 'pcdn.aliyuncs.com', + ], + 'uis' => + [ + 'cn-hangzhou' => 'uis.cn-hangzhou.aliyuncs.com', + 'cn-north-2-gov-1' => 'uis.cn-hangzhou.aliyuncs.com', + ], + 'beebot' => + [ + 'cn-hangzhou' => 'chatbot.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'chatbot.cn-shanghai.aliyuncs.com', + 'cn-north-2-gov-1' => 'chatbot.cn-north-2-gov-1.aliyuncs.com', + ], + 'chatbot' => + [ + 'global' => 'chatbot.cn-shanghai.aliyuncs.com', + 'cn-shanghai' => 'chatbot.cn-shanghai.aliyuncs.com', + ], + 'alidnsgtm' => + [ + 'cn-hangzhou' => 'alidns.aliyuncs.com', + ], + 'sca' => + [ + 'cn-hangzhou' => 'qualitycheck.cn-hangzhou.aliyuncs.com', + ], + 'cccvn' => + [ + 'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com', + ], + 'cloudphoto' => + [ + 'cn-shanghai' => 'cloudphoto.cn-shanghai.aliyuncs.com', + ], + 'smartag' => + [ + 'cn-shanghai' => 'smartag.cn-shanghai.aliyuncs.com', + 'cn-hongkong' => 'smartag.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'smartag.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'smartag.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'smartag.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'smartag.ap-southeast-5.aliyuncs.com', + 'eu-central-1' => 'smartag.eu-central-1.aliyuncs.com', + 'ap-northeast-1' => 'smartag.ap-northeast-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'smartag.cn-shanghai-finance-1.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'smartag.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'smartag.aliyuncs.com', + 'eu-west-1' => 'smartag.eu-west-1.aliyuncs.com', + 'us-east-1' => 'smartag.us-east-1.aliyuncs.com', + ], + 'nlp' => + [ + 'cn-shanghai' => 'nlp.cn-shanghai.aliyuncs.com', + ], + 'nls-cloud-meta' => + [ + 'cn-shanghai' => 'nls-meta.cn-shanghai.aliyuncs.com', + ], + 'nls-filetrans' => + [ + 'cn-shanghai' => 'filetrans.cn-shanghai.aliyuncs.com', + ], + 'linkwan' => + [ + 'cn-shanghai' => 'linkwan.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'linkwan.cn-hangzhou.aliyuncs.com', + ], + 'hdm' => + [ + 'cn-shanghai' => 'hdm-api.aliyuncs.com', + ], + 'iovcc' => + [ + 'cn-shanghai' => 'iovcc.cn-shanghai.aliyuncs.com', + ], + 'ddosdip' => + [ + 'ap-southeast-1' => 'ddosdip.ap-southeast-1.aliyuncs.com', + ], + 'imagesearch' => + [ + 'ap-southeast-1' => 'imagesearch.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'imagesearch.ap-southeast-2.aliyuncs.com', + 'ap-northeast-1' => 'imagesearch.ap-northeast-1.aliyuncs.com', + 'cn-shanghai' => 'imagesearch.cn-shanghai.aliyuncs.com', + ], + 'alidfs' => + [ + 'cn-beijing' => 'dfs.cn-beijing.aliyuncs.com', + 'cn-shanghai' => 'dfs.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'dfs.cn-hangzhou.aliyuncs.com', + 'cn-zhangjiakou' => 'dfs.cn-zhangjiakou.aliyuncs.com', + ], + 'vs' => + [ + 'cn-hangzhou' => 'vs.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'vs.cn-shanghai.aliyuncs.com', + 'cn-qingdao' => 'vs.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'vs.cn-beijing.aliyuncs.com', + 'cn-shenzhen' => 'vs.cn-shenzhen.aliyuncs.com', + ], + 'foas' => + [ + 'cn-qingdao' => 'foas.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'foas.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'foas.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'foas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'foas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'foas.cn-shenzhen.aliyuncs.com', + 'ap-northeast-1' => 'foas.ap-northeast-1.aliyuncs.com', + 'ap-southeast-1' => 'foas.ap-southeast-1.aliyuncs.com', + 'ap-southeast-3' => 'foas.ap-southeast-3.aliyuncs.com', + 'cn-hangzhou-finance' => 'foas.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'foas.cn-shanghai-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'foas.cn-north-2-gov-1.aliyuncs.com', + 'cn-hongkong' => 'foas.cn-hongkong.aliyuncs.com', + 'eu-central-1' => 'foas.eu-central-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'foas.cn-shenzhen-finance-1.aliyuncs.com', + ], + 'iotid' => + [ + 'cn-hangzhou' => 'iotid.cn-hangzhou.aliyuncs.com', + ], + 'drdspost' => + [ + 'ap-southeast-1' => 'drds.ap-southeast-1.aliyuncs.com', + 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', + 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', + 'us-east-1' => 'drds.us-east-1.aliyuncs.com', + ], + 'drdspre' => + [ + 'cn-qingdao' => 'drds.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'drds.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'drds.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', + 'us-east-1' => 'drds.us-east-1.aliyuncs.com', + ], + 'acr' => + [ + 'cn-qingdao' => 'cr.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'cr.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'cr.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'cr.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'cr.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'cr.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'cr.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'cr.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'cr.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'cr.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'cr.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'cr.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'cr.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'cr.eu-west-1.aliyuncs.com', + 'us-west-1' => 'cr.us-west-1.aliyuncs.com', + 'us-east-1' => 'cr.us-east-1.aliyuncs.com', + 'eu-central-1' => 'cr.eu-central-1.aliyuncs.com', + 'me-east-1' => 'cr.me-east-1.aliyuncs.com', + 'ap-south-1' => 'cr.ap-south-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'cr.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'cr.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'cr.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'cr.cn-north-2-gov-1.aliyuncs.com', + 'cn-chengdu' => 'cr.cn-chengdu.aliyuncs.com', + ], + 'faas' => + [ + 'cn-beijing' => 'faas.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'faas.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'faas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'faas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'faas.cn-shenzhen.aliyuncs.com', + 'ap-southeast-5' => 'faas.ap-southeast-5.aliyuncs.com', + 'cn-shanghai-finance-1' => 'faas.cn-shanghai-finance-1.aliyuncs.com', + 'cn-chengdu' => 'faas.cn-chengdu.aliyuncs.com', + 'cn-heyuan' => 'faas.cn-heyuan.aliyuncs.com', + 'us-west-1' => 'faas.us-west-1.aliyuncs.com', + ], + 'idaas' => + [ + 'cn-hangzhou' => 'idaas.aliyuncs.com', + 'cn-qingdao' => 'idaas.aliyuncs.com', + 'cn-beijing' => 'idaas.aliyuncs.com', + 'cn-chengdu' => 'idaas.aliyuncs.com', + 'cn-zhangjiakou' => 'idaas.aliyuncs.com', + 'cn-huhehaote' => 'idaas.aliyuncs.com', + 'cn-shanghai' => 'idaas.aliyuncs.com', + 'cn-shenzhen' => 'idaas.aliyuncs.com', + 'cn-hongkong' => 'idaas.aliyuncs.com', + 'cn-shanghai-finance-1' => 'idaas.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'idaas.aliyuncs.com', + 'ap-southeast-1' => 'idaas.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'idaas.aliyuncs.com', + ], + 'privatelink' => + [ + 'cn-hangzhou' => 'privatelink-center.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'privatelink.cn-huhehaote.aliyuncs.com', + 'eu-west-1' => 'privatelink.eu-west-1.aliyuncs.com', + 'ap-southeast-2' => 'privatelink.ap-southeast-2.aliyuncs.com', + 'ap-southeast-5' => 'privatelink.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'privatelink.ap-northeast-1.aliyuncs.com', + 'ap-south-1' => 'privatelink.ap-south-1.aliyuncs.com', + 'cn-shenzhen' => 'privatelink.cn-shenzhen.aliyuncs.com', + 'eu-central-1' => 'privatelink.eu-central-1.aliyuncs.com', + 'cn-zhangjiakou' => 'privatelink.cn-zhangjiakou.aliyuncs.com', + 'ap-southeast-3' => 'privatelink.ap-southeast-3.aliyuncs.com', + 'cn-hangzhou-internal-test-1' => 'privatelink.aliyuncs.com', + 'cn-hangzhou-test-306' => 'privatelink-center.cn-hangzhou.aliyuncs.com', + 'cn-chengdu' => 'privatelink.cn-chengdu.aliyuncs.com', + 'ap-southeast-1' => 'privatelink.ap-southeast-1.aliyuncs.com', + ], + 'batchcomputenew' => + [ + 'cn-hongkong' => 'batchcompute.cn-hongkong.aliyuncs.com', + ], + 'vcs' => + [ + 'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'vcs.cn-shanghai.aliyuncs.com', + ], + 'vds' => + [ + 'cn-hangzhou' => 'vds.aliyuncs.com', + 'cn-shanghai' => 'vds.cn-shanghai.aliyuncs.com', + ], + 'vcsbasic' => + [ + 'cn-hangzhou' => 'vcs.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'vcs.cn-hangzhou.aliyuncs.com', + ], + 'hbr' => + [ + 'cn-qingdao' => 'hbr.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'hbr.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'hbr.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'hbr.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'hbr.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'hbr.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'hbr.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'hbr.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'hbr.ap-southeast-2.aliyuncs.com', + 'cn-hongkong' => 'hbr.cn-hongkong.aliyuncs.com', + 'ap-southeast-5' => 'hbr.ap-southeast-5.aliyuncs.com', + 'ap-southeast-3' => 'hbr.ap-southeast-3.aliyuncs.com', + 'us-west-1' => 'hbr.us-west-1.aliyuncs.com', + 'eu-central-1' => 'hbr.eu-central-1.aliyuncs.com', + 'ap-northeast-1' => 'hbr.ap-northeast-1.aliyuncs.com', + 'cn-chengdu' => 'hbr.cn-chengdu.aliyuncs.com', + 'us-east-1' => 'hbr.us-east-1.aliyuncs.com', + 'ap-south-1' => 'hbr.ap-south-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'hbr.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'hbr.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'hbr.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'hbr.cn-north-2-gov-1.aliyuncs.com', + ], + 'image' => + [ + 'cn-shanghai' => 'image.cn-shanghai.aliyuncs.com', + ], + 'webx' => + [ + 'cn-shenzhen' => 'webplus.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'webplus.cn-hangzhou.aliyuncs.com', + 'cn-zhangjiakou' => 'webplus.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'webplus.cn-hangzhou.aliyuncs.com', + 'cn-hangzhou' => 'webplus.cn-hangzhou.aliyuncs.com', + ], + 'sddp' => + [ + 'cn-zhangjiakou' => 'sddp.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'sddp.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'sddp.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'sddp.cn-north-2-gov-1.aliyuncs.com', + ], + 'oos' => + [ + 'cn-hangzhou' => 'oos.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'oos.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'oos.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'oos.cn-hongkong.aliyuncs.com', + 'us-east-1' => 'oos.us-east-1.aliyuncs.com', + 'cn-beijing' => 'oos.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'oos.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'oos.cn-huhehaote.aliyuncs.com', + 'eu-west-1' => 'oos.eu-west-1.aliyuncs.com', + 'eu-central-1' => 'oos.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'oos.ap-south-1.aliyuncs.com', + 'cn-chengdu' => 'oos.cn-chengdu.aliyuncs.com', + 'ap-southeast-1' => 'oos.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'oos.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'oos.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'oos.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'oos.ap-northeast-1.aliyuncs.com', + ], + 'fnf' => + [ + 'cn-hangzhou' => 'cn-hangzhou.fnf.aliyuncs.com', + 'cn-shanghai' => 'cn-shanghai.fnf.aliyuncs.com', + 'cn-shenzhen' => 'cn-shenzhen.fnf.aliyuncs.com', + 'cn-beijing' => 'cn-beijing.fnf.aliyuncs.com', + ], + 'smc' => + [ + 'cn-huhehaote' => 'smc.aliyuncs.com', + 'cn-hangzhou' => 'smc.aliyuncs.com', + 'cn-qingdao' => 'smc.aliyuncs.com', + 'cn-beijing' => 'smc.aliyuncs.com', + 'cn-zhangjiakou' => 'smc.aliyuncs.com', + 'cn-shanghai' => 'smc.aliyuncs.com', + 'cn-shenzhen' => 'smc.aliyuncs.com', + 'cn-hongkong' => 'smc.aliyuncs.com', + 'ap-southeast-1' => 'smc.aliyuncs.com', + 'ap-southeast-2' => 'smc.aliyuncs.com', + 'ap-southeast-3' => 'smc.aliyuncs.com', + 'ap-southeast-5' => 'smc.aliyuncs.com', + 'ap-northeast-1' => 'smc.aliyuncs.com', + 'eu-west-1' => 'smc.aliyuncs.com', + 'us-west-1' => 'smc.aliyuncs.com', + 'us-east-1' => 'smc.aliyuncs.com', + 'eu-central-1' => 'smc.aliyuncs.com', + 'me-east-1' => 'smc.aliyuncs.com', + 'ap-south-1' => 'smc.aliyuncs.com', + 'cn-chengdu' => 'smc.aliyuncs.com', + ], + 'foasconsole' => + [ + 'cn-beijing' => 'foasconsole.aliyuncs.com', + 'cn-zhangjiakou' => 'foasconsole.aliyuncs.com', + 'cn-hangzhou' => 'foasconsole.aliyuncs.com', + 'cn-shanghai' => 'foasconsole.aliyuncs.com', + 'cn-shenzhen' => 'foasconsole.aliyuncs.com', + 'cn-hongkong' => 'foasconsole.aliyuncs.com', + 'ap-southeast-1' => 'foasconsole.aliyuncs.com', + 'ap-southeast-3' => 'foasconsole.aliyuncs.com', + 'ap-northeast-1' => 'foasconsole.aliyuncs.com', + 'cn-hangzhou-finance' => 'foasconsole.aliyuncs.com', + 'cn-shanghai-finance-1' => 'foasconsole.aliyuncs.com', + 'cn-north-2-gov-1' => 'foasconsole.aliyuncs.com', + 'eu-central-1' => 'foasconsole.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'foasconsole.aliyuncs.com', + ], + 'serverless' => + [ + 'cn-beijing' => 'sae.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'sae.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'sae.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'sae.cn-shenzhen.aliyuncs.com', + 'us-west-1' => 'sae.us-west-1.aliyuncs.com', + ], + 'ivpd' => + [ + 'cn-huhehaote' => 'ivpd.cn-huhehaote.aliyuncs.com', + 'cn-shanghai' => 'ivpd.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'ivpd.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'ivpd.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'ivpd.cn-zhangjiakou.aliyuncs.com', + 'cn-hongkong' => 'ivpd.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'ivpd.ap-southeast-1.aliyuncs.com', + ], + 'hivisengine' => + [ + 'cn-huhehaote' => 'hivisengine.aliyuncs.com', + 'cn-shanghai' => 'hivisengine.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'hivisengine.cn-hangzhou.aliyuncs.com', + ], + 'hiknoengine' => + [ + 'cn-huhehaote' => 'hiknoengine.aliyuncs.com', + 'cn-shanghai' => 'hiknoengine.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'hiknoengine.cn-hangzhou.aliyuncs.com', + ], + 'clouddev' => + [ + 'cn-hangzhou' => 'mpserverless.aliyuncs.com', + 'cn-shanghai' => 'mpserverless.aliyuncs.com', + ], + 'premiumpics' => + [ + 'cn-hangzhou' => 'premiumpics.aliyuncs.com', + ], + 'composer' => + [ + 'cn-hangzhou' => 'composer.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'composer.cn-shanghai.aliyuncs.com', + 'us-east-1' => 'composer.us-east-1.aliyuncs.com', + 'ap-southeast-1' => 'composer.ap-southeast-1.aliyuncs.com', + ], + 'cloudesl' => + [ + 'cn-hangzhou' => 'cloudesl.cn-hangzhou.aliyuncs.com', + ], + 'amscloudapp' => + [ + 'cn-hangzhou' => 'mpca.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mpca.cn-shanghai.aliyuncs.com', + ], + 'mse' => + [ + 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', + 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', + 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', + 'us-east-1' => 'mse.us-east-1.aliyuncs.com', + 'ap-southeast-1' => 'mse.ap-southeast-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'msefinance-share.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'msefinance-share.cn-shenzhen-finance-1.aliyuncs.com', + ], + 'dg' => + [ + 'cn-hangzhou' => 'dg.cn-hangzhou.aliyuncs.com', + ], + 'graphcompute' => + [ + 'cn-shanghai' => 'gcs.cn-shanghai.aliyuncs.com', + ], + 'cds' => + [ + 'ap-southeast-1' => 'cassandra.aliyuncs.com', + 'cn-qingdao' => 'cassandra.aliyuncs.com', + 'cn-beijing' => 'cassandra.aliyuncs.com', + 'cn-hangzhou' => 'cassandra.aliyuncs.com', + 'cn-shanghai' => 'cassandra.aliyuncs.com', + 'cn-shenzhen' => 'cassandra.aliyuncs.com', + 'cn-hongkong' => 'cassandra.aliyuncs.com', + 'cn-chengdu' => 'cassandra.aliyuncs.com', + 'cn-zhangjiakou' => 'cassandra.aliyuncs.com', + 'cn-huhehaote' => 'cassandra.aliyuncs.com', + 'ap-southeast-2' => 'cassandra.aliyuncs.com', + 'ap-southeast-3' => 'cassandra.aliyuncs.com', + 'ap-southeast-5' => 'cassandra.aliyuncs.com', + 'eu-west-1' => 'cassandra.aliyuncs.com', + 'us-west-1' => 'cassandra.aliyuncs.com', + 'us-east-1' => 'cassandra.aliyuncs.com', + 'eu-central-1' => 'cassandra.aliyuncs.com', + 'me-east-1' => 'cassandra.aliyuncs.com', + 'ap-south-1' => 'cassandra.aliyuncs.com', + 'ap-northeast-1' => 'cassandra.aliyuncs.com', + ], + 'ads' => + [ + 'cn-qingdao' => 'adb.aliyuncs.com', + 'cn-beijing' => 'adb.aliyuncs.com', + 'cn-zhangjiakou' => 'adb.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'adb.aliyuncs.com', + 'cn-shanghai' => 'adb.aliyuncs.com', + 'cn-shenzhen' => 'adb.aliyuncs.com', + 'cn-hongkong' => 'adb.aliyuncs.com', + 'ap-southeast-1' => 'adb.aliyuncs.com', + 'ap-northeast-1' => 'adb.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'adb.eu-west-1.aliyuncs.com', + 'us-west-1' => 'adb.aliyuncs.com', + 'us-east-1' => 'adb.aliyuncs.com', + 'ap-southeast-2' => 'adb.ap-southeast-2.aliyuncs.com', + 'eu-central-1' => 'adb.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'adb.ap-south-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'adb.aliyuncs.com', + 'cn-chengdu' => 'adb.cn-chengdu.aliyuncs.com', + 'cn-huhehaote' => 'adb.cn-huhehaote.aliyuncs.com', + 'ap-southeast-3' => 'adb.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'adb.ap-southeast-5.aliyuncs.com', + 'cn-hangzhou-finance' => 'adb.aliyuncs.com', + 'cn-shanghai-finance-1' => 'adb.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'adb.aliyuncs.com', + ], + 'csb' => + [ + 'cn-beijing' => 'csb.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'csb.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'csb.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'csb.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'csb.cn-hongkong.aliyuncs.com', + 'cn-north-2-gov-1' => 'csb.cn-north-2-gov-1.aliyuncs.com', + ], + 'cityvisual' => + [ + 'cn-hangzhou' => 'cityvisual.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'cityvisual.cn-shanghai.aliyuncs.com', + ], + 'dbaudit' => + [ + 'cn-hangzhou' => 'yundun-dbaudit.aliyuncs.com', + 'cn-qingdao' => 'yundun-dbaudit.aliyuncs.com', + 'cn-beijing' => 'yundun-dbaudit.aliyuncs.com', + 'cn-zhangjiakou' => 'yundun-dbaudit.aliyuncs.com', + 'cn-huhehaote' => 'yundun-dbaudit.aliyuncs.com', + 'cn-shanghai' => 'yundun-dbaudit.aliyuncs.com', + 'cn-shenzhen' => 'yundun-dbaudit.aliyuncs.com', + 'cn-hongkong' => 'yundun-dbaudit.aliyuncs.com', + 'ap-southeast-1' => 'yundun-dbaudit.aliyuncs.com', + 'ap-southeast-2' => 'yundun-dbaudit.aliyuncs.com', + 'ap-southeast-3' => 'yundun-dbaudit.aliyuncs.com', + 'ap-southeast-5' => 'yundun-dbaudit.aliyuncs.com', + 'ap-northeast-1' => 'yundun-dbaudit.aliyuncs.com', + 'us-west-1' => 'yundun-dbaudit.aliyuncs.com', + 'us-east-1' => 'yundun-dbaudit.aliyuncs.com', + 'eu-central-1' => 'yundun-dbaudit.aliyuncs.com', + 'me-east-1' => 'yundun-dbaudit.aliyuncs.com', + 'ap-south-1' => 'yundun-dbaudit.aliyuncs.com', + 'cn-shanghai-finance-1' => 'yundun-dbaudit.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'yundun-dbaudit.aliyuncs.com', + 'cn-north-2-gov-1' => 'yundun-dbaudit.aliyuncs.com', + 'cn-chengdu' => 'yundun-dbaudit.aliyuncs.com', + 'eu-west-1' => 'yundun-dbaudit.aliyuncs.com', + 'cn-huhehaote-nebula-1' => 'yundun-dbaudit.aliyuncs.com', + ], + 'bssopenapi' => + [ + 'cn-hangzhou' => 'business.aliyuncs.com', + 'cn-shanghai' => 'business.aliyuncs.com', + 'ap-southeast-1' => 'business.ap-southeast-1.aliyuncs.com', + ], + 'indvi' => + [ + 'cn-hangzhou' => 'indvi.cn-hangzhou.aliyuncs.com', + ], + 'swcopyright' => + [ + 'cn-hangzhou' => 'copyright.aliyuncs.com', + ], + 'multimediaai' => + [ + 'cn-beijing' => 'multimediaai.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'multimediaai.cn-hangzhou.aliyuncs.com', + ], + 'rsimganalys' => + [ + 'cn-hangzhou' => 'rsimganalys.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'rsimganalys.cn-shanghai.aliyuncs.com', + ], + 'tdsr' => + [ + 'cn-hangzhou' => 'lyj.cn-hangzhou.aliyuncs.com', + ], + 'eslogstash' => + [ + 'cn-qingdao' => 'elasticsearch.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'elasticsearch.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'elasticsearch.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'elasticsearch.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'elasticsearch.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'elasticsearch.cn-shenzhen.aliyuncs.com', + ], + 'vcoverimage' => + [ + 'cn-beijing' => 'vcoverimage.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'vcoverimage.cn-hangzhou.aliyuncs.com', + ], + 'ahas' => + [ + 'cn-beijing' => 'ahas.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'ahas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ahas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'ahas.cn-shenzhen.aliyuncs.com', + 'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com', + ], + 'vstruction' => + [ + 'cn-beijing' => 'vstruction.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'vstruction.cn-hangzhou.aliyuncs.com', + ], + 'vcovergif' => + [ + 'cn-beijing' => 'vcovergif.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'vcovergif.cn-hangzhou.aliyuncs.com', + ], + 'aiccs' => + [ + 'cn-hangzhou' => 'aiccs.aliyuncs.com', + ], + 'nls' => + [ + 'cn-shanghai' => 'nls-slp.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'nls-slp.cn-shanghai.aliyuncs.com', + ], + 'antcloudauth' => + [ + 'cn-shanghai' => 'antcloudauth.cn-shanghai.aliyuncs.com', + ], + 'prepaid_ads' => + [ + 'cn-hangzhou-finance' => 'ads.cn-hangzhou-finance.aliyuncs.com', + 'cn-beijing' => 'ads.cn-beijing.aliyuncs.com', + 'cn-chengdu' => 'ads.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'ads.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'ads.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'ads.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'ads.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'ads.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'ads.ap-southeast-1.aliyuncs.com', + 'ap-southeast-3' => 'ads.ap-southeast-3.aliyuncs.com', + 'ap-northeast-1' => 'ads-share.ap-northeast-1.aliyuncs.com', + 'us-west-1' => 'ads.us-west-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'ads.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'ads.cn-north-2-gov-1.aliyuncs.com', + ], + 'hdr' => + [ + 'cn-qingdao' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-beijing' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-zhangjiakou' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-hangzhou' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-shanghai' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-hongkong' => 'hdr.cn-shanghai.aliyuncs.com', + 'cn-chengdu' => 'hdr.cn-shanghai.aliyuncs.com', + ], + 'cbs' => + [ + 'cn-qingdao' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-beijing' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-zhangjiakou' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-huhehaote' => 'dbs-api.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-hongkong' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'dbs-api.ap-southeast-1.aliyuncs.com', + 'ap-northeast-1' => 'dbs-api.ap-northeast-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shanghai-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'cn-chengdu' => 'dbs-api.cn-chengdu.aliyuncs.com', + 'ap-southeast-2' => 'dbs-api.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'dbs-api.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'dbs-api.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'us-east-1' => 'dbs-api.cn-hangzhou.aliyuncs.com', + 'eu-central-1' => 'dbs-api.eu-central-1.aliyuncs.com', + ], + 'datag' => + [ + 'cn-beijing' => 'datag.cn-beijing.aliyuncs.com', + ], + 'retailir' => + [ + 'cn-hangzhou' => 'retailir.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'retailir.cn-shanghai.aliyuncs.com', + ], + 'mpaas' => + [ + 'cn-hangzhou' => 'mpaas.aliyuncs.com', + ], + 'iqa' => + [ + 'cn-hangzhou' => 'iqa.cn-hangzhou.aliyuncs.com', + ], + 'sofa' => + [ + 'cn-hangzhou' => 'sofa.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', + 'cn-hangzhou-finance' => 'sofa.cn-shanghai.aliyuncs.com', + ], + 'edas' => + [ + 'cn-hangzhou' => 'edas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'edas.cn-shanghai.aliyuncs.com', + 'cn-qingdao' => 'edas.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'edas.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'edas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'edas.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'edas.cn-shanghai.aliyuncs.com', + 'ap-southeast-1' => 'edas.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'edas.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'edas.ap-southeast-1.aliyuncs.com', + 'eu-central-1' => 'edas.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'edas.cn-shanghai.aliyuncs.com', + ], + 'gwsservice' => + [ + 'cn-shanghai' => 'gws.cn-shanghai.aliyuncs.com', + 'cn-beijing' => 'gws.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'gws.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'gws.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen' => 'gws.cn-shenzhen.aliyuncs.com', + 'cn-chengdu' => 'gws.cn-chengdu.aliyuncs.com', + 'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com', + 'cn-hongkong' => 'gws.cn-hongkong.aliyuncs.com', + 'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com', + 'us-west-1' => 'gws.us-west-1.aliyuncs.com', + 'us-east-1' => 'gws.us-east-1.aliyuncs.com', + 'eu-central-1' => 'gws.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'gws.ap-south-1.aliyuncs.com', + 'cn-qingdao' => 'gws.cn-qingdao.aliyuncs.com', + 'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com', + 'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'gws.eu-west-1.aliyuncs.com', + ], + 'gds' => + [ + 'ap-southeast-1' => 'gdb-api.aliyuncs.com', + 'cn-beijing' => 'gdb-api.aliyuncs.com', + 'cn-zhangjiakou' => 'gdb-api.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'gdb-api.aliyuncs.com', + 'cn-shanghai' => 'gdb-api.aliyuncs.com', + 'cn-shenzhen' => 'gdb-api.aliyuncs.com', + 'ap-southeast-5' => 'gdb-api.ap-southeast-5.aliyuncs.com', + 'cn-qingdao' => 'gdb-api.aliyuncs.com', + 'cn-chengdu' => 'gdb-api.cn-chengdu.aliyuncs.com', + 'cn-huhehaote' => 'gdb-api.cn-huhehaote.aliyuncs.com', + 'cn-hongkong' => 'gdb-api.aliyuncs.com', + 'ap-southeast-2' => 'gdb-api.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'gdb-api.ap-southeast-3.aliyuncs.com', + 'eu-west-1' => 'gdb-api.eu-west-1.aliyuncs.com', + 'us-west-1' => 'gdb-api.aliyuncs.com', + 'us-east-1' => 'gdb-api.aliyuncs.com', + 'eu-central-1' => 'gdb-api.eu-central-1.aliyuncs.com', + 'me-east-1' => 'gdb-api.me-east-1.aliyuncs.com', + 'ap-south-1' => 'gdb-api.ap-south-1.aliyuncs.com', + ], + 'eais' => + [ + 'cn-beijing' => 'eais.cn-beijing.aliyuncs.com', + 'cn-shenzhen' => 'eais.cn-shenzhen.aliyuncs.com', + ], + 'clickhouse' => + [ + 'cn-beijing' => 'clickhouse.aliyuncs.com', + 'cn-hangzhou' => 'clickhouse.aliyuncs.com', + 'cn-shanghai' => 'clickhouse.aliyuncs.com', + 'cn-shenzhen' => 'clickhouse.aliyuncs.com', + 'ap-southeast-1' => 'clickhouse.aliyuncs.com', + ], + 'msepost' => + [ + 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', + 'us-east-1' => 'mse.us-east-1.aliyuncs.com', + ], + 'visionai' => + [ + 'cn-beijing' => 'visionai.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'visionai.cn-hangzhou.aliyuncs.com', + ], + 'mseprepaid' => + [ + 'cn-beijing' => 'mse.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'mse.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'mse.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'mse.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'mse.cn-shenzhen.aliyuncs.com', + 'us-east-1' => 'mse.us-east-1.aliyuncs.com', + ], + 'adam' => + [ + 'cn-beijing' => 'adam.cn-beijing.aliyuncs.com', + ], + 'onsmqtt' => + [ + 'cn-beijing' => 'onsmqtt.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'onsmqtt.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'onsmqtt.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'onsmqtt.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'onsmqtt.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'onsmqtt.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'onsmqtt.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'onsmqtt.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'onsmqtt.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'onsmqtt.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'onsmqtt.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'onsmqtt.us-west-1.aliyuncs.com', + 'eu-central-1' => 'onsmqtt.eu-central-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'onsmqtt.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'onsmqtt.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-qingdao' => 'onsmqtt.cn-qingdao.aliyuncs.com', + 'ap-northeast-1' => 'onsmqtt.ap-northeast-1.aliyuncs.com', + 'cn-chengdu' => 'onsmqtt.cn-chengdu.aliyuncs.com', + 'us-east-1' => 'onsmqtt.us-east-1.aliyuncs.com', + 'ap-south-1' => 'onsmqtt.ap-south-1.aliyuncs.com', + ], + 'dypls' => + [ + 'cn-hangzhou' => 'dyplsapi.aliyuncs.com', + ], + 'resourcemanager' => + [ + 'cn-hangzhou' => 'resourcemanager.aliyuncs.com', + 'cn-shanghai' => 'resourcemanager.aliyuncs.com', + ], + 'nlpautoml' => + [ + 'cn-hangzhou' => 'nlp-automl.cn-hangzhou.aliyuncs.com', + ], + 'companyreg' => + [ + 'cn-hangzhou' => 'companyreg.aliyuncs.com', + ], + 'aliyuncvc' => + [ + 'cn-hangzhou' => 'aliyuncvc.cn-hangzhou.aliyuncs.com', + ], + 'alimtautoml' => + [ + 'cn-hangzhou' => 'alimtautoml.cn-hangzhou.aliyuncs.com', + ], + 'dbfs' => + [ + 'cn-hangzhou' => 'dbfs.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'dbfs.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'dbfs.cn-beijing.aliyuncs.com', + 'cn-chengdu' => 'dbfs.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'dbfs.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'dbfs.cn-huhehaote.aliyuncs.com', + 'cn-shanghai' => 'dbfs.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'dbfs.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'dbfs.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'dbfs.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'dbfs.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'dbfs.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'dbfs.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'dbfs.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'dbfs.eu-west-1.aliyuncs.com', + 'us-west-1' => 'dbfs.us-west-1.aliyuncs.com', + 'us-east-1' => 'dbfs.us-east-1.aliyuncs.com', + 'eu-central-1' => 'dbfs.eu-central-1.aliyuncs.com', + 'me-east-1' => 'dbfs.me-east-1.aliyuncs.com', + 'ap-south-1' => 'dbfs.ap-south-1.aliyuncs.com', + 'cn-heyuan' => 'dbfs.cn-heyuan.aliyuncs.com', + ], + 'addrp' => + [ + 'cn-hangzhou' => 'address-purification.cn-hangzhou.aliyuncs.com', + ], + 'gaplus' => + [ + 'cn-hangzhou' => 'ga.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'ga.cn-hangzhou.aliyuncs.com', + ], + 'datav' => + [ + 'cn-hangzhou' => 'datav.cn-hangzhou.aliyuncs.com', + ], + 'ocr' => + [ + 'cn-shanghai' => 'ocr.cn-shanghai.aliyuncs.com', + ], + 'objectdet' => + [ + 'cn-shanghai' => 'objectdet.cn-shanghai.aliyuncs.com', + ], + 'assetservice' => + [ + 'cn-shanghai' => 'assettech.cn-shanghai.aliyuncs.com', + ], + 'imageenhan' => + [ + 'cn-shanghai' => 'imageenhan.cn-shanghai.aliyuncs.com', + ], + 'imageaudit' => + [ + 'cn-shanghai' => 'imageaudit.cn-shanghai.aliyuncs.com', + ], + 'imagerecog' => + [ + 'cn-shanghai' => 'imagerecog.cn-shanghai.aliyuncs.com', + ], + 'imageseg' => + [ + 'cn-shanghai' => 'imageseg.cn-shanghai.aliyuncs.com', + ], + 'goodstech' => + [ + 'cn-shanghai' => 'goodstech.cn-shanghai.aliyuncs.com', + ], + 'facebody' => + [ + 'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com', + ], + 'voicebot' => + [ + 'cn-hangzhou' => 'voicenavigator.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'voicenavigator.cn-shanghai.aliyuncs.com', + ], + 'dyiot' => + [ + 'cn-hangzhou' => 'dyiotapi.aliyuncs.com', + ], + 'drp' => + [ + 'cn-hangzhou' => 'drp-share.cn-hangzhou.aliyuncs.com', + ], + 'uem' => + [ + 'cn-hangzhou' => 'uem.aliyuncs.com', + ], + 'outboundbot' => + [ + 'cn-hangzhou' => 'outboundbot.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'outboundbot.cn-shanghai.aliyuncs.com', + ], + 'hcs_hgw' => + [ + 'cn-shanghai' => 'hgw.cn-shanghai.aliyuncs.com', + ], + 'acms' => + [ + 'cn-qingdao' => 'acm.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'acm.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'acm.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'acm.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'acm.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'acm.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'acm.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'acm.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'acm.ap-southeast-2.aliyuncs.com', + 'us-west-1' => 'acm.us-west-1.aliyuncs.com', + 'us-east-1' => 'acm.us-east-1.aliyuncs.com', + 'eu-central-1' => 'acm.eu-central-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'acm.cn-hangzhou-finance.aliyuncs.com', + 'cn-shanghai-finance-1' => 'acm.cn-shanghai-finance-1.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'acm.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'acm.cn-north-2-gov-1.aliyuncs.com', + 'ap-south-1' => 'acm.ap-south-1.aliyuncs.com', + ], + 'onsproxy' => + [ + 'cn-qingdao' => 'amqp-open.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'amqp-open.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'amqp-open.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'amqp-open.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'amqp-open.cn-shenzhen.aliyuncs.com', + 'cn-zhangjiakou' => 'amqp-open.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'amqp-open.cn-huhehaote.aliyuncs.com', + 'cn-hongkong' => 'amqp-open.cn-hongkong.aliyuncs.com', + ], + 'drdsro' => + [ + 'cn-qingdao' => 'drds.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'drds.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'drds.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'drds.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'drds.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'drds.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'drds.cn-hangzhou.aliyuncs.com', + 'ap-southeast-1' => 'drds.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'drds.us-east-1.aliyuncs.com', + 'cn-shanghai-finance-1' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'drds.cn-hangzhou.aliyuncs.com', + 'cn-north-2-gov-1' => 'drds.cn-hangzhou.aliyuncs.com', + ], + 'opensearch' => + [ + 'cn-qingdao' => 'opensearch.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'opensearch.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'opensearch.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'opensearch.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'opensearch.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'opensearch.cn-shenzhen.aliyuncs.com', + 'ap-southeast-1' => 'opensearch.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'opensearch.cn-north-2-gov-1.aliyuncs.com', + ], + 'edasschedulerx' => + [ + 'cn-beijing' => 'schedulerx.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'schedulerx.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'schedulerx.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'schedulerx.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'schedulerx.cn-shenzhen.aliyuncs.com', + 'us-east-1' => 'schedulerx.us-east-1.aliyuncs.com', + ], + 'tag' => + [ + 'cn-beijing' => 'tag.aliyuncs.com', + 'cn-shenzhen' => 'tag.aliyuncs.com', + 'cn-qingdao' => 'tag.aliyuncs.com', + 'cn-chengdu' => 'tag.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'tag.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'tag.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'tag.aliyuncs.com', + 'cn-shanghai' => 'tag.aliyuncs.com', + 'cn-hongkong' => 'tag.aliyuncs.com', + 'ap-southeast-1' => 'tag.aliyuncs.com', + 'ap-southeast-2' => 'tag.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'tag.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'tag.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'tag.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'tag.eu-west-1.aliyuncs.com', + 'us-west-1' => 'tag.aliyuncs.com', + 'us-east-1' => 'tag.aliyuncs.com', + 'eu-central-1' => 'tag.eu-central-1.aliyuncs.com', + 'me-east-1' => 'tag.me-east-1.aliyuncs.com', + 'ap-south-1' => 'tag.ap-south-1.aliyuncs.com', + 'cn-hangzhou-finance' => 'tag.aliyuncs.com', + 'cn-shanghai-finance-1' => 'tag.aliyuncs.com', + 'cn-shenzhen-finance-1' => 'tag.cn-shenzhen-finance-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'tag.cn-north-2-gov-1.aliyuncs.com', + 'cn-fujian' => 'tag.aliyuncs.com', + 'cn-haidian-cm12-c01' => 'tag.aliyuncs.com', + 'cn-hangzhou-internal-test-2' => 'tag.aliyuncs.com', + 'cn-hangzhou-internal-test-3' => 'tag.aliyuncs.com', + 'cn-hangzhou-test-306' => 'tag.aliyuncs.com', + 'cn-shanghai-et15-b01' => 'tag.aliyuncs.com', + 'cn-zhangbei-na61-b01' => 'tag.aliyuncs.com', + 'eu-west-1-oxs' => 'tag.cn-shenzhen-cloudstone.aliyuncs.com', + 'cn-heyuan' => 'tag.cn-heyuan.aliyuncs.com', + 'cn-wulanchabu' => 'tag.cn-wulanchabu.aliyuncs.com', + ], + 'servicemesh' => + [ + 'cn-beijing' => 'servicemesh.aliyuncs.com', + 'cn-zhangjiakou' => 'servicemesh.aliyuncs.com', + 'cn-hangzhou' => 'servicemesh.aliyuncs.com', + 'cn-shanghai' => 'servicemesh.aliyuncs.com', + 'cn-shenzhen' => 'servicemesh.aliyuncs.com', + 'ap-southeast-1' => 'servicemesh.aliyuncs.com', + 'us-west-1' => 'servicemesh.aliyuncs.com', + ], + 'rdc' => + [ + 'cn-beijing' => 'rdc.cn-beijing.aliyuncs.com', + ], + 'sddprsrc' => + [ + 'cn-zhangjiakou' => 'sddp-rsrc.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'sddprsrc.cn-hangzhou.aliyuncs.com', + 'cn-north-2-gov-1' => 'sddprsrc.cn-north-2-gov-1.aliyuncs.com', + ], + 'polardbx' => + [ + 'cn-hangzhou' => 'polardbx.cn-hangzhou.aliyuncs.com', + 'cn-qingdao' => 'polardbx.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'polardbx.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'polardbx.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'polardbx.cn-huhehaote.aliyuncs.com', + 'cn-shanghai' => 'polardbx.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'polardbx.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'polardbx.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'polardbx.ap-southeast-1.aliyuncs.com', + ], + 'dytns' => + [ + 'cn-hangzhou' => 'dytnsapi.aliyuncs.com', + ], + 'datahub' => + [ + 'cn-hangzhou' => 'datahub.aliyuncs.com', + 'cn-shanghai' => 'datahub.aliyuncs.com', + ], + 'geoip' => + [ + 'cn-hangzhou' => 'geoip.aliyuncs.com', + ], + 'digitalstore' => + [ + 'cn-hangzhou' => 'digitalstore.cn-hangzhou.aliyuncs.com', + ], + 'quickbi' => + [ + 'cn-hangzhou' => 'quickbi-public-share.aliyuncs.com', + 'cn-hongkong' => 'quickbi-public-share.aliyuncs.com', + 'ap-southeast-1' => 'quickbi-public-share.aliyuncs.com', + 'ap-southeast-3' => 'quickbi-public-share.aliyuncs.com', + 'eu-central-1' => 'quickbi-public-share.aliyuncs.com', + ], + 'alimtdt' => + [ + 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', + ], + 'sofamq' => + [ + 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', + 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', + ], + 'sofaodp' => + [ + 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', + 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', + ], + 'dascharge' => + [ + 'cn-shanghai' => 'das.aliyuncs.com', + 'cn-hangzhou' => 'das.aliyuncs.com', + ], + 'sofadst' => + [ + 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', + ], + 'springcloud' => + [ + 'cn-qingdao' => 'ms.aliyuncs.com', + 'cn-beijing' => 'ms.aliyuncs.com', + 'cn-zhangjiakou' => 'ms.aliyuncs.com', + 'cn-hangzhou' => 'ms.aliyuncs.com', + 'cn-shanghai' => 'ms.aliyuncs.com', + 'cn-shenzhen' => 'ms.aliyuncs.com', + ], + 'edasmsc' => + [ + 'cn-qingdao' => 'edasmsc.aliyuncs.com', + 'cn-beijing' => 'edasmsc.aliyuncs.com', + 'cn-zhangjiakou' => 'edasmsc.aliyuncs.com', + 'cn-hangzhou' => 'edasmsc.aliyuncs.com', + 'cn-shanghai' => 'edasmsc.aliyuncs.com', + 'cn-shenzhen' => 'edasmsc.aliyuncs.com', + 'cn-hongkong' => 'edasmsc.aliyuncs.com', + ], + 'polarx' => + [ + 'cn-qingdao' => 'polardbx-share.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'polardbx-share.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'polardbx-share.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'polardbx-share.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'polardbx-share.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'polardbx-share.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'polardbx-share.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'polardbx-share.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'polardbx-share.ap-southeast-1.aliyuncs.com', + ], + 'cddc' => + [ + 'cn-qingdao' => 'cddc.aliyuncs.com', + 'cn-beijing' => 'cddc.aliyuncs.com', + 'cn-chengdu' => 'cddc.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'cddc.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'cddc.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'cddc.aliyuncs.com', + 'cn-shanghai' => 'cddc.aliyuncs.com', + 'cn-shenzhen' => 'cddc.aliyuncs.com', + 'cn-hongkong' => 'cddc.aliyuncs.com', + 'ap-southeast-1' => 'cddc.aliyuncs.com', + 'ap-southeast-2' => 'cddc.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'cddc.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'cddc.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'cddc.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'cddc.eu-west-1.aliyuncs.com', + 'us-west-1' => 'cddc.aliyuncs.com', + 'us-east-1' => 'cddc.aliyuncs.com', + 'eu-central-1' => 'cddc.eu-central-1.aliyuncs.com', + 'me-east-1' => 'cddc.me-east-1.aliyuncs.com', + 'ap-south-1' => 'cddc.ap-south-1.aliyuncs.com', + 'cn-heyuan' => 'cddc.aliyuncs.com', + ], + 'dlasparkpre' => + [ + 'cn-qingdao' => 'dlaspark.aliyuncs.com', + 'cn-beijing' => 'dlaspark.aliyuncs.com', + 'cn-zhangjiakou' => 'dlaspark.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'dlaspark.aliyuncs.com', + 'cn-shanghai' => 'dlaspark.aliyuncs.com', + 'cn-shenzhen' => 'dlaspark.aliyuncs.com', + ], + 'spark' => + [ + 'cn-qingdao' => 'ddi.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'ddi.aliyuncs.com', + 'cn-chengdu' => 'ddi.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'ddi.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'ddi.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'ddi.aliyuncs.com', + 'cn-shanghai' => 'ddi.aliyuncs.com', + 'cn-shenzhen' => 'ddi.aliyuncs.com', + 'cn-hongkong' => 'ddi.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'ddi.aliyuncs.com', + 'ap-southeast-2' => 'ddi.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'ddi.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'ddi.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'ddi.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'ddi.eu-west-1.aliyuncs.com', + 'us-west-1' => 'ddi.aliyuncs.com', + 'us-east-1' => 'ddi.us-east-1.aliyuncs.com', + 'eu-central-1' => 'ddi.eu-central-1.aliyuncs.com', + 'me-east-1' => 'ddi.me-east-1.aliyuncs.com', + 'ap-south-1' => 'ddi.ap-south-1.aliyuncs.com', + 'cn-heyuan' => 'ddi.aliyuncs.com', + ], + 'multisearch' => + [ + 'cn-beijing' => 'multisearch.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'multisearch.cn-hangzhou.aliyuncs.com', + ], + 'pai' => + [ + 'cn-beijing' => 'pai.cn-beijing.aliyuncs.com', + 'cn-hangzhou' => 'pai.cn-hangzhou.data.aliyun.com', + 'cn-shanghai' => 'pai.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'pai.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'pai.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'pai.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'pai.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'pai.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'pai.ap-southeast-5.aliyuncs.com', + 'us-west-1' => 'pai.us-west-1.aliyuncs.com', + 'us-east-1' => 'pai.us-east-1.aliyuncs.com', + 'eu-central-1' => 'pai.eu-central-1.aliyuncs.com', + 'me-east-1' => 'pai.me-east-1.aliyuncs.com', + 'ap-south-1' => 'pai.ap-south-1.aliyuncs.com', + ], + 'fcpre' => + [ + 'cn-chengdu' => 'cn-chengdu.fc.aliyuncs.com', + 'ap-southeast-3' => 'ap-southeast-3.fc.aliyuncs.com', + 'eu-west-1' => 'eu-west-1.fc.aliyuncs.com', + 'cn-hangzhou-finance' => 'cn-hangzhou-finance.fc.aliyuncs.com', + ], + 'ahaschaospre' => + [ + 'cn-zhangjiakou' => 'ahas.cn-zhangjiakou.aliyuncs.com', + ], + 'sasti' => + [ + 'cn-zhangjiakou' => 'sasti.aliyuncs.com', + ], + 'config' => + [ + 'cn-hangzhou' => 'config.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'config.cn-shanghai.aliyuncs.com', + ], + 'ledgerdb' => + [ + 'cn-hangzhou' => 'ledgerdb.cn-hangzhou.aliyuncs.com', + ], + 'nlpvision' => + [ + 'cn-hangzhou' => 'nlp-vision.cn-hangzhou.aliyuncs.com', + ], + 'alimtld' => + [ + 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', + ], + 'databot' => + [ + 'cn-hangzhou' => 'databot.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'databot.cn-shanghai.aliyuncs.com', + ], + 'livinglink' => + [ + 'cn-hangzhou' => 'livinglink.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'livinglink.cn-shanghai.aliyuncs.com', + 'ap-southeast-1' => 'livinglink.ap-southeast-1.aliyuncs.com', + 'us-east-1' => 'livinglink.us-east-1.aliyuncs.com', + 'eu-central-1' => 'livinglink.eu-central-1.aliyuncs.com', + ], + 'eipanycast' => + [ + 'cn-hangzhou' => 'eipanycast.cn-hangzhou.aliyuncs.com', + ], + 'alimtct' => + [ + 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', + ], + 'videorecog' => + [ + 'cn-shanghai' => 'videorecog.cn-shanghai.aliyuncs.com', + ], + 'imageprocess' => + [ + 'cn-shanghai' => 'imageprocess.cn-shanghai.aliyuncs.com', + ], + 'sofats' => + [ + 'cn-shanghai' => 'sofa.cn-shanghai.aliyuncs.com', + 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', + ], + 'videoenhan' => + [ + 'cn-shanghai' => 'videoenhan.cn-shanghai.aliyuncs.com', + ], + 'imgsearch' => + [ + 'cn-shanghai' => 'imgsearch.cn-shanghai.aliyuncs.com', + ], + 'videoseg' => + [ + 'cn-shanghai' => 'videoseg.cn-shanghai.aliyuncs.com', + ], + 'sofacaferms' => + [ + 'cn-hangzhou-finance' => 'sofa.cn-hangzhou-finance.aliyuncs.com', + ], + 'retailadvqa' => + [ + 'cn-zhangjiakou' => 'quicka-public.cn-zhangjiakou.aliyuncs.com', + 'cn-shanghai' => 'quicka-public.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'quicka-public.cn-shenzhen.aliyuncs.com', + ], + 'linkanalytics' => + [ + 'cn-hangzhou' => 'linkanalytics.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'linkanalytics.cn-shanghai.aliyuncs.com', + ], + 'swas' => + [ + 'cn-qingdao' => 'swas.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'swas.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'swas.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'swas.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'swas.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'swas.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'swas.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'swas.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'swas.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'swas.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'swas.ap-southeast-3.aliyuncs.com', + 'ap-southeast-5' => 'swas.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'swas.ap-northeast-1.aliyuncs.com', + 'eu-west-1' => 'swas.eu-west-1.aliyuncs.com', + 'us-west-1' => 'swas.us-west-1.aliyuncs.com', + 'us-east-1' => 'swas.us-east-1.aliyuncs.com', + 'eu-central-1' => 'swas.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'swas.ap-south-1.aliyuncs.com', + ], + 'gws' => + [ + 'cn-qingdao' => 'gws.cn-qingdao.aliyuncs.com', + 'cn-beijing' => 'gws.cn-beijing.aliyuncs.com', + 'cn-chengdu' => 'gws.cn-chengdu.aliyuncs.com', + 'cn-zhangjiakou' => 'gws.cn-zhangjiakou.aliyuncs.com', + 'cn-huhehaote' => 'gws.cn-huhehaote.aliyuncs.com', + 'cn-hangzhou' => 'gws.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'gws.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'gws.cn-shenzhen.aliyuncs.com', + 'cn-hongkong' => 'gws.cn-hongkong.aliyuncs.com', + 'ap-southeast-1' => 'gws.ap-southeast-1.aliyuncs.com', + 'ap-southeast-2' => 'gws.ap-southeast-2.aliyuncs.com', + 'ap-southeast-3' => 'gws.ap-northeast-3.aliyuncs.com', + 'ap-southeast-5' => 'gws.ap-southeast-5.aliyuncs.com', + 'ap-northeast-1' => 'gws.ap-northeast-1.aliyuncs.com', + 'us-west-1' => 'gws.us-west-1.aliyuncs.com', + 'us-east-1' => 'gws.us-east-1.aliyuncs.com', + 'eu-central-1' => 'gws.eu-central-1.aliyuncs.com', + 'ap-south-1' => 'gws.ap-south-1.aliyuncs.com', + ], + 'dlacupost' => + [ + 'cn-beijing' => 'openanalytics.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'openanalytics.cn-hongkong.aliyuncs.com', + 'cn-hangzhou' => 'openanalytics.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'openanalytics.cn-shanghai.aliyuncs.com', + 'cn-shenzhen' => 'openanalytics.cn-beijing.aliyuncs.com', + 'cn-hongkong' => 'openanalytics.cn-hongkong.aliyuncs.com', + ], + 'ressharing' => + [ + 'cn-beijing' => 'resourcesharing.cn-beijing.aliyuncs.com', + 'cn-zhangjiakou' => 'resourcesharing.cn-zhangjiakou.aliyuncs.com', + 'cn-hangzhou' => 'resourcesharing.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'resourcesharing.cn-shanghai.aliyuncs.com', + 'ap-southeast-1' => 'resourcesharing.ap-southeast-1.aliyuncs.com', + 'cn-north-2-gov-1' => 'resourcesharing.cn-north-2-gov-1.aliyuncs.com', + ], + 'uisplus' => + [ + 'cn-huhehaote' => 'uisplus.cn-huhehaote.aliyuncs.com', + 'cn-shenzhen' => 'uisplus.cn-shenzhen.aliyuncs.com', + ], + 'idrsservice' => + [ + 'cn-hangzhou' => 'idrsservice.cn-hangzhou.aliyuncs.com', + ], + 'alinlp' => + [ + 'cn-hangzhou' => 'alinlp.cn-hangzhou.aliyuncs.com', + ], + 'miniapplcdp' => + [ + 'cn-hangzhou' => 'miniapplcdp.aliyuncs.com', + 'cn-shanghai' => 'miniapplcdp.aliyuncs.com', + ], + 'baasdis' => + [ + 'cn-hangzhou' => 'baasdis.cn-hangzhou.aliyuncs.com', + ], + 'baasodats' => + [ + 'cn-hangzhou' => 'baasodats.cn-hangzhou.aliyuncs.com', + ], + 'baascccs' => + [ + 'cn-hangzhou' => 'baascccs.cn-hangzhou.aliyuncs.com', + ], + 'pam' => + [ + 'cn-hangzhou' => 'pam.cn-hangzhou.aliyuncs.com', + ], + 'alimtec' => + [ + 'cn-hangzhou' => 'mt.cn-hangzhou.aliyuncs.com', + ], + 'cloudgame' => + [ + 'cn-hangzhou' => 'cloudgame.cn-hangzhou.aliyuncs.com', + 'cn-shanghai' => 'cloudgame.cn-shanghai.aliyuncs.com', + ], + 'csas' => + [ + 'cn-hangzhou' => 'csas.aliyuncs.com', + ], + 'facebodyqps' => + [ + 'cn-shanghai' => 'facebody.cn-shanghai.aliyuncs.com', + ], + 'face' => + [ + 'cn-shanghai' => 'face.cn-shanghai.aliyuncs.com', + ], + 'cams' => + [ + 'ap-southeast-1' => 'cams.ap-southeast-1.aliyuncs.com', + ], + 'mpaasfin' => + [ + 'cn-hangzhou-finance' => 'mpaas.cn-hangzhou-finance.aliyuncs.com', + ], + 'mpaasgov' => + [ + 'cn-north-2-gov-1' => 'mpaas.cn-north-2-gov-1.aliyuncs.com', + ], + ], +]; diff --git a/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php b/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php new file mode 100644 index 0000000..bacaecc --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/AccessKeyCredential.php @@ -0,0 +1,65 @@ +accessKeyId = $accessKeyId; + $this->accessKeySecret = $accessKeySecret; + } + + /** + * @return string + */ + public function getAccessKeyId() + { + return $this->accessKeyId; + } + + /** + * @return string + */ + public function getAccessKeySecret() + { + return $this->accessKeySecret; + } + + /** + * @return string + */ + public function __toString() + { + return "$this->accessKeyId#$this->accessKeySecret"; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php b/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php new file mode 100644 index 0000000..db69a7c --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/BearerTokenCredential.php @@ -0,0 +1,66 @@ +bearerToken = $bearerToken; + } + + /** + * @return string + */ + public function getBearerToken() + { + return $this->bearerToken; + } + + /** + * @return string + */ + public function getAccessKeyId() + { + return ''; + } + + /** + * @return string + */ + public function getAccessKeySecret() + { + return ''; + } + + /** + * @return string + */ + public function __toString() + { + return "bearerToken#$this->bearerToken"; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php b/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php new file mode 100644 index 0000000..96ee50a --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/CredentialsInterface.php @@ -0,0 +1,18 @@ +roleName = $roleName; + } + + /** + * @return string + */ + public function getRoleName() + { + return $this->roleName; + } + + /** + * @return string + */ + public function __toString() + { + return "roleName#$this->roleName"; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php b/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php new file mode 100644 index 0000000..2ec7511 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Ini/CreateTrait.php @@ -0,0 +1,181 @@ +missingRequired('type', $clientName); + } + + return $this->createClientByType($clientName, $credential)->name($clientName); + } + + /** + * @param string $clientName + * @param array $credential + * + * @return AccessKeyClient|BearerTokenClient|EcsRamRoleClient|RamRoleArnClient|RsaKeyPairClient + * @throws ClientException + */ + private function createClientByType($clientName, array $credential) + { + switch (\strtolower($credential['type'])) { + case 'access_key': + return $this->accessKeyClient($clientName, $credential); + case 'ecs_ram_role': + return $this->ecsRamRoleClient($clientName, $credential); + case 'ram_role_arn': + return $this->ramRoleArnClient($clientName, $credential); + case 'bearer_token': + return $this->bearerTokenClient($clientName, $credential); + case 'rsa_key_pair': + return $this->rsaKeyPairClient($clientName, $credential); + default: + throw new ClientException( + "Invalid type '{$credential['type']}' for '$clientName' in {$this->filename}", + SDK::INVALID_CREDENTIAL + ); + } + } + + /** + * @param array $credential + * @param string $clientName + * + * @return AccessKeyClient + * @throws ClientException + */ + private function accessKeyClient($clientName, array $credential) + { + if (!isset($credential['access_key_id'])) { + $this->missingRequired('access_key_id', $clientName); + } + + if (!isset($credential['access_key_secret'])) { + $this->missingRequired('access_key_secret', $clientName); + } + + return new AccessKeyClient( + $credential['access_key_id'], + $credential['access_key_secret'] + ); + } + + /** + * @param string $clientName + * @param array $credential + * + * @return EcsRamRoleClient + * @throws ClientException + */ + private function ecsRamRoleClient($clientName, array $credential) + { + if (!isset($credential['role_name'])) { + $this->missingRequired('role_name', $clientName); + } + + return new EcsRamRoleClient($credential['role_name']); + } + + /** + * @param string $clientName + * @param array $credential + * + * @return RamRoleArnClient + * @throws ClientException + */ + private function ramRoleArnClient($clientName, array $credential) + { + if (!isset($credential['access_key_id'])) { + $this->missingRequired('access_key_id', $clientName); + } + + if (!isset($credential['access_key_secret'])) { + $this->missingRequired('access_key_secret', $clientName); + } + + if (!isset($credential['role_arn'])) { + $this->missingRequired('role_arn', $clientName); + } + + if (!isset($credential['role_session_name'])) { + $this->missingRequired('role_session_name', $clientName); + } + + return new RamRoleArnClient( + $credential['access_key_id'], + $credential['access_key_secret'], + $credential['role_arn'], + $credential['role_session_name'] + ); + } + + /** + * @param string $clientName + * @param array $credential + * + * @return BearerTokenClient + * @throws ClientException + */ + private function bearerTokenClient($clientName, array $credential) + { + if (!isset($credential['bearer_token'])) { + $this->missingRequired('bearer_token', $clientName); + } + + return new BearerTokenClient($credential['bearer_token']); + } + + /** + * @param array $credential + * @param string $clientName + * + * @return RsaKeyPairClient + * @throws ClientException + */ + private function rsaKeyPairClient($clientName, array $credential) + { + if (!isset($credential['public_key_id'])) { + $this->missingRequired('public_key_id', $clientName); + } + + if (!isset($credential['private_key_file'])) { + $this->missingRequired('private_key_file', $clientName); + } + + return new RsaKeyPairClient( + $credential['public_key_id'], + $credential['private_key_file'] + ); + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php b/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php new file mode 100644 index 0000000..94ec7fb --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Ini/IniCredential.php @@ -0,0 +1,209 @@ +filename = $filename ?: $this->getDefaultFile(); + } + + /** + * Get the default credential file. + * + * @return string + */ + public function getDefaultFile() + { + return self::getHomeDirectory() . DIRECTORY_SEPARATOR . '.alibabacloud' . DIRECTORY_SEPARATOR . 'credentials'; + } + + /** + * Gets the environment's HOME directory. + * + * @return null|string + */ + private static function getHomeDirectory() + { + if (getenv('HOME')) { + return getenv('HOME'); + } + + return (getenv('HOMEDRIVE') && getenv('HOMEPATH')) + ? getenv('HOMEDRIVE') . getenv('HOMEPATH') + : null; + } + + /** + * Clear credential cache. + * + * @return void + */ + public static function forgetLoadedCredentialsFile() + { + self::$hasLoaded = []; + } + + /** + * Get the credential file. + * + * @return string + */ + public function getFilename() + { + return $this->filename; + } + + /** + * @param array $array + * @param string $key + * + * @return bool + */ + protected static function isNotEmpty(array $array, $key) + { + return isset($array[$key]) && !empty($array[$key]); + } + + /** + * @param string $key + * @param string $clientName + * + * @throws ClientException + */ + public function missingRequired($key, $clientName) + { + throw new ClientException( + "Missing required '$key' option for '$clientName' in " . $this->getFilename(), + SDK::INVALID_CREDENTIAL + ); + } + + /** + * @return array|mixed + * @throws ClientException + */ + public function load() + { + // If it has been loaded, assign the client directly. + if (isset(self::$hasLoaded[$this->filename])) { + /** + * @var $client Client + */ + foreach (self::$hasLoaded[$this->filename] as $projectName => $client) { + $client->name($projectName); + } + + return self::$hasLoaded[$this->filename]; + } + + return $this->loadFile(); + } + + /** + * Exceptions will be thrown if the file is unreadable and not the default file. + * + * @return array|mixed + * @throws ClientException + */ + private function loadFile() + { + if (!\AlibabaCloud\Client\inOpenBasedir($this->filename)) { + return []; + } + + if (!\is_readable($this->filename) || !\is_file($this->filename)) { + if ($this->filename === $this->getDefaultFile()) { + // @codeCoverageIgnoreStart + return []; + // @codeCoverageIgnoreEnd + } + throw new ClientException( + 'Credential file is not readable: ' . $this->getFilename(), + SDK::INVALID_CREDENTIAL + ); + } + + return $this->parseFile(); + } + + /** + * Decode the ini file into an array. + * + * @return array|mixed + * @throws ClientException + */ + private function parseFile() + { + try { + $file = \parse_ini_file($this->filename, true); + if (\is_array($file) && $file !== []) { + return $this->initClients($file); + } + throw new ClientException( + 'Format error: ' . $this->getFilename(), + SDK::INVALID_CREDENTIAL + ); + } catch (\Exception $e) { + throw new ClientException( + $e->getMessage(), + SDK::INVALID_CREDENTIAL, + $e + ); + } + } + + /** + * Initialize clients. + * + * @param array $array + * + * @return array|mixed + * @throws ClientException + */ + private function initClients($array) + { + foreach (\array_change_key_case($array) as $clientName => $configures) { + $configures = \array_change_key_case($configures); + $clientInstance = $this->createClient($clientName, $configures); + if ($clientInstance instanceof Client) { + self::$hasLoaded[$this->filename][$clientName] = $clientInstance; + self::setClientAttributes($configures, $clientInstance); + self::setCert($configures, $clientInstance); + self::setProxy($configures, $clientInstance); + } + } + + return isset(self::$hasLoaded[$this->filename]) + ? self::$hasLoaded[$this->filename] + : []; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php b/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php new file mode 100644 index 0000000..192d494 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Ini/OptionsTrait.php @@ -0,0 +1,111 @@ +regionId($configures['region_id']); + } + + if (isset($configures['debug'])) { + $client->options( + [ + 'debug' => (bool)$configures['debug'], + ] + ); + } + + if (self::isNotEmpty($configures, 'timeout')) { + $client->options( + [ + 'timeout' => $configures['timeout'], + ] + ); + } + + if (self::isNotEmpty($configures, 'connect_timeout')) { + $client->options( + [ + 'connect_timeout' => $configures['connect_timeout'], + ] + ); + } + } + + /** + * @param array $configures + * @param Client $client + */ + private static function setProxy($configures, Client $client) + { + if (self::isNotEmpty($configures, 'proxy')) { + $client->options( + [ + 'proxy' => $configures['proxy'], + ] + ); + } + $proxy = []; + if (self::isNotEmpty($configures, 'proxy_http')) { + $proxy['http'] = $configures['proxy_http']; + } + if (self::isNotEmpty($configures, 'proxy_https')) { + $proxy['https'] = $configures['proxy_https']; + } + if (self::isNotEmpty($configures, 'proxy_no')) { + $proxy['no'] = \explode(',', $configures['proxy_no']); + } + if ($proxy !== []) { + $client->options( + [ + 'proxy' => $proxy, + ] + ); + } + } + + /** + * @param array $configures + * @param Client $client + */ + private static function setCert($configures, Client $client) + { + if (self::isNotEmpty($configures, 'cert_file') && !self::isNotEmpty($configures, 'cert_password')) { + $client->options( + [ + 'cert' => $configures['cert_file'], + ] + ); + } + + if (self::isNotEmpty($configures, 'cert_file') && self::isNotEmpty($configures, 'cert_password')) { + $client->options( + [ + 'cert' => [ + $configures['cert_file'], + $configures['cert_password'], + ], + ] + ); + } + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php b/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php new file mode 100644 index 0000000..21aec9b --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Providers/CredentialsProvider.php @@ -0,0 +1,170 @@ +asDefaultClient(); + } + }; + } + + /** + * @return Closure + */ + public static function ini() + { + return static function () { + $ini = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_CREDENTIALS_FILE'); + + if ($ini) { + AlibabaCloud::load($ini); + } else { + // @codeCoverageIgnoreStart + AlibabaCloud::load(); + // @codeCoverageIgnoreEnd + } + + self::compatibleWithGlobal(); + }; + } + + /** + * @codeCoverageIgnore + * + * Compatible with global + * + * @throws ClientException + */ + private static function compatibleWithGlobal() + { + if (AlibabaCloud::has('global') && !AlibabaCloud::has(self::getDefaultName())) { + AlibabaCloud::get('global')->name(self::getDefaultName()); + } + } + + /** + * @return array|false|string + * @throws ClientException + */ + public static function getDefaultName() + { + $name = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_PROFILE'); + + if ($name) { + return $name; + } + + return 'default'; + } + + /** + * @return Closure + */ + public static function instance() + { + return static function () { + $instance = \AlibabaCloud\Client\envNotEmpty('ALIBABA_CLOUD_ECS_METADATA'); + if ($instance) { + AlibabaCloud::ecsRamRoleClient($instance)->asDefaultClient(); + } + }; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php b/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php new file mode 100644 index 0000000..0515ca6 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Providers/EcsRamRoleProvider.php @@ -0,0 +1,128 @@ +getCredentialsInCache(); + + if ($result === null) { + $result = $this->request(); + + if (!isset($result['AccessKeyId'], $result['AccessKeySecret'], $result['SecurityToken'])) { + throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); + } + + $this->cache($result->toArray()); + } + + return new StsCredential( + $result['AccessKeyId'], + $result['AccessKeySecret'], + $result['SecurityToken'] + ); + } + + /** + * Get credentials by request. + * + * @return Result + * @throws ClientException + * @throws ServerException + */ + public function request() + { + $result = $this->getResponse(); + + if ($result->getStatusCode() === 404) { + $message = 'The role was not found in the instance'; + throw new ClientException($message, SDK::INVALID_CREDENTIAL); + } + + if (!$result->isSuccess()) { + $message = 'Error retrieving credentials from result'; + throw new ServerException($result, $message, SDK::INVALID_CREDENTIAL); + } + + return $result; + } + + /** + * Get data from meta. + * + * @return mixed|ResponseInterface + * @throws ClientException + * @throws Exception + */ + public function getResponse() + { + /** + * @var EcsRamRoleCredential $credential + */ + $credential = $this->client->getCredential(); + $url = $this->uri . $credential->getRoleName(); + + $options = [ + 'http_errors' => false, + 'timeout' => 1, + 'connect_timeout' => 1, + 'debug' => $this->client->isDebug(), + ]; + + try { + return RpcRequest::createClient()->request('GET', $url, $options); + } catch (GuzzleException $exception) { + if (Stringy::contains($exception->getMessage(), 'timed')) { + $message = 'Timeout or instance does not belong to Alibaba Cloud'; + } else { + $message = $exception->getMessage(); + } + + throw new ClientException( + $message, + SDK::SERVER_UNREACHABLE, + $exception + ); + } + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php b/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php new file mode 100644 index 0000000..b64dab8 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Providers/Provider.php @@ -0,0 +1,88 @@ +client = $client; + } + + /** + * Get the credentials from the cache in the validity period. + * + * @return array|null + */ + public function getCredentialsInCache() + { + if (isset(self::$credentialsCache[$this->key()])) { + $result = self::$credentialsCache[$this->key()]; + if (\strtotime($result['Expiration']) - \time() >= $this->expirationSlot) { + return $result; + } + unset(self::$credentialsCache[$this->key()]); + } + + return null; + } + + /** + * Get the toString of the credentials as the key. + * + * @return string + */ + protected function key() + { + return (string)$this->client->getCredential(); + } + + /** + * Cache credentials. + * + * @param array $credential + */ + protected function cache(array $credential) + { + self::$credentialsCache[$this->key()] = $credential; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php b/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php new file mode 100644 index 0000000..ce4de41 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Providers/RamRoleArnProvider.php @@ -0,0 +1,84 @@ +getCredentialsInCache(); + + if (null === $credential) { + $result = $this->request($timeout, $connectTimeout); + + if (!isset($result['Credentials']['AccessKeyId'], + $result['Credentials']['AccessKeySecret'], + $result['Credentials']['SecurityToken'])) { + throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); + } + + $credential = $result['Credentials']; + $this->cache($credential); + } + + return new StsCredential( + $credential['AccessKeyId'], + $credential['AccessKeySecret'], + $credential['SecurityToken'] + ); + } + + /** + * Get credentials by request. + * + * @param $timeout + * @param $connectTimeout + * + * @return Result + * @throws ClientException + * @throws ServerException + */ + private function request($timeout, $connectTimeout) + { + $clientName = __CLASS__ . \uniqid('ak', true); + $credential = $this->client->getCredential(); + + AlibabaCloud::accessKeyClient( + $credential->getAccessKeyId(), + $credential->getAccessKeySecret() + )->name($clientName); + + return (new AssumeRole($credential)) + ->client($clientName) + ->timeout($timeout) + ->connectTimeout($connectTimeout) + ->debug($this->client->isDebug()) + ->request(); + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php b/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php new file mode 100644 index 0000000..e78fc1c --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Providers/RsaKeyPairProvider.php @@ -0,0 +1,86 @@ +getCredentialsInCache(); + + if ($credential === null) { + $result = $this->request($timeout, $connectTimeout); + + if (!isset($result['SessionAccessKey']['SessionAccessKeyId'], + $result['SessionAccessKey']['SessionAccessKeySecret'])) { + throw new ServerException($result, $this->error, SDK::INVALID_CREDENTIAL); + } + + $credential = $result['SessionAccessKey']; + $this->cache($credential); + } + + return new StsCredential( + $credential['SessionAccessKeyId'], + $credential['SessionAccessKeySecret'] + ); + } + + /** + * Get credentials by request. + * + * @param $timeout + * @param $connectTimeout + * + * @return Result + * @throws ClientException + * @throws ServerException + */ + private function request($timeout, $connectTimeout) + { + $clientName = __CLASS__ . \uniqid('rsa', true); + $credential = $this->client->getCredential(); + + AlibabaCloud::client( + new AccessKeyCredential( + $credential->getPublicKeyId(), + $credential->getPrivateKey() + ), + new ShaHmac256WithRsaSignature() + )->name($clientName); + + return (new GenerateSessionAccessKey($credential->getPublicKeyId())) + ->client($clientName) + ->timeout($timeout) + ->connectTimeout($connectTimeout) + ->debug($this->client->isDebug()) + ->request(); + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php b/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php new file mode 100644 index 0000000..6bdf5be --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/RamRoleArnCredential.php @@ -0,0 +1,110 @@ +accessKeyId = $accessKeyId; + $this->accessKeySecret = $accessKeySecret; + $this->roleArn = $roleArn; + $this->roleSessionName = $roleSessionName; + $this->policy = $policy; + } + + /** + * @return string + */ + public function getAccessKeyId() + { + return $this->accessKeyId; + } + + /** + * @return string + */ + public function getAccessKeySecret() + { + return $this->accessKeySecret; + } + + /** + * @return string + */ + public function getRoleArn() + { + return $this->roleArn; + } + + /** + * @return string + */ + public function getRoleSessionName() + { + return $this->roleSessionName; + } + + /** + * @return string + */ + public function getPolicy() + { + return $this->policy; + } + + /** + * @return string + */ + public function __toString() + { + return "$this->accessKeyId#$this->accessKeySecret#$this->roleArn#$this->roleSessionName"; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php b/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php new file mode 100644 index 0000000..a3935aa --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Requests/AssumeRole.php @@ -0,0 +1,47 @@ +product('Sts'); + $this->version('2015-04-01'); + $this->action('AssumeRole'); + $this->host('sts.aliyuncs.com'); + $this->scheme('https'); + $this->regionId('cn-hangzhou'); + $this->options['verify'] = false; + $this->options['query']['RoleArn'] = $arnCredential->getRoleArn(); + $this->options['query']['RoleSessionName'] = $arnCredential->getRoleSessionName(); + $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS; + if ($arnCredential->getPolicy()) { + if (is_array($arnCredential->getPolicy())) { + $this->options['query']['Policy'] = json_encode($arnCredential->getPolicy()); + } + if (is_string($arnCredential->getPolicy())) { + $this->options['query']['Policy'] = $arnCredential->getPolicy(); + } + } + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php b/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php new file mode 100644 index 0000000..4ac1ee1 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/Requests/GenerateSessionAccessKey.php @@ -0,0 +1,37 @@ +product('Sts'); + $this->version('2015-04-01'); + $this->action('GenerateSessionAccessKey'); + $this->host('sts.ap-northeast-1.aliyuncs.com'); + $this->scheme('https'); + $this->regionId('cn-hangzhou'); + $this->options['verify'] = false; + $this->options['query']['PublicKeyId'] = $publicKeyId; + $this->options['query']['DurationSeconds'] = Provider::DURATION_SECONDS; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php b/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php new file mode 100644 index 0000000..876909e --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/RsaKeyPairCredential.php @@ -0,0 +1,75 @@ +publicKeyId = $publicKeyId; + try { + $this->privateKey = file_get_contents($privateKeyFile); + } catch (Exception $exception) { + throw new ClientException( + $exception->getMessage(), + SDK::INVALID_CREDENTIAL + ); + } + } + + /** + * @return mixed + */ + public function getPrivateKey() + { + return $this->privateKey; + } + + /** + * @return string + */ + public function getPublicKeyId() + { + return $this->publicKeyId; + } + + /** + * @return string + */ + public function __toString() + { + return "publicKeyId#$this->publicKeyId"; + } +} diff --git a/vendor/alibabacloud/client/src/Credentials/StsCredential.php b/vendor/alibabacloud/client/src/Credentials/StsCredential.php new file mode 100644 index 0000000..d333fa8 --- /dev/null +++ b/vendor/alibabacloud/client/src/Credentials/StsCredential.php @@ -0,0 +1,80 @@ +accessKeyId = $accessKeyId; + $this->accessKeySecret = $accessKeySecret; + $this->securityToken = $securityToken; + } + + /** + * @return string + */ + public function getAccessKeyId() + { + return $this->accessKeyId; + } + + /** + * @return string + */ + public function getAccessKeySecret() + { + return $this->accessKeySecret; + } + + /** + * @return string + */ + public function getSecurityToken() + { + return $this->securityToken; + } + + /** + * @return string + */ + public function __toString() + { + return "$this->accessKeyId#$this->accessKeySecret#$this->securityToken"; + } +} diff --git a/vendor/alibabacloud/client/src/DefaultAcsClient.php b/vendor/alibabacloud/client/src/DefaultAcsClient.php new file mode 100644 index 0000000..ff5ecd7 --- /dev/null +++ b/vendor/alibabacloud/client/src/DefaultAcsClient.php @@ -0,0 +1,55 @@ +randClientName = \uniqid('', true); + $client->name($this->randClientName); + } + + /** + * @param Request|Result $request + * + * @return Result|string + * @throws ClientException + * @throws ServerException + */ + public function getAcsResponse($request) + { + if ($request instanceof Result) { + return $request; + } + + return $request->client($this->randClientName)->request(); + } +} diff --git a/vendor/alibabacloud/client/src/Encode.php b/vendor/alibabacloud/client/src/Encode.php new file mode 100644 index 0000000..203ceb4 --- /dev/null +++ b/vendor/alibabacloud/client/src/Encode.php @@ -0,0 +1,68 @@ +data = $data; + } + + /** + * @return bool|string + */ + public function toString() + { + $string = ''; + foreach ($this->data as $key => $value) { + $encode = rawurlencode($value); + if ($encode === '') { + $string .= "$key&"; + } else { + $string .= "$key=$encode&"; + } + } + + if (0 < count($this->data)) { + $string = substr($string, 0, -1); + } + + return $string; + } + + /** + * @return $this + */ + public function ksort() + { + ksort($this->data); + + return $this; + } +} diff --git a/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php b/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php new file mode 100644 index 0000000..cee21d8 --- /dev/null +++ b/vendor/alibabacloud/client/src/Exception/AlibabaCloudException.php @@ -0,0 +1,70 @@ +errorCode; + } + + /** + * @codeCoverageIgnore + * @deprecated + */ + public function setErrorCode() + { + throw new RuntimeException('deprecated since 2.0.'); + } + + /** + * @return string + */ + public function getErrorMessage() + { + return $this->errorMessage; + } + + /** + * @codeCoverageIgnore + * + * @param $errorMessage + * + * @deprecated + */ + public function setErrorMessage($errorMessage) + { + $this->errorMessage = $errorMessage; + } + + /** + * @codeCoverageIgnore + * @deprecated + */ + public function setErrorType() + { + } +} diff --git a/vendor/alibabacloud/client/src/Exception/ClientException.php b/vendor/alibabacloud/client/src/Exception/ClientException.php new file mode 100644 index 0000000..0877e87 --- /dev/null +++ b/vendor/alibabacloud/client/src/Exception/ClientException.php @@ -0,0 +1,38 @@ +errorMessage = $errorMessage; + $this->errorCode = $errorCode; + } + + /** + * @codeCoverageIgnore + * @deprecated + */ + public function getErrorType() + { + return 'Client'; + } +} diff --git a/vendor/alibabacloud/client/src/Exception/ServerException.php b/vendor/alibabacloud/client/src/Exception/ServerException.php new file mode 100644 index 0000000..4be26e8 --- /dev/null +++ b/vendor/alibabacloud/client/src/Exception/ServerException.php @@ -0,0 +1,158 @@ +result = $result; + $this->errorMessage = $errorMessage; + $this->errorCode = $errorCode; + $this->resolvePropertiesByReturn(); + $this->distinguishSignatureErrors(); + $this->bodyAsErrorMessage(); + + parent::__construct( + $this->getMessageString(), + $this->result->getStatusCode() + ); + } + + /** + * Resolve the error message based on the return of the server. + * + * @return void + */ + private function resolvePropertiesByReturn() + { + if (isset($this->result['message'])) { + $this->errorMessage = $this->result['message']; + $this->errorCode = $this->result['code']; + } + if (isset($this->result['Message'])) { + $this->errorMessage = $this->result['Message']; + $this->errorCode = $this->result['Code']; + } + if (isset($this->result['errorMsg'])) { + $this->errorMessage = $this->result['errorMsg']; + $this->errorCode = $this->result['errorCode']; + } + if (isset($this->result['requestId'])) { + $this->requestId = $this->result['requestId']; + } + if (isset($this->result['RequestId'])) { + $this->requestId = $this->result['RequestId']; + } + } + + /** + * If the string to be signed are the same with server's, it is considered a credential error. + */ + private function distinguishSignatureErrors() + { + if ($this->result->getRequest() + && Stringy::contains($this->errorMessage, $this->result->getRequest()->stringToSign())) { + $this->errorCode = 'InvalidAccessKeySecret'; + $this->errorMessage = 'Specified Access Key Secret is not valid.'; + } + } + + /** + * If the error message matches the default message and + * the server has returned content, use the return content + */ + private function bodyAsErrorMessage() + { + $body = (string)$this->result->getBody(); + if ($this->errorMessage === SDK::RESPONSE_EMPTY && $body) { + $this->errorMessage = $body; + } + } + + /** + * Get standard exception message. + * + * @return string + */ + private function getMessageString() + { + $message = "$this->errorCode: $this->errorMessage RequestId: $this->requestId"; + + if ($this->getResult()->getRequest()) { + $method = $this->getResult()->getRequest()->method; + $uri = (string)$this->getResult()->getRequest()->uri; + $message .= " $method \"$uri\""; + if ($this->result) { + $message .= ' ' . $this->result->getStatusCode(); + } + } + + return $message; + } + + /** + * @return Result + */ + public function getResult() + { + return $this->result; + } + + /** + * @return string + */ + public function getRequestId() + { + return $this->requestId; + } + + /** + * @codeCoverageIgnore + * @deprecated + */ + public function getErrorType() + { + return 'Server'; + } + + /** + * @codeCoverageIgnore + * @deprecated + */ + public function getHttpStatus() + { + return $this->getResult()->getStatusCode(); + } +} diff --git a/vendor/alibabacloud/client/src/Filter/ApiFilter.php b/vendor/alibabacloud/client/src/Filter/ApiFilter.php new file mode 100644 index 0000000..f6d26f2 --- /dev/null +++ b/vendor/alibabacloud/client/src/Filter/ApiFilter.php @@ -0,0 +1,259 @@ +br(); + if ($flank !== null) { + cliMate()->backgroundRed()->flank($flank, $char, $length); + cliMate()->br(); + } + cliMate()->backgroundRed($string); + cliMate()->br(); +} + +/** + * @param string $string + * @param string|null $flank + * @param string|null $char + * @param int|null $length + * + * @return void + */ +function backgroundGreen($string, $flank = null, $char = null, $length = null) +{ + cliMate()->br(); + if ($flank !== null) { + cliMate()->backgroundGreen()->flank($flank, $char, $length); + } + cliMate()->backgroundGreen($string); + cliMate()->br(); +} + +/** + * @param string $string + * @param string|null $flank + * @param string|null $char + * @param int|null $length + * + * @return void + */ +function backgroundBlue($string, $flank = null, $char = null, $length = null) +{ + cliMate()->br(); + if ($flank !== null) { + cliMate()->backgroundBlue()->flank($flank, $char, $length); + } + cliMate()->backgroundBlue($string); + cliMate()->br(); +} + +/** + * @param string $string + * @param string|null $flank + * @param string|null $char + * @param int|null $length + * + * @return void + */ +function backgroundMagenta($string, $flank = null, $char = null, $length = null) +{ + cliMate()->br(); + if ($flank !== null) { + cliMate()->backgroundMagenta()->flank($flank, $char, $length); + } + cliMate()->backgroundMagenta($string); + cliMate()->br(); +} + +/** + * @param array $array + */ +function json(array $array) +{ + cliMate()->br(); + cliMate()->backgroundGreen()->json($array); + cliMate()->br(); +} + +/** + * @param array $array + * + * @return void + */ +function redTable($array) +{ + /** + * @noinspection PhpUndefinedMethodInspection + */ + cliMate()->redTable($array); +} + +/** + * @param mixed $result + * @param string $title + * + * @return void + */ +function block($result, $title) +{ + cliMate()->backgroundGreen()->flank($title, '--', 20); + dump($result); +} + +/** + * Gets the value of an environment variable. + * + * @param string $key + * @param mixed $default + * + * @return mixed + */ +function env($key, $default = null) +{ + $value = getenv($key); + + if ($value === false) { + return value($default); + } + + if (envSubstr($value)) { + return substr($value, 1, -1); + } + + return envConversion($value); +} + +/** + * @param $value + * + * @return bool|string|null + */ +function envConversion($value) +{ + $key = strtolower($value); + + if ($key === 'null' || $key === '(null)') { + return null; + } + + $list = [ + 'true' => true, + '(true)' => true, + 'false' => false, + '(false)' => false, + 'empty' => '', + '(empty)' => '', + ]; + + return isset($list[$key]) ? $list[$key] : $value; +} + +/** + * @param $key + * + * @return bool|mixed + * @throws ClientException + */ +function envNotEmpty($key) +{ + $value = env($key, false); + if ($value !== false && !$value) { + throw new ClientException( + "Environment variable '$key' cannot be empty", + SDK::INVALID_ARGUMENT + ); + } + if ($value) { + return $value; + } + + return false; +} + +/** + * @param $value + * + * @return bool + */ +function envSubstr($value) +{ + return ($valueLength = strlen($value)) > 1 && strpos($value, '"') === 0 && $value[$valueLength - 1] === '"'; +} + +/** + * Return the default value of the given value. + * + * @param mixed $value + * + * @return mixed + */ +function value($value) +{ + return $value instanceof Closure ? $value() : $value; +} diff --git a/vendor/alibabacloud/client/src/Log/LogFormatter.php b/vendor/alibabacloud/client/src/Log/LogFormatter.php new file mode 100644 index 0000000..a33185b --- /dev/null +++ b/vendor/alibabacloud/client/src/Log/LogFormatter.php @@ -0,0 +1,79 @@ +template = $template; + $timezone = new DateTimeZone(date_default_timezone_get() ?: 'UTC'); + if (PHP_VERSION_ID < 70100) { + self::$ts = DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), $timezone); + } else { + self::$ts = new DateTime('now', $timezone); + } + } + + /** + * Returns a formatted message string. + * + * @param RequestInterface $request Request that was sent + * @param ResponseInterface $response Response that was received + * @param Exception $error Exception that was received + * + * @return string + */ + public function format( + RequestInterface $request, + ResponseInterface $response = null, + Exception $error = null + ) { + $this->template = str_replace('{pid}', getmypid(), $this->template); + $this->template = str_replace('{cost}', self::getCost(), $this->template); + $this->template = str_replace('{start_time}', self::$ts->format('Y-m-d H:i:s.u'), $this->template); + + return (new MessageFormatter($this->template))->format($request, $response, $error); + } + + /** + * @return float|mixed + */ + private static function getCost() + { + return microtime(true) - self::$logStartTime; + } +} diff --git a/vendor/alibabacloud/client/src/Profile/DefaultProfile.php b/vendor/alibabacloud/client/src/Profile/DefaultProfile.php new file mode 100644 index 0000000..b1b3707 --- /dev/null +++ b/vendor/alibabacloud/client/src/Profile/DefaultProfile.php @@ -0,0 +1,74 @@ +regionId($regionId); + } + + /** + * @param string $regionId + * @param string $accessKeyId + * @param string $accessKeySecret + * @param string $roleArn + * @param string $roleSessionName + * + * @return Client + * @throws ClientException + */ + public static function getRamRoleArnProfile($regionId, $accessKeyId, $accessKeySecret, $roleArn, $roleSessionName) + { + return AlibabaCloud::ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName) + ->regionId($regionId); + } + + /** + * @param string $regionId + * @param string $roleName + * + * @return Client + * @throws ClientException + */ + public static function getEcsRamRoleProfile($regionId, $roleName) + { + return AlibabaCloud::ecsRamRoleClient($roleName) + ->regionId($regionId); + } + + /** + * @param string $regionId + * @param string $bearerToken + * + * @return Client + * @throws ClientException + */ + public static function getBearerTokenProfile($regionId, $bearerToken) + { + return AlibabaCloud::bearerTokenClient($bearerToken) + ->regionId($regionId); + } +} diff --git a/vendor/alibabacloud/client/src/Regions/EndpointProvider.php b/vendor/alibabacloud/client/src/Regions/EndpointProvider.php new file mode 100644 index 0000000..5e8e555 --- /dev/null +++ b/vendor/alibabacloud/client/src/Regions/EndpointProvider.php @@ -0,0 +1,18 @@ +request = $request; + } + + /** + * @param Request $request + * @param string $domain + * + * @return string + * @throws ClientException + * @throws ServerException + * @deprecated + * @codeCoverageIgnore + */ + public static function findProductDomain(Request $request, $domain = 'location.aliyuncs.com') + { + return self::resolveHost($request, $domain); + } + + /** + * @param $regionId + * @param $product + * @param $domain + * + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public static function addEndPoint($regionId, $product, $domain) + { + self::addHost($product, $domain, $regionId); + } + + + /** + * @param Request $request + * @param string $domain + * + * @return string + * @throws ClientException + * @throws ServerException + */ + public static function resolveHost(Request $request, $domain = 'location.aliyuncs.com') + { + $locationService = new static($request); + $product = $locationService->request->product; + $regionId = $locationService->request->realRegionId(); + + if (!isset(self::$hosts[$product][$regionId])) { + self::$hosts[$product][$regionId] = self::getResult($locationService, $domain); + } + + return self::$hosts[$product][$regionId]; + } + + /** + * @param static $locationService + * @param string $domain + * + * @return string + * @throws ClientException + * @throws ServerException + */ + private static function getResult($locationService, $domain) + { + $locationRequest = new LocationServiceRequest($locationService->request, $domain); + + $result = $locationRequest->request(); + + if (!isset($result['Endpoints']['Endpoint'][0]['Endpoint'])) { + throw new ClientException( + 'Not found Region ID in ' . $domain, + SDK::INVALID_REGION_ID + ); + } + + return $result['Endpoints']['Endpoint'][0]['Endpoint']; + } + + /** + * @param string $product + * @param string $host + * @param string $regionId + * + * @throws ClientException + */ + public static function addHost($product, $host, $regionId = self::GLOBAL_REGION) + { + ApiFilter::product($product); + + HttpFilter::host($host); + + ClientFilter::regionId($regionId); + + self::$hosts[$product][$regionId] = $host; + } + + /** + * Update endpoints from OSS. + * + * @codeCoverageIgnore + * @throws Exception + */ + public static function updateEndpoints() + { + $ossUrl = 'https://openapi-endpoints.oss-cn-hangzhou.aliyuncs.com/endpoints.json'; + $json = \file_get_contents($ossUrl); + $list = \json_decode($json, true); + + foreach ($list['endpoints'] as $endpoint) { + Config::set( + "endpoints.{$endpoint['service']}.{$endpoint['regionid']}", + \strtolower($endpoint['endpoint']) + ); + } + } +} diff --git a/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php b/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php new file mode 100644 index 0000000..94a267d --- /dev/null +++ b/vendor/alibabacloud/client/src/Regions/LocationServiceRequest.php @@ -0,0 +1,46 @@ +product('Location'); + $this->version('2015-06-12'); + $this->action('DescribeEndpoints'); + $this->regionId('cn-hangzhou'); + $this->format('JSON'); + $this->options['query']['Id'] = $request->realRegionId(); + $this->options['query']['ServiceCode'] = $request->serviceCode; + $this->options['query']['Type'] = $request->endpointType; + $this->client($request->client); + $this->host($domain); + if (isset($request->options['timeout'])) { + $this->timeout($request->options['timeout']); + } + + if (isset($request->options['connect_timeout'])) { + $this->connectTimeout($request->options['connect_timeout']); + } + } +} diff --git a/vendor/alibabacloud/client/src/Release.php b/vendor/alibabacloud/client/src/Release.php new file mode 100644 index 0000000..0be9c1b --- /dev/null +++ b/vendor/alibabacloud/client/src/Release.php @@ -0,0 +1,112 @@ +getArguments(); + if (count($arguments) <= 1) { + echo 'Missing ChangeLog'; + + return; + } + self::updateChangelogFile($arguments[0], $arguments[1]); + self::changeVersionInCode($arguments[0]); + } + + /** + * @param $version + * @param $changeLog + */ + private static function updateChangelogFile($version, $changeLog) + { + $content = preg_replace( + '/# CHANGELOG/', + '# CHANGELOG' + . "\n" + . "\n" + . "## $version - " . date('Y-m-d') + . self::log($changeLog), + self::getChangeLogContent() + ); + + file_put_contents(self::getChangeLogFile(), $content); + } + + /** + * @param $changeLog + * + * @return string + */ + private static function log($changeLog) + { + $logs = explode('|', $changeLog); + $string = "\n"; + foreach ($logs as $log) { + if ($log) { + $string .= "- $log." . "\n"; + } + } + + return $string; + } + + /** + * @return string + */ + private static function getChangeLogContent() + { + return file_get_contents(self::getChangeLogFile()); + } + + /** + * @return string + */ + private static function getChangeLogFile() + { + return __DIR__ . '/../CHANGELOG.md'; + } + + /** + * @param $version + */ + private static function changeVersionInCode($version) + { + $content = preg_replace( + "/const VERSION = \'(.*)\';/", + "const VERSION = '" . $version . "';", + self::getCodeContent() + ); + + file_put_contents(self::getCodeFile(), $content); + } + + /** + * @return string + */ + private static function getCodeContent() + { + return file_get_contents(self::getCodeFile()); + } + + /** + * @return string + */ + private static function getCodeFile() + { + return __DIR__ . '/AlibabaCloud.php'; + } +} diff --git a/vendor/alibabacloud/client/src/Request/Request.php b/vendor/alibabacloud/client/src/Request/Request.php new file mode 100644 index 0000000..e18532e --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Request.php @@ -0,0 +1,451 @@ +client = CredentialsProvider::getDefaultName(); + $this->uri = new Uri(); + $this->uri = $this->uri->withScheme($this->scheme); + $this->options['http_errors'] = false; + $this->options['connect_timeout'] = self::CONNECT_TIMEOUT; + $this->options['timeout'] = self::TIMEOUT; + + // Turn on debug mode based on environment variable. + if (null !== \AlibabaCloud\Client\env('DEBUG') && strtolower(\AlibabaCloud\Client\env('DEBUG')) === 'sdk') { + $this->options['debug'] = true; + } + + // Rewrite configuration if the user has a configuration. + if ($options !== []) { + $this->options($options); + } + } + + /** + * @param string $name + * @param string $value + * + * @return $this + * @throws ClientException + */ + public function appendUserAgent($name, $value) + { + $filter_name = Filter::name($name); + + if (!UserAgent::isGuarded($filter_name)) { + $this->userAgent[$filter_name] = Filter::value($value); + } + + return $this; + } + + /** + * @param array $userAgent + * + * @return $this + */ + public function withUserAgent(array $userAgent) + { + $this->userAgent = UserAgent::clean($userAgent); + + return $this; + } + + /** + * Set Accept format. + * + * @param string $format + * + * @return $this + * @throws ClientException + */ + public function format($format) + { + $this->format = ApiFilter::format($format); + + return $this; + } + + /** + * @param $contentType + * + * @return $this + * @throws ClientException + */ + public function contentType($contentType) + { + $this->options['headers']['Content-Type'] = HttpFilter::contentType($contentType); + + return $this; + } + + /** + * @param string $accept + * + * @return $this + * @throws ClientException + */ + public function accept($accept) + { + $this->options['headers']['Accept'] = HttpFilter::accept($accept); + + return $this; + } + + /** + * Set the request body. + * + * @param string $body + * + * @return $this + * @throws ClientException + */ + public function body($body) + { + $this->options['body'] = HttpFilter::body($body); + + return $this; + } + + /** + * Set the json as body. + * + * @param array|object $content + * + * @return $this + * @throws ClientException + */ + public function jsonBody($content) + { + if (!\is_array($content) && !\is_object($content)) { + throw new ClientException( + 'jsonBody only accepts an array or object', + SDK::INVALID_ARGUMENT + ); + } + + return $this->body(\json_encode($content)); + } + + /** + * Set the request scheme. + * + * @param string $scheme + * + * @return $this + * @throws ClientException + */ + public function scheme($scheme) + { + $this->scheme = HttpFilter::scheme($scheme); + $this->uri = $this->uri->withScheme($scheme); + + return $this; + } + + /** + * Set the request host. + * + * @param string $host + * + * @return $this + * @throws ClientException + */ + public function host($host) + { + $this->uri = $this->uri->withHost(HttpFilter::host($host)); + + return $this; + } + + /** + * @param string $method + * + * @return $this + * @throws ClientException + */ + public function method($method) + { + $this->method = HttpFilter::method($method); + + return $this; + } + + /** + * @param string $clientName + * + * @return $this + * @throws ClientException + */ + public function client($clientName) + { + $this->client = ClientFilter::clientName($clientName); + + return $this; + } + + /** + * @return bool + * @throws ClientException + */ + public function isDebug() + { + if (isset($this->options['debug'])) { + return $this->options['debug'] === true; + } + + if (isset($this->httpClient()->options['debug'])) { + return $this->httpClient()->options['debug'] === true; + } + + return false; + } + + /** + * @throws ClientException + * @throws ServerException + */ + public function resolveOption() + { + $this->options['headers']['User-Agent'] = UserAgent::toString($this->userAgent); + + $this->cleanQuery(); + $this->cleanFormParams(); + $this->resolveHost(); + $this->resolveParameter(); + + if (isset($this->options['form_params'])) { + if (function_exists('\GuzzleHttp\Psr7\parse_query')) { + $this->options['form_params'] = \GuzzleHttp\Psr7\parse_query( + Encode::create($this->options['form_params'])->toString() + ); + } else { + $this->options['form_params'] = \GuzzleHttp\Psr7\Query::parse( + Encode::create($this->options['form_params'])->toString() + ); + } + } + + $this->mergeOptionsIntoClient(); + } + + /** + * @return Result + * @throws ClientException + * @throws ServerException + */ + public function request() + { + $this->resolveOption(); + $result = $this->response(); + + if ($this->shouldServerRetry($result)) { + return $this->request(); + } + + if (!$result->isSuccess()) { + throw new ServerException($result); + } + + return $result; + } + + /*** + * @return PromiseInterface + * @throws Exception + */ + public function requestAsync() + { + $this->resolveOption(); + + return self::createClient($this)->requestAsync( + $this->method, + (string)$this->uri, + $this->options + ); + } + + /** + * @param Request $request + * + * @return Client + * @throws Exception + */ + public static function createClient(Request $request = null) + { + if (AlibabaCloud::hasMock()) { + $stack = HandlerStack::create(AlibabaCloud::getMock()); + } else { + $stack = HandlerStack::create(); + } + + if (AlibabaCloud::isRememberHistory()) { + $stack->push(Middleware::history(AlibabaCloud::referenceHistory())); + } + + if (AlibabaCloud::getLogger()) { + $stack->push(Middleware::log( + AlibabaCloud::getLogger(), + new MessageFormatter(AlibabaCloud::getLogFormat()) + )); + } + + $stack->push(Middleware::mapResponse(static function (ResponseInterface $response) use ($request) { + return new Result($response, $request); + })); + + self::$config['handler'] = $stack; + + return new Client(self::$config); + } + + /** + * @throws ClientException + * @throws Exception + */ + private function response() + { + try { + return self::createClient($this)->request( + $this->method, + (string)$this->uri, + $this->options + ); + } catch (GuzzleException $exception) { + if ($this->shouldClientRetry($exception)) { + return $this->response(); + } + throw new ClientException( + $exception->getMessage(), + SDK::SERVER_UNREACHABLE, + $exception + ); + } + } + + /** + * Remove redundant Query + * + * @codeCoverageIgnore + */ + private function cleanQuery() + { + if (isset($this->options['query']) && $this->options['query'] === []) { + unset($this->options['query']); + } + } + + /** + * Remove redundant Headers + * + * @codeCoverageIgnore + */ + private function cleanFormParams() + { + if (isset($this->options['form_params']) && $this->options['form_params'] === []) { + unset($this->options['form_params']); + } + } +} diff --git a/vendor/alibabacloud/client/src/Request/RoaRequest.php b/vendor/alibabacloud/client/src/Request/RoaRequest.php new file mode 100644 index 0000000..2993f14 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/RoaRequest.php @@ -0,0 +1,333 @@ +resolveQuery(); + $this->resolveHeaders(); + $this->resolveBody(); + $this->resolveUri(); + $this->resolveSignature(); + } + + private function resolveQuery() + { + if (!isset($this->options['query']['Version'])) { + $this->options['query']['Version'] = $this->version; + } + } + + private function resolveBody() + { + // If the body has already been specified, it will not be resolved. + if (isset($this->options['body'])) { + return; + } + + if (!isset($this->options['form_params'])) { + return; + } + + // Merge data, compatible with parameters set from constructor. + $params = Arrays::merge( + [ + $this->data, + $this->options['form_params'] + ] + ); + + $this->encodeBody($params); + + unset($this->options['form_params']); + } + + /** + * Determine the body format based on the Content-Type and calculate the MD5 value. + * + * @param array $params + */ + private function encodeBody(array $params) + { + if (Stringy::contains($this->options['headers']['Content-Type'], 'application/json', false)) { + $this->options['body'] = json_encode($params); + $this->options['headers']['Content-MD5'] = base64_encode(md5($this->options['body'], true)); + + return; + } + + $this->options['body'] = Encode::create($params)->ksort()->toString(); + $this->options['headers']['Content-MD5'] = base64_encode(md5($this->options['body'], true)); + $this->options['headers']['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; + } + + /** + * @throws ClientException + * @throws ServerException + * @throws Exception + */ + private function resolveHeaders() + { + $this->options['headers']['x-acs-version'] = $this->version; + $this->options['headers']['x-acs-region-id'] = $this->realRegionId(); + $this->options['headers']['Date'] = gmdate($this->dateTimeFormat); + + $signature = $this->httpClient()->getSignature(); + $this->options['headers']['x-acs-signature-method'] = $signature->getMethod(); + $this->options['headers']['x-acs-signature-nonce'] = Sign::uuid($this->product . $this->action); + $this->options['headers']['x-acs-signature-version'] = $signature->getVersion(); + if ($signature->getType()) { + $this->options['headers']['x-acs-signature-type'] = $signature->getType(); + } + + $this->resolveAccept(); + $this->resolveContentType(); + $this->resolveSecurityToken(); + $this->resolveBearerToken(); + } + + /** + * @throws ClientException + * @throws Exception + */ + private function resolveSignature() + { + $this->options['headers']['Authorization'] = $this->signature(); + } + + /** + * If accept is not specified, it is determined by format. + */ + private function resolveAccept() + { + if (!isset($this->options['headers']['Accept'])) { + $this->options['headers']['Accept'] = Accept::create($this->format)->toString(); + } + } + + /** + * If the Content-Type is not specified, it is determined according to accept. + */ + private function resolveContentType() + { + if (!isset($this->options['headers']['Content-Type'])) { + $this->options['headers']['Content-Type'] = "{$this->options['headers']['Accept']}; charset=utf-8"; + } + } + + /** + * @throws ClientException + * @throws ServerException + */ + private function resolveSecurityToken() + { + if (!$this->credential() instanceof StsCredential) { + return; + } + + if (!$this->credential()->getSecurityToken()) { + return; + } + + $this->options['headers']['x-acs-security-token'] = $this->credential()->getSecurityToken(); + } + + /** + * @throws ClientException + * @throws ServerException + */ + private function resolveBearerToken() + { + if ($this->credential() instanceof BearerTokenCredential) { + $this->options['headers']['x-acs-bearer-token'] = $this->credential()->getBearerToken(); + } + } + + /** + * Sign the request message. + * + * @return string + * @throws ClientException + * @throws ServerException + */ + private function signature() + { + /** + * @var AccessKeyCredential $credential + */ + $credential = $this->credential(); + $access_key_id = $credential->getAccessKeyId(); + $signature = $this->httpClient() + ->getSignature() + ->sign( + $this->stringToSign(), + $credential->getAccessKeySecret() + ); + + return "acs $access_key_id:$signature"; + } + + /** + * @return void + */ + private function resolveUri() + { + $path = Path::assign($this->pathPattern, $this->pathParameters); + + $this->uri = $this->uri->withPath($path) + ->withQuery( + $this->queryString() + ); + } + + /** + * @return string + */ + public function stringToSign() + { + $request = new \GuzzleHttp\Psr7\Request( + $this->method, + $this->uri, + $this->options['headers'] + ); + + return Sign::roaString($request); + } + + /** + * @return bool|string + */ + private function queryString() + { + $query = isset($this->options['query']) + ? $this->options['query'] + : []; + + return Encode::create($query)->ksort()->toString(); + } + + /** + * Set path parameter by name. + * + * @param string $name + * @param string $value + * + * @return RoaRequest + * @throws ClientException + */ + public function pathParameter($name, $value) + { + Filter::name($name); + + if ($value === '') { + throw new ClientException( + 'Value cannot be empty', + SDK::INVALID_ARGUMENT + ); + } + + $this->pathParameters[$name] = $value; + + return $this; + } + + /** + * Set path pattern. + * + * @param string $pattern + * + * @return self + * @throws ClientException + */ + public function pathPattern($pattern) + { + ApiFilter::pattern($pattern); + + $this->pathPattern = $pattern; + + return $this; + } + + /** + * Magic method for set or get request parameters. + * + * @param string $name + * @param mixed $arguments + * + * @return $this + */ + public function __call($name, $arguments) + { + if (strncmp($name, 'get', 3) === 0) { + $parameter_name = \mb_strcut($name, 3); + + return $this->__get($parameter_name); + } + + if (strncmp($name, 'with', 4) === 0) { + $parameter_name = \mb_strcut($name, 4); + $this->__set($parameter_name, $arguments[0]); + $this->pathParameters[$parameter_name] = $arguments[0]; + + return $this; + } + + if (strncmp($name, 'set', 3) === 0) { + $parameter_name = \mb_strcut($name, 3); + $with_method = "with$parameter_name"; + + throw new RuntimeException("Please use $with_method instead of $name"); + } + + throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); + } +} diff --git a/vendor/alibabacloud/client/src/Request/RpcRequest.php b/vendor/alibabacloud/client/src/Request/RpcRequest.php new file mode 100644 index 0000000..389c949 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/RpcRequest.php @@ -0,0 +1,203 @@ +resolveBoolInParameters(); + $this->resolveCommonParameters(); + $this->repositionParameters(); + } + + /** + * Convert a Boolean value to a string + */ + private function resolveBoolInParameters() + { + if (isset($this->options['query'])) { + $this->options['query'] = array_map( + static function ($value) { + return self::boolToString($value); + }, + $this->options['query'] + ); + } + } + + /** + * Convert a Boolean value to a string. + * + * @param bool|string $value + * + * @return string + */ + public static function boolToString($value) + { + if (is_bool($value)) { + return $value ? 'true' : 'false'; + } + + return $value; + } + + /** + * Resolve Common Parameters. + * + * @throws ClientException + * @throws Exception + */ + private function resolveCommonParameters() + { + $signature = $this->httpClient()->getSignature(); + $this->options['query']['RegionId'] = $this->realRegionId(); + $this->options['query']['Format'] = $this->format; + $this->options['query']['SignatureMethod'] = $signature->getMethod(); + $this->options['query']['SignatureVersion'] = $signature->getVersion(); + $this->options['query']['SignatureNonce'] = Sign::uuid($this->product . $this->action); + $this->options['query']['Timestamp'] = gmdate($this->dateTimeFormat); + $this->options['query']['Action'] = $this->action; + if ($this->credential()->getAccessKeyId()) { + $this->options['query']['AccessKeyId'] = $this->credential()->getAccessKeyId(); + } + if ($signature->getType()) { + $this->options['query']['SignatureType'] = $signature->getType(); + } + if (!isset($this->options['query']['Version'])) { + $this->options['query']['Version'] = $this->version; + } + $this->resolveSecurityToken(); + $this->resolveBearerToken(); + $this->options['query']['Signature'] = $this->signature(); + } + + /** + * @throws ClientException + * @throws ServerException + */ + private function resolveSecurityToken() + { + if (!$this->credential() instanceof StsCredential) { + return; + } + + if (!$this->credential()->getSecurityToken()) { + return; + } + + $this->options['query']['SecurityToken'] = $this->credential()->getSecurityToken(); + } + + /** + * @throws ClientException + * @throws ServerException + */ + private function resolveBearerToken() + { + if ($this->credential() instanceof BearerTokenCredential) { + $this->options['query']['BearerToken'] = $this->credential()->getBearerToken(); + } + } + + /** + * Sign the parameters. + * + * @return mixed + * @throws ClientException + * @throws ServerException + */ + private function signature() + { + return $this->httpClient() + ->getSignature() + ->sign( + $this->stringToSign(), + $this->credential()->getAccessKeySecret() . '&' + ); + } + + /** + * @return string + */ + public function stringToSign() + { + $query = isset($this->options['query']) ? $this->options['query'] : []; + $form_params = isset($this->options['form_params']) ? $this->options['form_params'] : []; + $parameters = Arrays::merge([$query, $form_params]); + + return Sign::rpcString($this->method, $parameters); + } + + /** + * Adjust parameter position + */ + private function repositionParameters() + { + if ($this->method === 'POST' || $this->method === 'PUT') { + foreach ($this->options['query'] as $api_key => $api_value) { + $this->options['form_params'][$api_key] = $api_value; + } + unset($this->options['query']); + } + } + + /** + * Magic method for set or get request parameters. + * + * @param string $name + * @param mixed $arguments + * + * @return $this + */ + public function __call($name, $arguments) + { + if (strncmp($name, 'get', 3) === 0) { + $parameter_name = \mb_strcut($name, 3); + + return $this->__get($parameter_name); + } + + if (strncmp($name, 'with', 4) === 0) { + $parameter_name = \mb_strcut($name, 4); + $this->__set($parameter_name, $arguments[0]); + $this->options['query'][$parameter_name] = $arguments[0]; + + return $this; + } + + if (strncmp($name, 'set', 3) === 0) { + $parameter_name = \mb_strcut($name, 3); + $with_method = "with$parameter_name"; + + throw new RuntimeException("Please use $with_method instead of $name"); + } + + throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); + } +} diff --git a/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php b/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php new file mode 100644 index 0000000..5b2dd6b --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Traits/AcsTrait.php @@ -0,0 +1,259 @@ +action = ApiFilter::action($action); + + return $this; + } + + /** + * @codeCoverageIgnore + * + * @param string $endpointSuffix + * + * @return AcsTrait + * @throws ClientException + */ + public function endpointSuffix($endpointSuffix) + { + $this->endpointSuffix = ApiFilter::endpointSuffix($endpointSuffix); + + return $this; + } + + /** + * @param string $network + */ + public function network($network) + { + $this->network = ApiFilter::network($network); + + return $this; + } + + /** + * @param string $version + * + * @return $this + * @throws ClientException + */ + public function version($version) + { + $this->version = ApiFilter::version($version); + + return $this; + } + + /** + * @param string $product + * + * @return $this + * @throws ClientException + */ + public function product($product) + { + $this->product = ApiFilter::product($product); + + return $this; + } + + /** + * @param string $endpointType + * + * @return $this + * @throws ClientException + */ + public function endpointType($endpointType) + { + $this->endpointType = ApiFilter::endpointType($endpointType); + + return $this; + } + + /** + * @param string $serviceCode + * + * @return $this + * @throws ClientException + */ + public function serviceCode($serviceCode) + { + $this->serviceCode = ApiFilter::serviceCode($serviceCode); + + return $this; + } + + /** + * Resolve Host. + * + * @throws ClientException + * @throws ServerException + */ + public function resolveHost() + { + // Return if specified + if ($this->uri->getHost() !== 'localhost') { + return; + } + + $region_id = $this->realRegionId(); + $host = ''; + + $this->resolveHostWays($host, $region_id); + + if (!$host) { + throw new ClientException( + "No host found for {$this->product} in the {$region_id}, you can specify host by host() method. " . + 'Like $request->host(\'xxx.xxx.aliyuncs.com\')', + SDK::HOST_NOT_FOUND + ); + } + + $this->uri = $this->uri->withHost($host); + } + + /** + * @param string $host + * @param string $region_id + * + * @throws ClientException + * @throws ServerException + */ + private function resolveHostWays(&$host, $region_id) + { + $host = AlibabaCloud::resolveHostByStatic($this->product, $region_id); + + // 1. Find host by map. + if (!$host && $this->network === 'public' && isset($this->endpointMap[$region_id])) { + $host = $this->endpointMap[$region_id]; + } + + if (!$host) { + $this->hostResolver($host, $region_id); + } + } + + /** + * @codeCoverageIgnore + * + * @param string $host + * @param string $region_id + * + * @throws ClientException + * @throws ServerException + */ + private function hostResolver(&$host, $region_id) + { + // 2. Find host by rules. + if ($this->endpointRegional !== null) { + $host = AlibabaCloud::resolveHostByRule($this); + } + + // 3. Find in the local array file. + if (!$host) { + $host = AlibabaCloud::resolveHost($this->product, $region_id); + } + + // 4. Find in the Location service. + if (!$host && $this->serviceCode) { + $host = LocationService::resolveHost($this); + } + } + + /** + * @return string + * @throws ClientException + */ + public function realRegionId() + { + if ($this->regionId !== null) { + return $this->regionId; + } + + if ($this->httpClient()->regionId !== null) { + return $this->httpClient()->regionId; + } + + if (AlibabaCloud::getDefaultRegionId() !== null) { + return AlibabaCloud::getDefaultRegionId(); + } + + if ($this->product && AlibabaCloud::isGlobalProduct($this->product)) { + return 'global'; + } + + throw new ClientException("Missing required 'RegionId' for Request", SDK::INVALID_REGION_ID); + } +} diff --git a/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php b/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php new file mode 100644 index 0000000..37a2d22 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Traits/ClientTrait.php @@ -0,0 +1,98 @@ +httpClient()->getCredential(); + } + + $timeout = isset($this->options['timeout']) + ? $this->options['timeout'] + : Request::TIMEOUT; + + $connectTimeout = isset($this->options['connect_timeout']) + ? $this->options['connect_timeout'] + : Request::CONNECT_TIMEOUT; + + return $this->httpClient()->getSessionCredential($timeout, $connectTimeout); + } + + /** + * Get the client based on the request's settings. + * + * @return Client + * @throws ClientException + */ + public function httpClient() + { + if (!AlibabaCloud::all()) { + if (CredentialsProvider::hasCustomChain()) { + CredentialsProvider::customProvider($this->client); + } else { + CredentialsProvider::defaultProvider($this->client); + } + } + + return AlibabaCloud::get($this->client); + } + + /** + * Merged with the client's options, the same name will be overwritten. + * + * @throws ClientException + */ + public function mergeOptionsIntoClient() + { + $this->options = Arrays::merge( + [ + $this->httpClient()->options, + $this->options + ] + ); + } +} diff --git a/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php b/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php new file mode 100644 index 0000000..ee64e52 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Traits/DeprecatedRoaTrait.php @@ -0,0 +1,55 @@ +pathParameter($name, $value); + } + + /** + * @param $pathPattern + * + * @return $this + * @deprecated + * @codeCoverageIgnore + */ + public function setUriPattern($pathPattern) + { + return $this->pathPattern($pathPattern); + } + + /** + * @return string + * @deprecated + * @codeCoverageIgnore + */ + public function getUriPattern() + { + return $this->pathPattern; + } + + /** + * @return array + * @deprecated + * @codeCoverageIgnore + */ + public function getPathParameters() + { + return $this->pathParameters; + } +} diff --git a/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php b/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php new file mode 100644 index 0000000..406e6ed --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Traits/DeprecatedTrait.php @@ -0,0 +1,246 @@ +body($content); + } + + /** + * @param $method + * + * @return $this + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function setMethod($method) + { + return $this->method($method); + } + + /** + * @param $scheme + * + * @return $this + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function setProtocol($scheme) + { + return $this->scheme($scheme); + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getProtocolType() + { + return $this->uri->getScheme(); + } + + /** + * @param $scheme + * + * @return $this + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function setProtocolType($scheme) + { + return $this->scheme($scheme); + } + + /** + * @param $actionName + * + * @return $this + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function setActionName($actionName) + { + return $this->action($actionName); + } + + /** + * @param $format + * + * @return $this + * @throws ClientException + * @deprecated + * @codeCoverageIgnore + */ + public function setAcceptFormat($format) + { + return $this->format($format); + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getProtocol() + { + return $this->uri->getScheme(); + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getContent() + { + return isset($this->options['body']) + ? $this->options['body'] + : null; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getMethod() + { + return $this->method; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getHeaders() + { + return isset($this->options['headers']) + ? $this->options['headers'] + : []; + } + + /** + * @param $headerKey + * @param $headerValue + * + * @return $this + * @deprecated + * @codeCoverageIgnore + */ + public function addHeader($headerKey, $headerValue) + { + $this->options['headers'][$headerKey] = $headerValue; + + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getQueryParameters() + { + return isset($this->options['query']) + ? $this->options['query'] + : []; + } + + /** + * @param $name + * @param $value + * + * @return $this + * @deprecated + * @codeCoverageIgnore + */ + public function setQueryParameters($name, $value) + { + $this->options['query'][$name] = $value; + + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getDomainParameter() + { + return isset($this->options['form_params']) + ? $this->options['form_params'] + : []; + } + + /** + * @param $name + * @param $value + * + * @return $this + * @deprecated + * @codeCoverageIgnore + */ + public function putDomainParameters($name, $value) + { + $this->options['form_params'][$name] = $value; + + return $this; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getActionName() + { + return $this->action; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getAcceptFormat() + { + return $this->format; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getLocationEndpointType() + { + return $this->endpointType; + } + + /** + * @deprecated + * @codeCoverageIgnore + */ + public function getLocationServiceCode() + { + return $this->serviceCode; + } +} diff --git a/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php b/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php new file mode 100644 index 0000000..be1d002 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/Traits/RetryTrait.php @@ -0,0 +1,149 @@ +serverRetry = ClientFilter::retry($times); + $this->serverRetryStrings = $strings; + $this->serverRetryStatusCodes = $statusCodes; + + return $this; + } + + /** + * @param int $times + * @param array $strings + * @param array $codes + * + * @return $this + * @throws ClientException + */ + public function retryByClient($times, array $strings, array $codes = []) + { + $this->clientRetry = ClientFilter::retry($times); + $this->clientRetryStrings = $strings; + $this->clientRetryStatusCodes = $codes; + + return $this; + } + + /** + * @param Result $result + * + * @return bool + */ + private function shouldServerRetry(Result $result) + { + if ($this->serverRetry <= 0) { + return false; + } + + if (in_array($result->getStatusCode(), $this->serverRetryStatusCodes)) { + $this->serverRetry--; + + return true; + } + + foreach ($this->serverRetryStrings as $message) { + if (Stringy::contains($result->getBody(), $message)) { + $this->serverRetry--; + + return true; + } + } + + return false; + } + + /** + * @param Exception $exception + * + * @return bool + */ + private function shouldClientRetry(Exception $exception) + { + if ($this->clientRetry <= 0) { + return false; + } + + if (in_array($exception->getCode(), $this->clientRetryStatusCodes, true)) { + $this->clientRetry--; + + return true; + } + + foreach ($this->clientRetryStrings as $message) { + if (Stringy::contains($exception->getMessage(), $message)) { + $this->clientRetry--; + + return true; + } + } + + return false; + } +} diff --git a/vendor/alibabacloud/client/src/Request/UserAgent.php b/vendor/alibabacloud/client/src/Request/UserAgent.php new file mode 100644 index 0000000..beb3283 --- /dev/null +++ b/vendor/alibabacloud/client/src/Request/UserAgent.php @@ -0,0 +1,142 @@ + $value) { + if ($value === null) { + $newUserAgent[] = $key; + continue; + } + $newUserAgent[] = "$key/$value"; + } + + return $userAgent . \implode(' ', $newUserAgent); + } + + /** + * UserAgent constructor. + */ + private static function defaultFields() + { + if (self::$userAgent === []) { + self::$userAgent = [ + 'Client' => AlibabaCloud::VERSION, + 'PHP' => \PHP_VERSION, + ]; + } + } + + /** + * @param array $append + * + * @return array + */ + public static function clean(array $append) + { + foreach ($append as $key => $value) { + if (self::isGuarded($key)) { + unset($append[$key]); + continue; + } + } + + return $append; + } + + /** + * @param $name + * + * @return bool + */ + public static function isGuarded($name) + { + return in_array(strtolower($name), self::$guard, true); + } + + /** + * set User Agent of Alibaba Cloud. + * + * @param string $name + * @param string $value + * + * @throws ClientException + */ + public static function append($name, $value) + { + Filter::name($name); + Filter::value($value); + + self::defaultFields(); + + if (!self::isGuarded($name)) { + self::$userAgent[$name] = $value; + } + } + + /** + * @param array $userAgent + */ + public static function with(array $userAgent) + { + self::$userAgent = self::clean($userAgent); + } + + /** + * Clear all of the User Agent. + */ + public static function clear() + { + self::$userAgent = []; + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php b/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php new file mode 100644 index 0000000..f375567 --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/ActionResolverTrait.php @@ -0,0 +1,50 @@ +action) { + $array = explode('\\', get_class($this)); + $this->action = array_pop($array); + } + } + + /** + * Append SDK version into User-Agent + * + * @throws ClientException + * @throws ReflectionException + */ + private function appendSdkUA() + { + if (!(new ReflectionClass(AlibabaCloud::class))->hasMethod('appendUserAgent')) { + return; + } + + if (!class_exists('AlibabaCloud\Release')) { + return; + } + + AlibabaCloud::appendUserAgent('SDK', \AlibabaCloud\Release::VERSION); + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/ApiResolver.php b/vendor/alibabacloud/client/src/Resolver/ApiResolver.php new file mode 100644 index 0000000..7a2bc2b --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/ApiResolver.php @@ -0,0 +1,113 @@ +__call($name, $arguments); + } + + /** + * @param $api + * @param $arguments + * + * @return mixed + * @throws ClientException + */ + public function __call($api, $arguments) + { + $product_name = $this->getProductName(); + $class = $this->getNamespace() . '\\' . \ucfirst($api); + + if (\class_exists($class)) { + if (isset($arguments[0])) { + return $this->warpEndpoint(new $class($arguments[0])); + } + + return $this->warpEndpoint(new $class()); + } + + throw new ClientException( + "{$product_name} contains no $api", + 'SDK.ApiNotFound' + ); + } + + /** + * @param Request $request + * + * @return Request + */ + public function warpEndpoint(Request $request) + { + $reflect = new ReflectionObject($request); + $product_dir = dirname(dirname($reflect->getFileName())); + $endpoints_json = "$product_dir/endpoints.json"; + if (file_exists($endpoints_json)) { + $endpoints = json_decode(file_get_contents($endpoints_json), true); + if (isset($endpoints['endpoint_map'])) { + $request->endpointMap = $endpoints['endpoint_map']; + } + if (isset($endpoints['endpoint_regional'])) { + $request->endpointRegional = $endpoints['endpoint_regional']; + } + } + + return $request; + } + + /** + * @return mixed + * @throws ClientException + */ + private function getProductName() + { + $array = \explode('\\', \get_class($this)); + if (isset($array[3])) { + return str_replace('ApiResolver', '', $array[3]); + } + throw new ClientException( + 'Service name not found.', + 'SDK.ServiceNotFound' + ); + } + + /** + * @return string + * @throws ClientException + */ + private function getNamespace() + { + $array = \explode('\\', \get_class($this)); + + if (!isset($array[3])) { + throw new ClientException( + 'Get namespace error.', + 'SDK.ParseError' + ); + } + + unset($array[3]); + + return \implode('\\', $array); + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/CallTrait.php b/vendor/alibabacloud/client/src/Resolver/CallTrait.php new file mode 100644 index 0000000..520c03b --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/CallTrait.php @@ -0,0 +1,66 @@ +__get($parameter); + } + + if (strncmp($name, 'with', 4) === 0) { + $parameter = \mb_strcut($name, 4); + + $value = $this->getCallArguments($name, $arguments); + $this->data[$parameter] = $value; + $this->parameterPosition()[$parameter] = $value; + + return $this; + } + + if (strncmp($name, 'set', 3) === 0) { + $parameter = \mb_strcut($name, 3); + $with_method = "with$parameter"; + + return $this->$with_method($this->getCallArguments($name, $arguments)); + } + + throw new RuntimeException('Call to undefined method ' . __CLASS__ . '::' . $name . '()'); + } + + /** + * @param string $name + * @param array $arguments + * @param int $index + * + * @return mixed + */ + private function getCallArguments($name, array $arguments, $index = 0) + { + if (!isset($arguments[$index])) { + throw new \InvalidArgumentException("Missing arguments to method $name"); + } + + return $arguments[$index]; + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/Roa.php b/vendor/alibabacloud/client/src/Resolver/Roa.php new file mode 100644 index 0000000..719cb0a --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/Roa.php @@ -0,0 +1,43 @@ +resolveActionName(); + $this->appendSdkUA(); + } + + /** + * @return mixed + */ + private function ¶meterPosition() + { + return $this->pathParameters; + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/Rpc.php b/vendor/alibabacloud/client/src/Resolver/Rpc.php new file mode 100644 index 0000000..0926ca4 --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/Rpc.php @@ -0,0 +1,41 @@ +resolveActionName(); + $this->appendSdkUA(); + } + + /** + * @return mixed + */ + private function ¶meterPosition() + { + return $this->options['query']; + } +} diff --git a/vendor/alibabacloud/client/src/Resolver/VersionResolver.php b/vendor/alibabacloud/client/src/Resolver/VersionResolver.php new file mode 100644 index 0000000..5662718 --- /dev/null +++ b/vendor/alibabacloud/client/src/Resolver/VersionResolver.php @@ -0,0 +1,74 @@ +__call($name, $arguments); + } + + /** + * @param string $version + * @param array $arguments + * + * @return mixed + * @throws ClientException + */ + public function __call($version, $arguments) + { + $version = \ucfirst($version); + $product = $this->getProductName(); + + $position = strpos($product, 'Version'); + if ($position !== false && $position !== 0) { + $product = \str_replace('Version', '', $product); + } + + $class = "AlibabaCloud\\{$product}\\$version\\{$product}ApiResolver"; + + if (\class_exists($class)) { + return new $class(); + } + + throw new ClientException( + "$product Versions contains no {$version}", + 'SDK.VersionNotFound' + ); + } + + /** + * @return mixed + * @throws ClientException + */ + private function getProductName() + { + $array = \explode('\\', \get_class($this)); + + if (is_array($array) && isset($array[1])) { + return $array[1]; + } + + throw new ClientException( + 'Service name not found.', + 'SDK.ServiceNotFound' + ); + } +} diff --git a/vendor/alibabacloud/client/src/Result/Result.php b/vendor/alibabacloud/client/src/Result/Result.php new file mode 100644 index 0000000..7c2910e --- /dev/null +++ b/vendor/alibabacloud/client/src/Result/Result.php @@ -0,0 +1,151 @@ +getStatusCode(), + $response->getHeaders(), + $response->getBody(), + $response->getProtocolVersion(), + $response->getReasonPhrase() + ); + + $this->request = $request; + + $this->resolveData(); + } + + private function resolveData() + { + $content = $this->getBody()->getContents(); + + switch ($this->getRequestFormat()) { + case 'JSON': + $result_data = $this->jsonToArray($content); + break; + case 'XML': + $result_data = $this->xmlToArray($content); + break; + case 'RAW': + $result_data = $this->jsonToArray($content); + break; + default: + $result_data = $this->jsonToArray($content); + } + + if (!$result_data) { + $result_data = []; + } + + $this->dot($result_data); + } + + /** + * @return string + */ + private function getRequestFormat() + { + return ($this->request instanceof Request) + ? \strtoupper($this->request->format) + : 'JSON'; + } + + /** + * @param string $response + * + * @return array + */ + private function jsonToArray($response) + { + try { + return \GuzzleHttp\json_decode($response, true); + } catch (InvalidArgumentException $exception) { + return []; + } + } + + /** + * @param string $string + * + * @return array + */ + private function xmlToArray($string) + { + try { + return json_decode(json_encode(simplexml_load_string($string)), true); + } catch (Exception $exception) { + return []; + } + } + + /** + * @return string + */ + public function __toString() + { + return (string)$this->getBody(); + } + + /** + * @return Request + */ + public function getRequest() + { + return $this->request; + } + + /** + * @codeCoverageIgnore + * @return Response + * @deprecated + */ + public function getResponse() + { + return $this; + } + + /** + * @return bool + */ + public function isSuccess() + { + return 200 <= $this->getStatusCode() + && 300 > $this->getStatusCode(); + } +} diff --git a/vendor/alibabacloud/client/src/SDK.php b/vendor/alibabacloud/client/src/SDK.php new file mode 100644 index 0000000..8976cd0 --- /dev/null +++ b/vendor/alibabacloud/client/src/SDK.php @@ -0,0 +1,57 @@ +getMessage(), + SDK::INVALID_CREDENTIAL + ); + } + + return base64_encode($binarySignature); + } +} diff --git a/vendor/alibabacloud/client/src/Signature/Signature.php b/vendor/alibabacloud/client/src/Signature/Signature.php new file mode 100644 index 0000000..3b01e69 --- /dev/null +++ b/vendor/alibabacloud/client/src/Signature/Signature.php @@ -0,0 +1,49 @@ +sign($string, $accessKeySecret); + + return "acs $accessKeyId:$signature"; + } + + /** + * @codeCoverageIgnore + * + * @param string $accessKeySecret + * @param string $method + * @param array $parameters + * + * @return string + */ + public function rpc($accessKeySecret, $method, array $parameters) + { + $string = Sign::rpcString($method, $parameters); + + return $this->sign($string, $accessKeySecret . '&'); + } +} diff --git a/vendor/alibabacloud/client/src/Signature/SignatureInterface.php b/vendor/alibabacloud/client/src/Signature/SignatureInterface.php new file mode 100644 index 0000000..afa82c8 --- /dev/null +++ b/vendor/alibabacloud/client/src/Signature/SignatureInterface.php @@ -0,0 +1,35 @@ + $value) { + if (is_int($key)) { + $result[] = $value; + continue; + } + + if (isset($result[$key]) && is_array($result[$key])) { + $result[$key] = self::merge( + [$result[$key], $value] + ); + continue; + } + + $result[$key] = $value; + } + } + + return $result; + } +} diff --git a/vendor/alibabacloud/client/src/Support/Path.php b/vendor/alibabacloud/client/src/Support/Path.php new file mode 100644 index 0000000..e1a6464 --- /dev/null +++ b/vendor/alibabacloud/client/src/Support/Path.php @@ -0,0 +1,28 @@ + $value) { + $pattern = str_replace("[$key]", $value, $pattern); + } + + return $pattern; + } +} diff --git a/vendor/alibabacloud/client/src/Support/Sign.php b/vendor/alibabacloud/client/src/Support/Sign.php new file mode 100644 index 0000000..1310d3d --- /dev/null +++ b/vendor/alibabacloud/client/src/Support/Sign.php @@ -0,0 +1,143 @@ + $headerValue) { + $key = strtolower($headerKey); + if (strncmp($key, 'x-acs-', 6) === 0) { + $array[$key] = $headerValue; + } + } + ksort($array); + $string = ''; + foreach ($array as $sortMapKey => $sortMapValue) { + $string .= $sortMapKey . ':' . $sortMapValue[0] . self::$headerSeparator; + } + + return $string; + } + + /** + * @param UriInterface $uri + * + * @return string + */ + private static function resourceString(UriInterface $uri) + { + return $uri->getPath() . '?' . rawurldecode($uri->getQuery()); + } + + /** + * @param string $method + * @param array $headers + * + * @return string + */ + private static function headerString($method, array $headers) + { + $string = $method . self::$headerSeparator; + if (isset($headers['Accept'][0])) { + $string .= $headers['Accept'][0]; + } + $string .= self::$headerSeparator; + + if (isset($headers['Content-MD5'][0])) { + $string .= $headers['Content-MD5'][0]; + } + $string .= self::$headerSeparator; + + if (isset($headers['Content-Type'][0])) { + $string .= $headers['Content-Type'][0]; + } + $string .= self::$headerSeparator; + + if (isset($headers['Date'][0])) { + $string .= $headers['Date'][0]; + } + $string .= self::$headerSeparator; + + $string .= self::acsHeaderString($headers); + + return $string; + } + + /** + * @param string $string + * + * @return null|string|string[] + */ + private static function percentEncode($string) + { + $result = urlencode($string); + $result = str_replace(['+', '*'], ['%20', '%2A'], $result); + $result = preg_replace('/%7E/', '~', $result); + + return $result; + } + + /** + * @param string $method + * @param array $parameters + * + * @return string + */ + public static function rpcString($method, array $parameters) + { + ksort($parameters); + $canonicalized = ''; + foreach ($parameters as $key => $value) { + if ($value === null || $value === '') { + continue; + } + $canonicalized .= '&' . self::percentEncode($key) . '=' . self::percentEncode($value); + } + + return $method . '&%2F&' . self::percentEncode(substr($canonicalized, 1)); + } + + /** + * @param Request $request + * + * @return string + */ + public static function roaString(Request $request) + { + return self::headerString($request->getMethod(), $request->getHeaders()) . + self::resourceString($request->getUri()); + } + + /** + * @param string $salt + * + * @return string + */ + public static function uuid($salt) + { + return md5($salt . uniqid(md5(microtime(true)), true)) . microtime(); + } +} diff --git a/vendor/alibabacloud/client/src/Support/Stringy.php b/vendor/alibabacloud/client/src/Support/Stringy.php new file mode 100644 index 0000000..f4c1099 --- /dev/null +++ b/vendor/alibabacloud/client/src/Support/Stringy.php @@ -0,0 +1,47 @@ +data[$offset])) { + return $this->data[$offset]; + } + + $value = null; + + return $value; + } + + /** + * @param string $offset + * @param string|mixed $value + */ + #[\ReturnTypeWillChange] + public function offsetSet($offset, $value) + { + $this->data[$offset] = $value; + } + + /** + * @param string $offset + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($offset) + { + return isset($this->data[$offset]); + } + + /** + * @param string $offset + */ + #[\ReturnTypeWillChange] + public function offsetUnset($offset) + { + unset($this->data[$offset]); + } +} diff --git a/vendor/alibabacloud/client/src/Traits/ClientTrait.php b/vendor/alibabacloud/client/src/Traits/ClientTrait.php new file mode 100644 index 0000000..2cb5309 --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/ClientTrait.php @@ -0,0 +1,273 @@ +load(); + } + $list = []; + foreach (\func_get_args() as $filename) { + $list[$filename] = (new IniCredential($filename))->load(); + } + + return $list; + } + + /** + * Custom Client. + * + * @param CredentialsInterface $credentials + * @param SignatureInterface $signature + * + * @return Client + */ + public static function client(CredentialsInterface $credentials, SignatureInterface $signature) + { + return new Client($credentials, $signature); + } + + /** + * Use the AccessKey to complete the authentication. + * + * @param string $accessKeyId + * @param string $accessKeySecret + * + * @return AccessKeyClient + * @throws ClientException + */ + public static function accessKeyClient($accessKeyId, $accessKeySecret) + { + if (null === $accessKeyId || strpos($accessKeyId, ' ') !== false) { + throw new ClientException( + 'AccessKey ID format is invalid', + SDK::INVALID_ARGUMENT + ); + } + + if (null === $accessKeySecret || strpos($accessKeySecret, ' ') !== false) { + throw new ClientException( + 'AccessKey Secret format is invalid', + SDK::INVALID_ARGUMENT + ); + } + + return new AccessKeyClient($accessKeyId, $accessKeySecret); + } + + /** + * Use the AssumeRole of the RAM account to complete the authentication. + * + * @param string $accessKeyId + * @param string $accessKeySecret + * @param string $roleArn + * @param string $roleSessionName + * @param string|array $policy + * + * @return RamRoleArnClient + * @throws ClientException + */ + public static function ramRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy = '') + { + return new RamRoleArnClient($accessKeyId, $accessKeySecret, $roleArn, $roleSessionName, $policy); + } + + /** + * Use the RAM role of an ECS instance to complete the authentication. + * + * @param string $roleName + * + * @return EcsRamRoleClient + * @throws ClientException + */ + public static function ecsRamRoleClient($roleName) + { + return new EcsRamRoleClient($roleName); + } + + /** + * Use the Bearer Token to complete the authentication. + * + * @param string $bearerToken + * + * @return BearerTokenClient + * @throws ClientException + */ + public static function bearerTokenClient($bearerToken) + { + return new BearerTokenClient($bearerToken); + } + + /** + * Use the STS Token to complete the authentication. + * + * @param string $accessKeyId Access key ID + * @param string $accessKeySecret Access Key Secret + * @param string $securityToken Security Token + * + * @return StsClient + * @throws ClientException + */ + public static function stsClient($accessKeyId, $accessKeySecret, $securityToken = '') + { + return new StsClient($accessKeyId, $accessKeySecret, $securityToken); + } + + /** + * Use the RSA key pair to complete the authentication (supported only on Japanese site) + * + * @param string $publicKeyId + * @param string $privateKeyFile + * + * @return RsaKeyPairClient + * @throws ClientException + */ + public static function rsaKeyPairClient($publicKeyId, $privateKeyFile) + { + return new RsaKeyPairClient($publicKeyId, $privateKeyFile); + } +} diff --git a/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php b/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php new file mode 100644 index 0000000..5d5c75a --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/DefaultRegionTrait.php @@ -0,0 +1,66 @@ +network ?: 'public'; + $suffix = $request->endpointSuffix; + if ($network === 'public') { + $network = ''; + } + + if ($request->endpointRegional === 'regional') { + $regionId = $request->realRegionId(); + return "{$request->product}{$suffix}{$network}.{$regionId}.aliyuncs.com"; + } + + if ($request->endpointRegional === 'central') { + return "{$request->product}{$suffix}{$network}.aliyuncs.com"; + } + + throw new InvalidArgumentException('endpointRegional is invalid.'); + } +} diff --git a/vendor/alibabacloud/client/src/Traits/HasDataTrait.php b/vendor/alibabacloud/client/src/Traits/HasDataTrait.php new file mode 100644 index 0000000..03c4b9d --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/HasDataTrait.php @@ -0,0 +1,324 @@ +dot->all()); + } + + /** + * Delete the contents of a given key or keys + * + * @param array|int|string|null $keys + */ + public function clear($keys = null) + { + $this->dot->clear($keys); + } + + /** + * Flatten an array with the given character as a key delimiter + * + * @param string $delimiter + * @param array|null $items + * @param string $prepend + * + * @return array + */ + public function flatten($delimiter = '.', $items = null, $prepend = '') + { + return $this->dot->flatten($delimiter, $items, $prepend); + } + + /** + * Return the value of a given key + * + * @param int|string|null $key + * @param mixed $default + * + * @return mixed + */ + public function get($key = null, $default = null) + { + return $this->dot->get($key, $default); + } + + /** + * Set a given key / value pair or pairs + * + * @param array|int|string $keys + * @param mixed $value + */ + public function set($keys, $value = null) + { + $this->dot->set($keys, $value); + } + + /** + * Check if a given key or keys are empty + * + * @param array|int|string|null $keys + * + * @return bool + */ + public function isEmpty($keys = null) + { + return $this->dot->isEmpty($keys); + } + + /** + * Replace all items with a given array as a reference + * + * @param array $items + */ + public function setReference(array &$items) + { + $this->dot->setReference($items); + } + + /** + * Return the value of a given key or all the values as JSON + * + * @param mixed $key + * @param int $options + * + * @return string + */ + public function toJson($key = null, $options = 0) + { + return $this->dot->toJson($key, $options); + } + + /** + * @return array + */ + public function toArray() + { + return $this->dot->all(); + } + + /** + * Check if a given key exists + * + * @param int|string $key + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return $this->dot->has($key); + } + + /** + * Return the value of a given key + * + * @param int|string $key + * + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->dot->offsetGet($key); + } + + /** + * Set a given value to the given key + * + * @param int|string|null $key + * @param mixed $value + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + $this->dot->offsetSet($key, $value); + } + + /** + * Delete the given key + * + * @param int|string $key + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + $this->delete($key); + } + + /** + * Delete the given key or keys + * + * @param array|int|string $keys + */ + public function delete($keys) + { + $this->dot->delete($keys); + } + + /* + * -------------------------------------------------------------- + * ArrayAccess interface + * -------------------------------------------------------------- + */ + + /** + * Return the number of items in a given key + * + * @param int|string|null $key + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count($key = null) + { + return $this->dot->count($key); + } + + /** + * Get an iterator for the stored items + * + * @return ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return $this->dot->getIterator(); + } + + /** + * Return items for JSON serialization + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->dot->jsonSerialize(); + } + + /** + * @param string $name + * + * @return mixed|null + */ + public function __get($name) + { + if (!isset($this->all()[$name])) { + return null; + } + + return \json_decode(\json_encode($this->all()))->$name; + } + + /* + * -------------------------------------------------------------- + * Countable interface + * -------------------------------------------------------------- + */ + + /** + * Return all the stored items + * + * @return array + */ + public function all() + { + return $this->dot->all(); + } + + /** + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + $this->add($name, $value); + } + + /** + * Set a given key / value pair or pairs + * if the key doesn't exist already + * + * @param array|int|string $keys + * @param mixed $value + */ + public function add($keys, $value = null) + { + $this->dot->add($keys, $value); + } + + + /* + * -------------------------------------------------------------- + * ObjectAccess + * -------------------------------------------------------------- + */ + + /** + * @param string $name + * + * @return bool + */ + public function __isset($name) + { + return $this->has($name); + } + + /** + * Check if a given key or keys exists + * + * @param array|int|string $keys + * + * @return bool + */ + public function has($keys) + { + return $this->dot->has($keys); + } + + /** + * @param $name + * + * @return void + */ + public function __unset($name) + { + $this->delete($name); + } + + /** + * @param array $data + */ + protected function dot(array $data = []) + { + $this->dot = new Dot($data); + } +} diff --git a/vendor/alibabacloud/client/src/Traits/HistoryTrait.php b/vendor/alibabacloud/client/src/Traits/HistoryTrait.php new file mode 100644 index 0000000..f70bb1d --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/HistoryTrait.php @@ -0,0 +1,68 @@ +options['timeout'] = ClientFilter::timeout($seconds); + + return $this; + } + + /** + * @param int $milliseconds + * + * @return $this + * @throws ClientException + */ + public function timeoutMilliseconds($milliseconds) + { + ClientFilter::milliseconds($milliseconds); + $seconds = $milliseconds / 1000; + + return $this->timeout($seconds); + } + + /** + * @param int|float $seconds + * + * @return $this + * @throws ClientException + */ + public function connectTimeout($seconds) + { + $this->options['connect_timeout'] = ClientFilter::connectTimeout($seconds); + + return $this; + } + + /** + * @param int $milliseconds + * + * @return $this + * @throws ClientException + */ + public function connectTimeoutMilliseconds($milliseconds) + { + ClientFilter::milliseconds($milliseconds); + $seconds = $milliseconds / 1000; + + return $this->connectTimeout($seconds); + } + + /** + * @param bool $debug + * + * @return $this + */ + public function debug($debug) + { + $this->options['debug'] = $debug; + + return $this; + } + + /** + * @codeCoverageIgnore + * + * @param array $cert + * + * @return $this + */ + public function cert($cert) + { + $this->options['cert'] = $cert; + + return $this; + } + + /** + * @codeCoverageIgnore + * + * @param array|string $proxy + * + * @return $this + */ + public function proxy($proxy) + { + $this->options['proxy'] = $proxy; + + return $this; + } + + /** + * @param mixed $verify + * + * @return $this + */ + public function verify($verify) + { + $this->options['verify'] = $verify; + + return $this; + } + + /** + * @param array $options + * + * @return $this + */ + public function options(array $options) + { + if ($options !== []) { + $this->options = Arrays::merge([$this->options, $options]); + } + + return $this; + } +} diff --git a/vendor/alibabacloud/client/src/Traits/LogTrait.php b/vendor/alibabacloud/client/src/Traits/LogTrait.php new file mode 100644 index 0000000..0457602 --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/LogTrait.php @@ -0,0 +1,97 @@ +format('Y-m-d H:i:s.u')], + $template + ); + } + + /** + * Apache Common Log Format. + * + * @param string $formatter + * + * @link http://httpd.apache.org/docs/2.4/logs.html#common + * @see \GuzzleHttp\MessageFormatter + */ + public static function setLogFormat($formatter) + { + self::$logFormat = $formatter; + } + + /** + * @return float|mixed + */ + private static function getCost() + { + return microtime(true) - self::$logStartTime; + } +} diff --git a/vendor/alibabacloud/client/src/Traits/MockTrait.php b/vendor/alibabacloud/client/src/Traits/MockTrait.php new file mode 100644 index 0000000..28928d1 --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/MockTrait.php @@ -0,0 +1,97 @@ +data[$name])) { + return null; + } + + return \json_decode(\json_encode($this->data))->$name; + } + + /** + * @param string $name + * @param mixed $value + */ + public function __set($name, $value) + { + $this->data[$name] = $value; + } + + /** + * @param string $name + * + * @return bool + */ + public function __isset($name) + { + return isset($this->data[$name]); + } + + /** + * @param $name + * + * @return void + */ + public function __unset($name) + { + unset($this->data[$name]); + } +} diff --git a/vendor/alibabacloud/client/src/Traits/RegionTrait.php b/vendor/alibabacloud/client/src/Traits/RegionTrait.php new file mode 100644 index 0000000..da6bee4 --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/RegionTrait.php @@ -0,0 +1,33 @@ +regionId = ClientFilter::regionId($regionId); + + return $this; + } +} diff --git a/vendor/alibabacloud/client/src/Traits/RequestTrait.php b/vendor/alibabacloud/client/src/Traits/RequestTrait.php new file mode 100644 index 0000000..afcb9a4 --- /dev/null +++ b/vendor/alibabacloud/client/src/Traits/RequestTrait.php @@ -0,0 +1,90 @@ +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if ( + (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true)) + || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) + ) { + return include("phpvfscomposer://" . __DIR__ . '/..'.'/mtdowling/jmespath.php/bin/jp.php'); + } +} + +return include __DIR__ . '/..'.'/mtdowling/jmespath.php/bin/jp.php'; diff --git a/vendor/bin/jp.php.bat b/vendor/bin/jp.php.bat new file mode 100644 index 0000000..9af045e --- /dev/null +++ b/vendor/bin/jp.php.bat @@ -0,0 +1,5 @@ +@ECHO OFF +setlocal DISABLEDELAYEDEXPANSION +SET BIN_TARGET=%~dp0/jp.php +SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 +php "%BIN_TARGET%" %* diff --git a/vendor/clagiordano/weblibs-configmanager/.github/workflows/php.yml b/vendor/clagiordano/weblibs-configmanager/.github/workflows/php.yml new file mode 100644 index 0000000..365f400 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/.github/workflows/php.yml @@ -0,0 +1,43 @@ +name: PHP Composer + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + build: + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + operating-system: [ ubuntu-18.04 ] + php: [ '5.4', '5.5', '5.6', '7.1', '7.2', '7.3', '7.4' ] + name: PHP ${{ matrix.php }}@${{ matrix.operating-system }} + + steps: + - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@master + with: + php-version: ${{ matrix.php }} + extensions: xdebug + + - name: check php version + run: php --version + + - name: check composer version + run: composer --version + + - name: Validate composer.json and composer.lock + run: composer validate + + - name: Install dependencies + run: composer install --prefer-dist --no-progress + + - name: Run test suite + run: ./vendor/bin/phpunit + + - name: Upload coverage results to Coveralls + env: + COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_TOKEN }} + run: ./vendor/bin/coveralls --coverage_clover=build/logs/clover.xml -v diff --git a/vendor/clagiordano/weblibs-configmanager/.gitignore b/vendor/clagiordano/weblibs-configmanager/.gitignore new file mode 100644 index 0000000..521afeb --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/.gitignore @@ -0,0 +1,3 @@ +composer.phar +vendor +testsdata/phpunit_* \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/README.md b/vendor/clagiordano/weblibs-configmanager/README.md new file mode 100644 index 0000000..b200663 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/README.md @@ -0,0 +1,143 @@ +[![PHP Composer](https://github.com/clagiordano/weblibs-configmanager/actions/workflows/php.yml/badge.svg)](https://github.com/clagiordano/weblibs-configmanager/actions/workflows/php.yml) +[![Coverage Status](https://coveralls.io/repos/github/clagiordano/weblibs-configmanager/badge.svg?branch=master)](https://coveralls.io/github/clagiordano/weblibs-configmanager?branch=master) +[![SymfonyInsight](https://insight.symfony.com/projects/54c4e80c-ff15-4235-8bec-a4c71bbe3ba5/mini.svg)](https://insight.symfony.com/projects/54c4e80c-ff15-4235-8bec-a4c71bbe3ba5) + +# weblibs-configmanager +weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object. + +## Why use weblibs-configmanager ? +The purpose of this project is to propose a simple and lightweight library to manage php hierarchical configuration files. + +## Supported formats + +This package supports config files in the following format: + +Format | Component | Since version | Description +:---: | :---: | :---: | --- +Array | `ConfigManager` | `v0.1.0` | Deprecated, legacy name for the php array reader, only for compatibility support +Array | `ArrayConfigManager` | `v1.2.0` | A file that returns a php array, the original supported format +Yaml | `YamlConfigManager` | `v1.3.0` | A file containing a valid YAML file +JSON | `JsonConfigManager` | `v1.4.0` | A file containing a valid JSON file + +All the supported format are parsed and internally handled in the same way granting the same functionalities. + +## Installation +The recommended way to install weblibs-configmanager is through [Composer](https://getcomposer.org). +```bash +composer require clagiordano/weblibs-configmanager +``` + +## Usage examples (Array format) + +### Write a sample config file like this +```php + 'app_name', + 'db' => + array ( + 'host' => 'localhost', + 'user' => 'sample_user', + 'pass' => 'sample_pass', + 'port' => 3306, + ), + 'other' => + array ( + 'multi' => + array ( + 'deep' => + array ( + 'nested' => 'config_value', + ), + ), + ), +); + +``` + +### Instance ConfigManager object + +```php +use clagiordano\weblibs\configmanager\ConfigManager; + +/** + * Instance object to read argument file + */ +$config = new ConfigManager("configfile.php"); +``` + +### Check if a value exists into config file + +```php +/** + * Check if a value exists into config file + */ +$value = $config->existValue('app'); +``` + +### Read a simple element from config file + +```php +/** + * Read a simple element from config file + */ +$value = $config->getValue('app'); +``` + +### Access to a nested element from config + +```php +/** + * Access to a nested element from config + */ +$nestedValue = $config->getValue('other.multi.deep.nested'); +``` + +### Change config value at runtime + +```php +/** + * Change config value at runtime + */ +$this->config->setValue('other.multi.deep.nested', "SUPERNESTED"); +``` + +### Save config file with original name (OVERWRITE) + +```php +/** + * Save config file with original name (OVERWRITE) + */ +$this->config->saveConfigFile(); +``` + +### Or save config file with a different name + +```php +/** + * Save config file with original name (OVERWRITE) + */ +$this->config->saveConfigFile('/new/file/name/or/path/test.php'); +``` + +### Optionally you can also reload config file from disk after save + +```php +/** + * Optionally you can also reload config file from disk after save + */ +$this->config->saveConfigFile('/new/file/name/or/path/test.php', true); +``` + +### Load another configuration file without reinstance ConfigManager + +```php +/** + * Load another configuration file without reinstance ConfigManager + */ +$this->config->loadConfig('another_config_file.php'); +``` + +## Legal +*Copyright (C) Claudio Giordano * diff --git a/vendor/clagiordano/weblibs-configmanager/composer.json b/vendor/clagiordano/weblibs-configmanager/composer.json new file mode 100644 index 0000000..d1b5156 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/composer.json @@ -0,0 +1,51 @@ +{ + "name": "clagiordano/weblibs-configmanager", + "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", + "type": "library", + "license": "LGPL-3.0-or-later", + "keywords": ["clagiordano", "weblibs", "configuration", "manager", "tool"], + "authors": [ + { + "name": "Claudio Giordano", + "email": "claudio.giordano@autistici.org", + "role": "Developer" + } + ], + "autoload": { + "psr-4": { + "clagiordano\\weblibs\\configmanager\\": "src/" + } + }, + "require": { + "php": ">=5.4", + "symfony/yaml": "^2.8", + "ext-json": "*" + }, + "require-dev": { + "phpunit/phpunit": "^4.8", + "clagiordano/phpunit-result-printer": "^1", + "php-coveralls/php-coveralls": "^1.1" + }, + "autoload-dev": { + "psr-4": { + "clagiordano\\weblibs\\configmanager\\tests\\": "tests/", + "clagiordano\\weblibs\\configmanager\\testdata\\": "testdata/" + } + }, + "scripts": { + "test": [ + "Composer\\Config::disableProcessTimeout", + "./vendor/bin/phpunit --no-coverage" + ], + "coverage": [ + "Composer\\Config::disableProcessTimeout", + "php -dzend_extension=xdebug.so ./vendor/bin/phpunit" + ], + "debug": "php -dxdebug.remote_autostart=On -dzend_extension=xdebug.so ./vendor/bin/phpunit" + }, + "config": { + "platform": { + "php": "5.4" + } + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/phpunit.xml b/vendor/clagiordano/weblibs-configmanager/phpunit.xml new file mode 100644 index 0000000..7c07528 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/phpunit.xml @@ -0,0 +1,39 @@ + + + + + ./tests/ + + + + + + src/ + + + + + + + + + + + + + + + + + diff --git a/vendor/clagiordano/weblibs-configmanager/src/AbstractConfigManager.php b/vendor/clagiordano/weblibs-configmanager/src/AbstractConfigManager.php new file mode 100644 index 0000000..121dd2b --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/src/AbstractConfigManager.php @@ -0,0 +1,159 @@ +loadConfig($configFilePath); + } catch (Exception $exception) { + /** + * Allow not existent file name at construct + */ + } + } + + /** + * Get value pointer from config for get/set value + * + * @param string $configPath + * + * @return mixed + */ + protected function & getValuePointer($configPath) + { + $configData =& $this->configData; + $parts = explode('.', $configPath); + $length = count($parts); + + for ($i = 0; $i < $length; $i++) { + if (!isset($configData[ $parts[ $i ] ])) { + $configData[ $parts[ $i ] ] = ($i === $length) ? [] : null; + } + + $configData = &$configData[ $parts[ $i ] ]; + } + + return $configData; + } + + /** + * Get value from config data throught keyValue path + * + * @param string $configPath + * @param mixed $defaultValue + * + * @return mixed + */ + public function getValue($configPath, $defaultValue = null) + { + $stored = $this->getValuePointer($configPath); + + return (is_null($stored) + ? $defaultValue + : $stored); + } + + /** + * Check if exist required config for keyValue + * + * @param string $keyValue + * + * @return mixed + */ + public function existValue($keyValue) + { + return !is_null($this->getValue($keyValue)); + } + + /** + * Set value in config path + * + * @param string $configPath + * @param mixed $newValue + * + * @return IConfigurable + */ + public function setValue($configPath, $newValue) + { + $configData = &$this->getValuePointer($configPath); + $configData = $newValue; + + return $this; + } + + /** + * @inheritDoc + */ + public function getConfig() + { + return $this->configData; + } + + /** + * @inheritDoc + */ + public function setConfig($config) + { + $this->configData = (array)$config; + + return $this; + } + + /** + * @inheritDoc + */ + public function convert(IConfigurable $target) + { + $target->setConfig($this->getConfig()); + + return $target; + } + + /** + * Check if configFilePath exists and is readable + * @return bool + * @throws RuntimeException + */ + protected function checkLoadable() + { + if ($this->configFilePath !== null) { + if (file_exists($this->configFilePath) && is_readable($this->configFilePath)) { + /** + * Readable + */ + return true; + } + + /** + * $configFilePath is not null, but not existent or not readable + */ + throw new RuntimeException("Failed to read config file from path '{$this->configFilePath}'"); + } + + /** + * $configFilePath is null + */ + return false; + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/src/ArrayConfigManager.php b/vendor/clagiordano/weblibs-configmanager/src/ArrayConfigManager.php new file mode 100644 index 0000000..1fd5b11 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/src/ArrayConfigManager.php @@ -0,0 +1,72 @@ +configFilePath = $configFilePath; + if ($this->checkLoadable()) { + $this->configData = require $this->configFilePath; + } + + return $this; + } + + /** + * Prepare and write config file on disk + * + * @param null|string $configFilePath + * @param bool $autoReloadConfig + * + * @return IConfigurable + * @throws RuntimeException + */ + public function saveConfigFile($configFilePath = null, $autoReloadConfig = false) + { + if (is_null($configFilePath)) { + $configFilePath = $this->configFilePath; + } + + $configFileContent = "configData, true); + $configFileContent .= ";\n\n"; + + try { + file_put_contents($configFilePath, $configFileContent); + + if (is_callable('opcache_invalidate')) { + /** + * Invalidate opcache for writed file if opcache is available + */ + opcache_invalidate($configFilePath, true); + } + } catch (Exception $exception) { + throw new RuntimeException( + "Failed to write config file to path '{$configFilePath}'\n{$exception->getMessage()}" + ); + } + + if ($autoReloadConfig) { + $this->loadConfig($configFilePath); + } + + return $this; + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php b/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php new file mode 100644 index 0000000..3fe13ed --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/src/ConfigManager.php @@ -0,0 +1,14 @@ +setConfig($source->getConfig()); + } + + /** + * @inheritDoc + */ + public static function convertAndSave(IConfigurable $source, IConfigurable $target) + { + $target->setConfig($source->getConfig()); + + return $target->saveConfigFile(); + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php b/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php new file mode 100644 index 0000000..ebf662d --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/src/IConfigurable.php @@ -0,0 +1,84 @@ +configFilePath = $configFilePath; + if ($this->checkLoadable()) { + if (!is_callable('json_decode')) { + throw new RuntimeException('Missing php-json extension'); + } + + $this->configData = json_decode(file_get_contents($configFilePath), true); + } + + return $this; + } + + /** + * Prepare and write config file on disk + * + * @param null|string $configFilePath + * @param bool $autoReloadConfig + * + * @return IConfigurable + * @throws RuntimeException + */ + public function saveConfigFile($configFilePath = null, $autoReloadConfig = false) + { + if (is_null($configFilePath)) { + $configFilePath = $this->configFilePath; + } + + try { + if (!is_callable('json_encode')) { + throw new RuntimeException('Missing php-json extension'); + } + + file_put_contents($configFilePath, json_encode($this->configData, JSON_UNESCAPED_UNICODE)); + } catch (Exception $exception) { + throw new RuntimeException( + "Failed to write config file to path '{$configFilePath}'\n{$exception->getMessage()}" + ); + } + + if ($autoReloadConfig) { + $this->loadConfig($configFilePath); + } + + return $this; + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/src/YamlConfigManager.php b/vendor/clagiordano/weblibs-configmanager/src/YamlConfigManager.php new file mode 100644 index 0000000..cd6d052 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/src/YamlConfigManager.php @@ -0,0 +1,64 @@ +configFilePath = $configFilePath; + if ($this->checkLoadable()) { + $this->configData = Yaml::parse(file_get_contents($configFilePath)); + } + + return $this; + } + + /** + * Prepare and write config file on disk + * + * @param null|string $configFilePath + * @param bool $autoReloadConfig + * + * @return IConfigurable + * @throws RuntimeException + */ + public function saveConfigFile($configFilePath = null, $autoReloadConfig = false) + { + if (is_null($configFilePath)) { + $configFilePath = $this->configFilePath; + } + + try { + file_put_contents( + $configFilePath, + Yaml::dump($this->configData, 2, 2) + ); + } catch (Exception $exception) { + throw new RuntimeException( + "Failed to write config file to path '{$configFilePath}'\n{$exception->getMessage()}" + ); + } + + if ($autoReloadConfig) { + $this->loadConfig($configFilePath); + } + + return $this; + } +} diff --git a/vendor/clagiordano/weblibs-configmanager/tests/AbstractConfigManagerTest.php b/vendor/clagiordano/weblibs-configmanager/tests/AbstractConfigManagerTest.php new file mode 100644 index 0000000..4446fb3 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/tests/AbstractConfigManagerTest.php @@ -0,0 +1,223 @@ +assertNotNull( + $this->config->getValue('app') + ); + } + + public function testFastUsage() + { + $this->assertNotNull( + $this->config->getValue('app') + ); + } + + public function testFastInvalidKey() + { + $this->assertNull( + $this->config->getValue('invalidKey') + ); + } + + public function testFastInvalidKeyWithDefault() + { + $this->assertEquals( + $this->config->getValue('invalidKey', 'defaultValue'), + 'defaultValue' + ); + } + + public function testFastNestedConfig() + { + $this->assertNotNull( + $this->config->getValue('other.multi.deep.nested') + ); + } + + public function testCheckExistConfig() + { + $this->assertTrue( + $this->config->existValue('other.multi.deep.nested') + ); + } + + public function testCheckNotExistConfig() + { + $this->assertFalse( + $this->config->existValue('invalid.config.path') + ); + } + + public function testSetValue() + { + $this->config->setValue('other.multi.deep.nested', __FUNCTION__); + + $this->assertEquals( + $this->config->getValue('other.multi.deep.nested'), + __FUNCTION__ + ); + } + + public function testFailedSaveConfig() + { + $this->setExpectedException('Exception'); + $this->config->saveConfigFile('/invalid/path'); + } + + public function testSuccessSaveConfigOnTempAndReload() + { + $this->config->setValue('other.multi.deep.nested', "SUPERNESTED"); + $this->config->saveConfigFile("/tmp/testconfig.sample", true); + + $this->assertEquals( + $this->config->getValue('other.multi.deep.nested'), + "SUPERNESTED" + ); + } + + public function testOverwriteSameConfigFile() + { + $this->config->saveConfigFile(); + } + + public function testFailWriteConfig() + { + $this->setExpectedException('\RuntimeException'); + $this->config->saveConfigFile('/invalid/path/test.sample'); + } + + /** + * @test + * @group permissions + */ + public function canRaiseExceptionOnUnreadableFile() + { + /** + * Create new temp file + */ + $testFile = tempnam(__DIR__ . '/../testsdata/temp/', 'phpunit_'); + self::assertFileExists($testFile); + + /** + * Make tempfile unreadable by everyone, but still writeable + */ + $status = chmod($testFile, 0200); + self::assertTrue($status); + + /** + * Check permissions it must be 0200 ( --w------- ) + */ + $filePerms = (fileperms($testFile) & 0777); + self::assertSame(0200, $filePerms); + + /** + * Try to read that file, an exception must be thrown + */ + self::setExpectedException('\RuntimeException'); + $this->config->loadConfig($testFile); + + /** + * Remove temp file + */ + $status = chmod($testFile, 0744); + self::assertTrue($status); + + $filePerms = (fileperms($testFile) & 0777); + self::assertSame(0755, $filePerms); + + $status = unlink($testFile); + self::assertTrue($status); + self::assertFileNotExists($testFile); + } + + /** + * @return array + */ + public function configDataProvider() + { + return [ + [ + __DIR__ . '/../testsdata/sample_config_data.converted.yml', + '\clagiordano\weblibs\configmanager\YamlConfigManager', + ], + [ + __DIR__ . '/../testsdata/sample_config_data.converted.json', + '\clagiordano\weblibs\configmanager\JsonConfigManager', + ], + [ + __DIR__ . '/../testsdata/sample_config_data.converted.php', + '\clagiordano\weblibs\configmanager\ArrayConfigManager', + ], + ]; + } + + /** + * @test + * @dataProvider configDataProvider + * @param mixed $targetConfig + * @param mixed $targetInstance + */ + public function canConvertOneFormatToAnother($targetConfig, $targetInstance) + { + if (file_exists($targetConfig)) { + /** + * Drop target file if already existing + */ + unlink($targetConfig); + } + + self::assertFileNotExists($targetConfig); + + $target = new $targetInstance($targetConfig); + self::assertInstanceOf($targetInstance, $target); + + $converted = $this->config->convert($target); + self::assertInstanceOf($targetInstance, $converted); + + self::assertFileNotExists($targetConfig); + } +} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/tests/ArrayConfigManagerTest.php b/vendor/clagiordano/weblibs-configmanager/tests/ArrayConfigManagerTest.php new file mode 100644 index 0000000..55268ef --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/tests/ArrayConfigManagerTest.php @@ -0,0 +1,25 @@ +config = new ArrayConfigManager("TestConfigData.php"); + $this->assertInstanceOf('clagiordano\weblibs\configmanager\ArrayConfigManager', $this->config); + + $this->assertFileExists($this->configFile); + $this->config->loadConfig($this->configFile); + } +} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/tests/ConfigManagerTest.php b/vendor/clagiordano/weblibs-configmanager/tests/ConfigManagerTest.php new file mode 100644 index 0000000..016d44f --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/tests/ConfigManagerTest.php @@ -0,0 +1,25 @@ +config = new ConfigManager("TestConfigData.php"); + $this->assertInstanceOf('clagiordano\weblibs\configmanager\ConfigManager', $this->config); + + $this->assertFileExists($this->configFile); + $this->config->loadConfig($this->configFile); + } +} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/tests/FileConverterTest.php b/vendor/clagiordano/weblibs-configmanager/tests/FileConverterTest.php new file mode 100644 index 0000000..1522614 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/tests/FileConverterTest.php @@ -0,0 +1,148 @@ +config = new JsonConfigManager("TestConfigData.json"); + $this->assertInstanceOf('clagiordano\weblibs\configmanager\JsonConfigManager', $this->config); + + $this->assertFileExists($this->configFile); + $this->config->loadConfig($this->configFile); + } +} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/tests/YamlConfigManagerTest.php b/vendor/clagiordano/weblibs-configmanager/tests/YamlConfigManagerTest.php new file mode 100644 index 0000000..d5df626 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/tests/YamlConfigManagerTest.php @@ -0,0 +1,25 @@ +config = new YamlConfigManager("TestConfigData.yml"); + $this->assertInstanceOf('clagiordano\weblibs\configmanager\YamlConfigManager', $this->config); + + $this->assertFileExists($this->configFile); + $this->config->loadConfig($this->configFile); + } +} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.empty.converted.yml b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.empty.converted.yml new file mode 100644 index 0000000..6578fd5 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.empty.converted.yml @@ -0,0 +1 @@ +{ } diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json new file mode 100644 index 0000000..126dd63 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json @@ -0,0 +1 @@ +{"app":"name","db":{"host":"localhost","user":"sample_user","pass":"sample_pass","port":"3306"},"other":{"multi":{"deep":{"nested":"config_value"}}}} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.php b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.php new file mode 100644 index 0000000..ce32a66 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.php @@ -0,0 +1,23 @@ + 'name', + 'db' => + array ( + 'host' => 'localhost', + 'user' => 'sample_user', + 'pass' => 'sample_pass', + 'port' => '3306', + ), + 'other' => + array ( + 'multi' => + array ( + 'deep' => + array ( + 'nested' => 'config_value', + ), + ), + ), +); + diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.yml b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.yml new file mode 100644 index 0000000..3f1a03e --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.json.converted.yml @@ -0,0 +1,8 @@ +app: name +db: + host: localhost + user: sample_user + pass: sample_pass + port: '3306' +other: + multi: { deep: { nested: config_value } } diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php new file mode 100644 index 0000000..4a99ef0 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php @@ -0,0 +1,23 @@ + 'app_name', + 'db' => + array ( + 'host' => 'localhost', + 'user' => 'sample_user', + 'pass' => 'sample_pass', + 'port' => 3306, + ), + 'other' => + array ( + 'multi' => + array ( + 'deep' => + array ( + 'nested' => 'config_value', + ), + ), + ), +); + diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.json b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.json new file mode 100644 index 0000000..5b14b3d --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.json @@ -0,0 +1 @@ +{"app":"app_name","db":{"host":"localhost","user":"sample_user","pass":"sample_pass","port":3306},"other":{"multi":{"deep":{"nested":"config_value"}}}} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.yml b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.yml new file mode 100644 index 0000000..1de87d7 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.php.converted.yml @@ -0,0 +1,8 @@ +app: app_name +db: + host: localhost + user: sample_user + pass: sample_pass + port: 3306 +other: + multi: { deep: { nested: config_value } } diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml new file mode 100644 index 0000000..f67a753 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml @@ -0,0 +1,8 @@ +app: name +db: + host: localhost + user: sample_user + pass: sample_pass + port: 3306 +other: + multi: { deep: { nested: config_value } } diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.json b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.json new file mode 100644 index 0000000..f271831 --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.json @@ -0,0 +1 @@ +{"app":"name","db":{"host":"localhost","user":"sample_user","pass":"sample_pass","port":3306},"other":{"multi":{"deep":{"nested":"config_value"}}}} \ No newline at end of file diff --git a/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.php b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.php new file mode 100644 index 0000000..770b0da --- /dev/null +++ b/vendor/clagiordano/weblibs-configmanager/testsdata/sample_config_data.yml.converted.php @@ -0,0 +1,23 @@ + 'name', + 'db' => + array ( + 'host' => 'localhost', + 'user' => 'sample_user', + 'pass' => 'sample_pass', + 'port' => 3306, + ), + 'other' => + array ( + 'multi' => + array ( + 'deep' => + array ( + 'nested' => 'config_value', + ), + ), + ), +); + diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 48d254f..b33aedc 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -11,8 +11,12 @@ return array( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', + 'd767e4fc2dc52fe66584ab8c6684783e' => $vendorDir . '/adbario/php-dot-notation/src/helpers.php', '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', + 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', + '66453932bc1be9fb2f910a27947d11b6' => $vendorDir . '/alibabacloud/client/src/Functions.php', 'f0e7e63bbb278a92db02393536748c5f' => $vendorDir . '/overtrue/wechat/src/Kernel/Support/Helpers.php', '6747f579ad6817f318cc3a7e7a0abb93' => $vendorDir . '/overtrue/wechat/src/Kernel/Helpers.php', ); diff --git a/vendor/composer/autoload_psr4.php b/vendor/composer/autoload_psr4.php index 552138c..796e16c 100644 --- a/vendor/composer/autoload_psr4.php +++ b/vendor/composer/autoload_psr4.php @@ -8,14 +8,17 @@ $baseDir = dirname($vendorDir); return array( 'think\\composer\\' => array($vendorDir . '/topthink/think-installer/src'), 'think\\' => array($baseDir . '/thinkphp/library/think'), + 'clagiordano\\weblibs\\configmanager\\' => array($vendorDir . '/clagiordano/weblibs-configmanager/src'), 'app\\' => array($baseDir . '/application'), 'ZipStream\\' => array($vendorDir . '/maennchen/zipstream-php/src'), 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), '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\\Service\\' => array($vendorDir . '/symfony/service-contracts'), 'Symfony\\Contracts\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher-contracts'), 'Symfony\\Contracts\\Cache\\' => array($vendorDir . '/symfony/cache-contracts'), + 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), 'Symfony\\Component\\VarExporter\\' => array($vendorDir . '/symfony/var-exporter'), 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), @@ -34,10 +37,13 @@ return array( 'MyCLabs\\Enum\\' => array($vendorDir . '/myclabs/php-enum/src'), 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'), 'Matrix\\' => array($vendorDir . '/markbaker/matrix/classes/src'), + 'JmesPath\\' => array($vendorDir . '/mtdowling/jmespath.php/src'), 'GuzzleHttp\\Psr7\\' => array($vendorDir . '/guzzlehttp/psr7/src'), 'GuzzleHttp\\Promise\\' => array($vendorDir . '/guzzlehttp/promises/src'), 'GuzzleHttp\\' => array($vendorDir . '/guzzlehttp/guzzle/src'), 'EasyWeChat\\' => array($vendorDir . '/overtrue/wechat/src'), 'EasyWeChatComposer\\' => array($vendorDir . '/easywechat-composer/easywechat-composer/src'), 'Complex\\' => array($vendorDir . '/markbaker/complex/classes/src'), + 'AlibabaCloud\\Client\\' => array($vendorDir . '/alibabacloud/client/src'), + 'Adbar\\' => array($vendorDir . '/adbario/php-dot-notation/src'), ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index dacd858..0f40fd4 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -12,8 +12,12 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', + 'd767e4fc2dc52fe66584ab8c6684783e' => __DIR__ . '/..' . '/adbario/php-dot-notation/src/helpers.php', '2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php', + 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', + '66453932bc1be9fb2f910a27947d11b6' => __DIR__ . '/..' . '/alibabacloud/client/src/Functions.php', 'f0e7e63bbb278a92db02393536748c5f' => __DIR__ . '/..' . '/overtrue/wechat/src/Kernel/Support/Helpers.php', '6747f579ad6817f318cc3a7e7a0abb93' => __DIR__ . '/..' . '/overtrue/wechat/src/Kernel/Helpers.php', ); @@ -24,6 +28,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd 'think\\composer\\' => 15, 'think\\' => 6, ), + 'c' => + array ( + 'clagiordano\\weblibs\\configmanager\\' => 34, + ), 'a' => array ( 'app\\' => 4, @@ -37,9 +45,11 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd 'Symfony\\Polyfill\\Php80\\' => 23, 'Symfony\\Polyfill\\Php73\\' => 23, 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Contracts\\Service\\' => 26, 'Symfony\\Contracts\\EventDispatcher\\' => 34, 'Symfony\\Contracts\\Cache\\' => 24, + 'Symfony\\Component\\Yaml\\' => 23, 'Symfony\\Component\\VarExporter\\' => 30, 'Symfony\\Component\\HttpFoundation\\' => 33, 'Symfony\\Component\\EventDispatcher\\' => 34, @@ -68,6 +78,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd 'Monolog\\' => 8, 'Matrix\\' => 7, ), + 'J' => + array ( + 'JmesPath\\' => 9, + ), 'G' => array ( 'GuzzleHttp\\Psr7\\' => 16, @@ -83,6 +97,11 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 'Complex\\' => 8, ), + 'A' => + array ( + 'AlibabaCloud\\Client\\' => 20, + 'Adbar\\' => 6, + ), ); public static $prefixDirsPsr4 = array ( @@ -94,6 +113,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 0 => __DIR__ . '/../..' . '/thinkphp/library/think', ), + 'clagiordano\\weblibs\\configmanager\\' => + array ( + 0 => __DIR__ . '/..' . '/clagiordano/weblibs-configmanager/src', + ), 'app\\' => array ( 0 => __DIR__ . '/../..' . '/application', @@ -114,6 +137,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), 'Symfony\\Contracts\\Service\\' => array ( 0 => __DIR__ . '/..' . '/symfony/service-contracts', @@ -126,6 +153,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 0 => __DIR__ . '/..' . '/symfony/cache-contracts', ), + 'Symfony\\Component\\Yaml\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/yaml', + ), 'Symfony\\Component\\VarExporter\\' => array ( 0 => __DIR__ . '/..' . '/symfony/var-exporter', @@ -199,6 +230,10 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 0 => __DIR__ . '/..' . '/markbaker/matrix/classes/src', ), + 'JmesPath\\' => + array ( + 0 => __DIR__ . '/..' . '/mtdowling/jmespath.php/src', + ), 'GuzzleHttp\\Psr7\\' => array ( 0 => __DIR__ . '/..' . '/guzzlehttp/psr7/src', @@ -223,6 +258,14 @@ class ComposerStaticInit2bc4f313dba415539e266f7ac2c87dcd array ( 0 => __DIR__ . '/..' . '/markbaker/complex/classes/src', ), + 'AlibabaCloud\\Client\\' => + array ( + 0 => __DIR__ . '/..' . '/alibabacloud/client/src', + ), + 'Adbar\\' => + array ( + 0 => __DIR__ . '/..' . '/adbario/php-dot-notation/src', + ), ); public static $prefixesPsr0 = array ( diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index a94f8c4..294caa2 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1,5 +1,206 @@ { "packages": [ + { + "name": "adbario/php-dot-notation", + "version": "2.5.0", + "version_normalized": "2.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/adbario/php-dot-notation.git", + "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", + "reference": "081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^5.5 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7|^6.6|^7.5|^8.5|^9.5", + "squizlabs/php_codesniffer": "^3.6" + }, + "time": "2022-10-14T20:31:46+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Adbar\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Riku Särkinen", + "email": "riku@adbar.io" + } + ], + "description": "PHP dot notation access to arrays", + "homepage": "https://github.com/adbario/php-dot-notation", + "keywords": [ + "ArrayAccess", + "dotnotation" + ], + "support": { + "issues": "https://github.com/adbario/php-dot-notation/issues", + "source": "https://github.com/adbario/php-dot-notation/tree/2.5.0" + }, + "install-path": "../adbario/php-dot-notation" + }, + { + "name": "alibabacloud/client", + "version": "1.5.32", + "version_normalized": "1.5.32.0", + "source": { + "type": "git", + "url": "https://github.com/aliyun/openapi-sdk-php-client.git", + "reference": "5bc6f6d660797dcee2c3aef29700ab41ee764f4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/aliyun/openapi-sdk-php-client/zipball/5bc6f6d660797dcee2c3aef29700ab41ee764f4d", + "reference": "5bc6f6d660797dcee2c3aef29700ab41ee764f4d", + "shasum": "" + }, + "require": { + "adbario/php-dot-notation": "^2.4.1", + "clagiordano/weblibs-configmanager": "^1.0", + "ext-curl": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-simplexml": "*", + "ext-xmlwriter": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "mtdowling/jmespath.php": "^2.5", + "php": ">=5.5" + }, + "require-dev": { + "composer/composer": "^1.8", + "drupal/coder": "^8.3", + "ext-dom": "*", + "ext-pcre": "*", + "ext-sockets": "*", + "ext-spl": "*", + "league/climate": "^3.2.4", + "mikey179/vfsstream": "^1.6", + "monolog/monolog": "^1.24", + "phpunit/phpunit": "^5.7|^6.6|^7.5|^8.5|^9.5", + "psr/cache": "^1.0", + "symfony/dotenv": "^3.4", + "symfony/var-dumper": "^3.4" + }, + "suggest": { + "ext-sockets": "To use client-side monitoring" + }, + "time": "2022-12-09T04:05:55+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "AlibabaCloud\\Client\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Alibaba Cloud SDK", + "email": "sdk-team@alibabacloud.com", + "homepage": "http://www.alibabacloud.com" + } + ], + "description": "Alibaba Cloud Client for PHP - Use Alibaba Cloud in your PHP project", + "homepage": "https://www.alibabacloud.com/", + "keywords": [ + "alibaba", + "alibabacloud", + "aliyun", + "client", + "cloud", + "library", + "sdk", + "tool" + ], + "support": { + "issues": "https://github.com/aliyun/openapi-sdk-php-client/issues", + "source": "https://github.com/aliyun/openapi-sdk-php-client" + }, + "install-path": "../alibabacloud/client" + }, + { + "name": "clagiordano/weblibs-configmanager", + "version": "v1.5.0", + "version_normalized": "1.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/clagiordano/weblibs-configmanager.git", + "reference": "8802c7396d61a923c9a73e37ead062b24bb1b273" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clagiordano/weblibs-configmanager/zipball/8802c7396d61a923c9a73e37ead062b24bb1b273", + "reference": "8802c7396d61a923c9a73e37ead062b24bb1b273", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.4", + "symfony/yaml": "^2.8" + }, + "require-dev": { + "clagiordano/phpunit-result-printer": "^1", + "php-coveralls/php-coveralls": "^1.1", + "phpunit/phpunit": "^4.8" + }, + "time": "2021-07-12T15:27:21+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "clagiordano\\weblibs\\configmanager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Claudio Giordano", + "email": "claudio.giordano@autistici.org", + "role": "Developer" + } + ], + "description": "weblibs-configmanager is a tool library for easily read and access to php config array file and direct read/write configuration file / object", + "keywords": [ + "clagiordano", + "configuration", + "manager", + "tool", + "weblibs" + ], + "support": { + "issues": "https://github.com/clagiordano/weblibs-configmanager/issues", + "source": "https://github.com/clagiordano/weblibs-configmanager/tree/v1.5.0" + }, + "install-path": "../clagiordano/weblibs-configmanager" + }, { "name": "easywechat-composer/easywechat-composer", "version": "1.4.1", @@ -733,6 +934,75 @@ ], "install-path": "../monolog/monolog" }, + { + "name": "mtdowling/jmespath.php", + "version": "2.8.0", + "version_normalized": "2.8.0.0", + "source": { + "type": "git", + "url": "https://github.com/jmespath/jmespath.php.git", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "reference": "a2a865e05d5f420b50cc2f85bb78d565db12a6bc", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "time": "2024-09-04T18:46:31+00:00", + "bin": [ + "bin/jp.php" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "src/JmesPath.php" + ], + "psr-4": { + "JmesPath\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": [ + "json", + "jsonpath" + ], + "support": { + "issues": "https://github.com/jmespath/jmespath.php/issues", + "source": "https://github.com/jmespath/jmespath.php/tree/2.8.0" + }, + "install-path": "../mtdowling/jmespath.php" + }, { "name": "myclabs/php-enum", "version": "1.8.5", @@ -2161,6 +2431,88 @@ ], "install-path": "../symfony/http-foundation" }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.0", + "version_normalized": "1.31.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2024-09-09T11:45:10+00:00", + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "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" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-ctype" + }, { "name": "symfony/polyfill-mbstring", "version": "v1.31.0", @@ -2638,6 +2990,62 @@ ], "install-path": "../symfony/var-exporter" }, + { + "name": "symfony/yaml", + "version": "v2.8.52", + "version_normalized": "2.8.52.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b", + "reference": "02c1859112aa779d9ab394ae4f3381911d84052b", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "time": "2018-11-11T11:18:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-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", + "support": { + "source": "https://github.com/symfony/yaml/tree/v2.8.52" + }, + "install-path": "../symfony/yaml" + }, { "name": "topthink/framework", "version": "v5.0.25", diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index a333b59..042b670 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,13 +3,40 @@ 'name' => 'topthink/think', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'c9296ecb2ae6905df00593530a8784f2997e182a', + 'reference' => '075de7502013b216a11f34847a1a98600f4eab80', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => true, ), 'versions' => array( + 'adbario/php-dot-notation' => array( + 'pretty_version' => '2.5.0', + 'version' => '2.5.0.0', + 'reference' => '081e2cca50c84bfeeea2e3ef9b2c8d206d80ccae', + 'type' => 'library', + 'install_path' => __DIR__ . '/../adbario/php-dot-notation', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'alibabacloud/client' => array( + 'pretty_version' => '1.5.32', + 'version' => '1.5.32.0', + 'reference' => '5bc6f6d660797dcee2c3aef29700ab41ee764f4d', + 'type' => 'library', + 'install_path' => __DIR__ . '/../alibabacloud/client', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'clagiordano/weblibs-configmanager' => array( + 'pretty_version' => 'v1.5.0', + 'version' => '1.5.0.0', + 'reference' => '8802c7396d61a923c9a73e37ead062b24bb1b273', + 'type' => 'library', + 'install_path' => __DIR__ . '/../clagiordano/weblibs-configmanager', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'easywechat-composer/easywechat-composer' => array( 'pretty_version' => '1.4.1', 'version' => '1.4.1.0', @@ -91,6 +118,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'mtdowling/jmespath.php' => array( + 'pretty_version' => '2.8.0', + 'version' => '2.8.0.0', + 'reference' => 'a2a865e05d5f420b50cc2f85bb78d565db12a6bc', + 'type' => 'library', + 'install_path' => __DIR__ . '/../mtdowling/jmespath.php', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'myclabs/php-enum' => array( 'pretty_version' => '1.8.5', 'version' => '1.8.5.0', @@ -334,6 +370,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/polyfill-ctype' => array( + 'pretty_version' => 'v1.31.0', + 'version' => '1.31.0.0', + 'reference' => 'a3cc8b044a6ea513310cbd48ef7333b384945638', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'symfony/polyfill-mbstring' => array( 'pretty_version' => 'v1.31.0', 'version' => '1.31.0.0', @@ -388,6 +433,15 @@ 'aliases' => array(), 'dev_requirement' => false, ), + 'symfony/yaml' => array( + 'pretty_version' => 'v2.8.52', + 'version' => '2.8.52.0', + 'reference' => '02c1859112aa779d9ab394ae4f3381911d84052b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/yaml', + 'aliases' => array(), + 'dev_requirement' => false, + ), 'topthink/framework' => array( 'pretty_version' => 'v5.0.25', 'version' => '5.0.25.0', @@ -400,7 +454,7 @@ 'topthink/think' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => 'c9296ecb2ae6905df00593530a8784f2997e182a', + 'reference' => '075de7502013b216a11f34847a1a98600f4eab80', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), diff --git a/vendor/composer/tmp-0d89f9d50873e2b671afca887218e9a9.zip b/vendor/composer/tmp-0d89f9d50873e2b671afca887218e9a9.zip new file mode 100644 index 0000000000000000000000000000000000000000..2f44a96de49030dfbd988a792ff67e8446672755 GIT binary patch literal 4092 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 E1&BkC9{>OV literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-11bd46d6ad5fb797d29f33bd14df708f.zip b/vendor/composer/tmp-11bd46d6ad5fb797d29f33bd14df708f.zip new file mode 100644 index 0000000000000000000000000000000000000000..0a158216a24298e5fd159c51fe0bb6013809c58c GIT binary patch literal 33492 zcmb5Vb97~K(ls30wr$(CI<{?ej1D_?(y?vZw(X>2+sT)nnP=W_X5MGsnY-4#>;7}< zth1_W*WR_yPeB?O1Pb8Kr-4xW+h6|t?FRz@62QsA+QiM?+@4m!!p7d(gw}wQ#gN&6 zgAW&XD9K)RKs+F3>aZMcaa^>S8UMJ z?}VnU0hClopTiqa2Hp4m7)qCyM}Rm$?X{&0mxs@B9-?eIr(`+-Dipp=A0HO7F;HCu zId_@~=M8|uZS(8`o(@2(q<&edale4m^<3m%eTs&y7!sLUj1P(M&FRBG;3vJAg@oc|p`j zq0;aA_AbH8iX!;$ZQj7E7r`Bv13P@#k~cU_D{AWf8}?y^xQC8lE)ZUx?wxxyMvU|} z@mX|~Y9i@Uom_fZF4Bc;=Kktc^qUo1m1^O!7v^XF(HtF{_)2AAhbZcO8bbVC1&WY7 zTWLEGtHc@*nYJomx){{07mzk%Z6z;e!h)9X)~nn1{G0RJub#?-F~T0RqkBD^t#lcm z2so5?fr3?iC?^XuTRTUSzgG|SFa^cL7|l%C@Wjq6wVz{{ zQn<8})Lk5MJhM_u+^rMzP58I)JI9;&x|X{!rCX(&@Vl0Oy8BwQCH&8?VnzoB03i8y zcmL{JJtHSNV+$wezu(_QsYh;I0H))R`XQ+tq&BY95cOLLeQ@I3+Z`Im1n9 zYMgH8lzW5@LFCF}(C6!Ovt*|;XOg1ylPX+xPUlJ5hoGawUdf?D6O$B1nWj!OY_6fm z9+mdlkee)cc&h5P(Q)=LyzZXJJU_mvA+h$8J9_zTeH|iXD$B>I0%LjPb(;ju5J*^( zG>rsi+H;m6L{#Oh=Mm}3pxo|ug#0m5+S}FX_X0n$9}!)I0S7{peANn| z+!!GE`gaTA&!|XZ`K{OxMBjPh8O`n+`8xyky=|0L-UmFImzXS)JtXSviVR2dRbY|y zX=-{>&L-mG++RIH`YW8by9aD$jBH8HZyDH2->oHkTz+Wz!|_Y-$d)mc50jI)qehCK~3f2m-PSv z0C0l=01*D0lnP4-%8850$cz6ypWe!2wrdOs?XT1i6yS-3BXa2ni_M@XX*1eR2E~b@ z%0!@XwYy!HH~YiYGkL`uDJv_4`1&2IoREO1YJEm@z4 z-s&lE6S=){UjaP`-?K=1sFo{B7mNhTRINf(`3^yAk^ya|mw(Ea|8T)&$@{&?>iELM z0J+xNhAyg|`U4Z;6hzg%+D6ybY&BwB2g}Jz=pKUid|nD6l0#e2a!wEdEQNn z(Si+zYVKk`)FoF=f>l(M1?axYSTMaIT|VYJAM;QnMBC{G zc%&L8l#})uD`4ACY0vTS%R7GB3WN0E)@a#SBAyas+kVA3!%2$0c9WZ*=<`fDwzn>b z3X$2+J76RRrQ+MAgY;_@Qf}7E%Pq27(_-`6eS_fE@%0ZUC_#8Qz<{pf3Q1f&FvfY3 zhnL)>w8%*JDoGTQisz`d3Ii(qKcl$F3Q5oB-RLiW#f@48mWWE868en#bunn0^L>}$ zHd4&{-BWZ@t6}KV%CI#q?D}BpKMu_7wjnq)=^S%dqK#osXaw!&F6EE^joMAR^vKe8 zdw}OrBGA;){TVe|0vp+5`h>)C-cvHCC{Q6aMMjjK9xK}4dSQj>g=@!OdY6t#LX-rfNJ zKQ=;=Eh)OoS0hk<4Ql*<(+Dz>!lH8DME~9fI*QWKs|*O8hiVZVHU-Y%4~v^JhG=Dk zQ8;x8MiMX%sD{RAx$ln|kY~0{O8LXLPrC6fw`EO3e7(Z2pqU4^mwH(T@=oe(o>pST z+AKy^k@9h)Pw}ult%%lsn{IW!L3wtA=B+4jn;7=s=C6bJvQRUE%$>a}Pkzw0_}JX5 z*ATGv!@stT&k)I)h1=OSx9!1YAu1bScLfhu$3`M*Li=5-10b&uJb~+8IvHP?Vx0>y zk+^~GH#O}WYFv{cHUp1rq%kO$YjEjsE!?c&AB-iGr`kU%;>oCUbPakNb09odm- z9gg`_=g8;Ofpm0<(11}jnqT~D|}m|`G_R2O^RyyV!X5+0jDv1}4UDYraa+^s;0 zIX6EcQp$>ta)rdoMs&$yTZ9b4+hVLImN(d*(QrcX$B7t~t+er*-Z-}191%%%NM-}4 z^H+M<1$APAEvI?vyTL>>Jr6~ZzaU&+HDYd`z4bqKO^E;2b12?dvP;<|uq;mSLgbt> z7_{`7Qd)-Uh{J~E$WbqGB}ncb#eG9D$prdTq10U>P$61WA>>#TNkL81PME6h?ohI% z=+`s{SwQ-E1xM;8t8Z0Vi^{hmgd%h~YfR}Z`AfRQPjDasZKY5jsx-3Hcp{chd|4?$ zI*7(=Li+t@xjOKNKYX!TImJ&Z18n6g34G()Rm$u3+3Gma$(rWv;s{zOpFE*&8a@47 zLFpAM%vp^jxy6BlwkP^+yUIj-!Fq*3G$UeU(iK-JxzYt&YE8KZlnkVnP{t*{xnwEi z)?<(%E)w5@g%taW!nYwh*jatS1Jmn(YOZ+pi*9+zd;$NlbnDki?Tlam0K&=sJt&brE~oM4dn?oH*f0^-k-w5Gd&K3c{&(uS2HJ+51MN0qhTy0c$d;m4;Q8!$VQRtCn40 zA?}%9+={A$B?ao3)T5Esi=z|$k76t*a^(ru+-2#_b1I~0Qp5X5;wE+dvScb)YGta) z*OpuwNtSE7)wAbfD=AMFd4U$CIvz+>5@kRY9@JVL(}}jO1oO5M5GDf)O=`QU8sMln z%&w(pG`O>qE>h)pyn&lV$MV<|p}q)$G_orTr52>P`Yr*uov9mB{rgg9GUByACyz~W z@iQkbqJvZ%NA7-3^6+BLrf-e+M{`Iv9qWIuWRY%cDo;mLDv!LryZ9|vFQzQDDmD)` zzTfLyvD{7n)CsbOwgq`8+3`(lfkx%qMZd{yI8`Y1-1DFS*haT1a+wrF!kLMxBEoE> zdpQAX3y$eB6}0qxE#(3t%`YNg9xF(-3!{`8BW54Zpt9shD~BJnis{B#xlfuE#c<#s<+W$Nppg5vAoSP@3B$8KyHC-3hyA9b!U);KU#ZIm)O ze%Jv^kV>{;(964P!>&b-OM~b9Ij`r93nGuRWxsh3PA1NAvnUvBN)AIBr%o1fv`NSd z=!ydyK^<3H*1>F8qDF0kh&EsrdG~`#dS%p!F{4+xsa4sQYrj8Lu4z`vn1w>N=<0;K zVHUQ;3l|RU6VI0*8^U;5Kav4D4w{od%NWAg9*l(Dnv=XchZHftIA2GYxXG!a)NJ>? zgJeYKM~Gsj6ArP)j)|xyo324%cz1@){(DX;YXUzSgxC!_5UAg6V`-!nbnUuxYvs6* z>NL}^s?a#7S&|uuN?vd}x%4bHWo`CYE#pKbTLyAjrNM_Wz3LPdfU&UD5QhFjYVWN( z6@i>QFglxj)ini?51;d>BH32+qPpAN6+T29MaVCl1o2(=PT?#9xPj@0uJ7k|vT#*f zdU|>vSML-1ZNea^xF7F=Pxs@UF_3U)vCKxd9Tt>4%f=v)@U&EH5U^CRlZar`g!()K z)=(Ejs~8tmR8HcRO<}}oZ^2f4qPdimcuG7|9P#aX?eQ%*?h!g+ZIOl&NLB+(i$gSl zHPTsc+Cm)I8~{*oXM^>C_@;s6h|flMcm5(r;8d4^akh^#`XHDh)fO?Up42{%rd@lw zk0Q&{&`!|ONO8hoR;~A7T*x$=qhS%))*VbU*(7uBBn}AanD)odzjnDh`~nal^C4zD zl%ENtz1lp1bdW~9I*8jwD}`zlYS(|N65Hesy~tbuPKT6Ky#sKG2xjHYQ5r=JbAv_keTe4HY)KLNB6t?Yov6_2N&450UT3-<68j34@y zl|%Pz^wZ1n-ZJKeX7ZnbD;EO$B&B_&r)jCW1sJSctjnNJU_48w`GcT?2w&{NpvsaM zvw5OwBg2e|Ex%V-lw`QEabbF+h=q3s0Sj89;5~rOZ}T`q#Q5W^P>9y3GgzLrr4tS= zLMIc7g&CI0=_}_KdzGZo*7nS^_g@3%i$sl_d#1~Qka3!OnE|A>wF{#-icY#MS$%R8 zAA)sSdzB^*I}aU{GU6~Y2w$hJkR(jyZQS;q3DEWnl@vnUyOJ5EyU-m(x7wkWFfdq2 zxI_@hAVTy2V;lJzv;~uq4yFvhCr>tn(o&Tck;l_svi3M*gC{*_;rB$1vbK8v*;y8Idts}aJv|i^ov|}aF8F-p!4cZh-@v;}p zc=zDVYIyX>+GiD&?>m*?opU@?J`~3XU>|{ZK}gk6J!^SFXICOJ!xMz>6};rpVey*X z5N4~SjP6Y?aSyqZzq^fXVwcV2{fXtK>Qk6R4bR~m0}D3_1f0s+RBVNY3{f3B^Ako2 zYogC`_nX8(nf+a@V0Nw%faXUsG8K5rlfDc|3I_Kz%r~-_U9&Y>DxE@sI?D>cweN9B zP~bia{3n@>M zD6E+4WTPl>`HCCY`)5(c$=-l~+WGn!d;zT;6Fz9==m@c2AlvPNOqQ@BC{tfrGcI-T zG5fr15o`Q%jvUxiHHE-9*d^v;?BWPG*sV~7KOOdIw7=@h&uVGTV5M)1( za#*t(bH9nP#{WKFiMOh%^yT5?#;#-nU#qT1eFdoN!PA%V$-&Lrlk3qU(xZPqI|ZNQ zyMIfH#WBICy)gVdW7N37; zUFbuRw-~k89q)?r`OxT0d@RvC_HG&d+6Qlh%VbCL5Ep({e)R)~XdLMG7K!-&6AJXH z)KbG|q_Hh|NJ&_5JW%`}+6MnJ;8M$M^Om-b% zfW!juBeGzGHJ-!feQU@-xX>)cR;xVpgo#-}(=V0x6^l!Zy%$!}UjtR77K5e0Mw*n=Pz2j zv4O)hlWZ_y&$V!%Rbg#J50UVltC!I3^2@JW%P%${jCDf23 zAbAV=r~MlYxnBB1qdMg5W7M1UW(EPyV#_89c$jR8N#~#7ModkO+y8|&<@L#%Gq!T@Weg$YqXr- zo8|OA?}|I(*V#0)3qeNv<^uJdB*!lRuqmC;Yy#UmUu5QOPy+ z_oq40H)@ekceTf4C|A_RN?x34$PD<(CC9 zXO^g1qy0IM2$xng{t3P5hd%Q(mOx=rHyEoog@IPUJ#1Y%_6~g_uY~iUwvcaS;&iB} z=Tw61C{*Ymbvy5#B{nN6j#q=OIjh`>ZZM@Bmte{H{0(R+Xzy6Y(Y>v>$&1p9v-yo_ zgCKg-h7KyqugCQCIMgD(4gxj+8p5wsTaW5-zi7CnC$YbClb}AzLeP~hRA8BZtELPX zcn{w9wH*?Nf>U_00hiZ!rygs>ul7u6W3AV5BODBxo9a&C7tu!xC8zLAfCW0Hb!CYM zc2=Wk+0Ua!etCuVsA0yu5f*%ai55FN4lqv_0C&E$%he`Fe|5WPOV0tDaeLqHz8tt} z>Z#f}fU?NV6us~8WoG2Lxg`wueb_C5yzSLH7K$D70z1c)N3s>?zh7XFyBmV)1^I z82sjYTHhd*kvTCL_W4gML}5dIbH%R}V)K{OCjB=u+sMww-p?0VU)GE(wf%ia@NKlrf-l-Dn)-f|Vy_$E_1U<|agRQqo79Jhj^NOm zz`8``ZWUC+ZSZ)mvTMcD2Xa<^4n9yj>E#G@B~PK?QM$q~NK(h=tw>;{c)@f`T%@WSf1U4Vxz`N~X3!9i z4`W6k^V3_htC50lOyJ@O@#jBu#y;B*y5NAQk6jGfqx9|-ly%?#@d}{5VJb1qw!RC3 z~(j+vpiw9T+anUXsOYGYs~LsU+%Z3&>^45ogA>u zwq~L0OubGw?6rRlOxQ%AA*uN`X70>(UGOy3;WtAw^d1-sM_zUubBY(EZz4u5H<3Np zRcxgC&8Q9VayUJ`7UiV1=lgur$3G=!7o(t_0@4DDpIMcb=SpVaW zS2niiPksh3->D&7-CNJAe>IYETcbDqDjtE;MVO9LB;c{U@4{bPOaczX-+Jr>|6OKf zGb{=^KZ)ktbC5tmoj(7dJ^g;+^dP5ZlC6S)ve(lW4*>LOT%@s5;jqqW${gg$x2 zltsV&=-GjqSo$oZ6|oK_%FGmDtgZRjXBCtQeUDI?v0XEEDQy^{ku{R<&)(=~;3>*k z;`V#D>RN9Qx24BFbCw4dWwJTO4Q2ubKO-Ci_z|>&f?5Y)v!7)DCR3`eHvT}-pkJ)0 zz{^8i!n##lkiGRmELNx2*z?dC#TBe10BI&jYXl&`F9h%cY}|kcmv}p6h8<{54sX~z zVze+T?FmdQaOan8N5=xWnO#V9_Pz!#TjEv`I?r9RmHvhn#ScO&B~E$j z)HQD`%{V^3Voi1?S*N3&s?e#P#v>uX4_1{iOmZOl;OWF{4;v_Z$N^HLVCMTkp z&@a^zn8e2)qteOc@ES0>cOa0`piKR@<9mqFN!vf7u_W=3%#5>sqOS}}W6pwaLn6Me z3&$e#`*fNr9+>3EwIfVVsKUS%rtW2v--C=pOA83SR@2pTwGE1ZkD_z9@;zN2i zz>6V0a2a0GrY8K32_tx;;7m7-%G3;h%CQaoGLi2q$p_z}eowef;+<*sq%bX;V%;{o9+*bO^TDch1gC zK&9qI^9Q`aL;c9jzOM8c4g51-d2LUwpc?7f^s7ESRdP^cm20;l&v@FyX_| zl$`Yy^^^Ho98am6N^4j9P`wJ*$?24i%lL99Gd7};LnCyWU+Nd*nA-5P=wwS5#ykx( zKbaGF9K{alsA{XuX3j8B_n51F`{@}v>Vt)6#dgcBoclw82 z0+r(AxiW^em}A|3;x9PKapTfZyzftb9MuIf`1_Ln)J5Z%F?!pc5LRvHvN7e5-^)^G zF*zpozvVPcI0@pJo|p5Z4Wh5E;2m3eHf31RKLhHB$kF>%e__Gm;Bzj|zqkskUF#GBcl!RKa zlf?bv!MN~V^tlId`Z5?30Nt2Go?XZ06bNnBa&)Sqor#VyzyYctKU>$MyvBvfS*$9N z_tUJGmX(P)akf7?r{`$Lh`T)F#7P7BLguNv+`oa~g%UOXXtO|~VlR4H*Q&L>tRMYG zVuCN=59z7xyBNB}?oH&0Xm)Zq^WHE<&6y9ui4T$p>jBc3PcbAxnQRbBv0Zwg z2Sjl0YwNt~&|3ySPAE^mA`bZ`j?0E@r4`^1p6sE(QJ&q;35O^&ouFB2SPD_CpjINA z34TLu7pwx7`((VDeP;vaxE{6ZyaelS>a1)gm~=GTj0b}EDveTmk$wkJ(D4bpN-4V@ zM6xsFOrS>P9^ne}1#z!q=NZ(A6PZZg`}*vwZ*oarr`4mmpY{a-x1=y{K%E_GghW~i z3LdnKpQp>vg73tVwCjZPiQ?ZT5dSOaJq*#}F3eu8Nf#r4Wlu+r47?Q`&GuG=w9?RM}O{?W&ZqW^NmOH~fVC@n4N?A{)?4~Gl`yrG@Lq@oH&wJL>*`~tDHUgyZRQ~F$+3z;!_xG3ks z3eS#ecf{ilRi*uGdAyE#rq>1)E2H0(6d6gfzXoi?}f3{tfr8+ zzXsoF7#3bGx7Uf(f?syCbfTFyRsHcSXXOQ3AI^Wwp`_7e#h6!H5U}#;q;IvRgz3b+@G9iUpitj^IfqQ(dFRJY@RuEqu zcd^mv$FCX+1n$!{n+CNRr;XXqUkQp_RV5=Q*n|gz1^@7V zKmYx5>MYa>zC6YIp;zYJARNDqqB+?1NduawZo`TXeRZ}(W>`8US9fLrkG9ibNsYM1 zMjdPPV&^;hLY~JK>y@(}s_o;RrVy^hy^VDDJlB-E>kCYW20B((T3-|QVmL5E-z?ke z0_V@{Pa=hN@REU)_Tmy*^$HQ4R*eIA?csBV^YgNKf;L)k8CRv%4iZYj?E8oj6X|~T z4IDIV=F$>z9CrFP-|`lMd7!>2hrY%G{$o!i;yO|s{|~LOE?>$L+Vc}#_8BDHRXw_+ zllN(g<38vM7Ffp0`v_wvJWT}eUGLwtGb|ga^?nm1hf97+O4r6 z_$*a%{4Svl%wJwxG^90}V`S7oB5Bp|YoA84aYz*Xk$+;^_u+YI&Z+Uj(Cs(AxAC~) z>e?QiHE1gnm*xuD4!nX1?>T4HeOasx&=xX_Go-7x$J;`4_Vjx^2l}ee9lERC_mjGO ze)0%V3j1yv6^C+$}RF6MarvCh-k>3WW z2^ceufM7sGV94Z;o7?aBa-$Y^c7pD9*m(#@nrkxRydbDQ37J z??KGLvQNio(`Am%P`WMf(=8y#M2iZuG)I3sZlvXS9$^ity3SUub= zC~k3_d+fELXbK;-QD)D?*USKm=A>eucAxT*g%E&&ip~0N8C2*~@Zk+s=nU8!G+wrD9St#?zmZmgqGE0}#b}7sdIf2Dxb?`4+ZZGN z_q1zf>{2ab8EYl=TG+Nd#!`W7ia4Gri{AIt_(XNg4>Tnd&SMRfmh!7#x$9DV;#=XV zMcq`2-%M0hYC@$-S}~MGa9}2$F@I8hwhA5z9okG}F&d0$1luoHyd4HB#oNUhD~O+q z2i-btaz?*-=80p4!%OYYz6C;@B0sNk>!KwzTHu+08hS9a|@?EJcqlPL{#@5LdmCzp=Xk{zs2k6hzu2 z_p4pqzuxl^|8Lt>%+b!n#P*ws<97?Af7hxUFg}k}1peIRm=WKbo2)|GTB2ql4wr+^ z%c&Lg6|6~TGHfv8+AFaiwxX5S%g_7#fhs9(UY}x7wmx}rf(e@4u)DR2;YNGq8j!BI zA@&3=3Dh>GN1fWqlhxs)#m?d3CQmrut}iySs!_B^J%=0Oy({ulc$_S_Oe$u1b8z!x z*Tk2xXSi1atC^LMJiHN1>4ojFL_Q$`SkQp)79khPeBgmBjY)W%zb9lZa6b}6h(d-J+Hu`-p$5&+&Xii!&Y zEunMP-^L6D51Smo*kG8p2+wK{~~t#$Q%n*!QQ2Ip>?X;bYv_u(wzzo z#HuR{o!dY)S3(0?_e7){CTaqI9x5t4ySQRMuW!FKMi@dtiHdl1&?Nd7X(}dTF>Jc| zb^%9K5=i>R>}SACP!cHmHGI^r(o{gpXfzmDbeYHLTjiExVHXA@`bTdeH4X<@X`c7o5^8^u9>1|&^!`NQP;wUW5zIX%bsKbWFQ|Sb;*{D5 zZ`eO%OMu=uxFa*D+wJ+9We$G5ljh8k%yD2;HrcT9xgTGpr7c>0SG|vTpMW-8)r^G= z{W$P*Zj-m|n#;mU<0&Y8+Y{jFHtr|{a`!tL?le`8*=w4mAN$YT@6EnhnbXpd-+l*u zzSt=5c^ti`225pL?-MVpw=sjHc@`0uxQh35w6%L(e76Jt{k^S@z2@k81^5EONclDu z-Lz|MA%H;ud!`lZDIU3K#(*xv30gE zwJ>q~zfW-&WrIIc{Jm1ofq{*M@@tGYkq&4M6dD=Ul1Mn#0RTd2=33jv6~`*CJ0JOO z;Z|_S{=fo6i5q&n*udR-h41r$@E>aeY!7m*qG2gb^xG1|0B`*v<04E=f0ZtD;Niw( z+2m@kn$c%>x%mz!U87PPBE!9+CY4Ib6kqslk!k~ZRTrzp+dl)bBi;ofGB$3ytb>6Y z(|?ZOg&ZTl#!b*JL!slul^|P4thY~J{8?k8Ie-Ca&kAAjL<%x6P*cr_+>;zfF%Ama z%$D9jRfgU4FtaErmsDT@7?(e*SFoi64;RBCLlLzn5JS1aNH&EBzp3;aGNjJqKy_fq zbef;~h=rHZiL@jdKbqsn)Dp$Z6ZZm#wEdX14x+niKso9@v?@(=6d{_6@Q#+K)AMR7o;IE5Jkt`;LVbXjPSmV#EU|lRneG<0$RwK zdu0ry@36@qT$}d9Yc=FSU!TGu{7z2GB2P;M3b-YTaR^zZCA(ykR2zZIUVs zqLGm7)ft+HQ!ATU0NO`__A~v;IE5Hdt1iD?z;GS-0TNxIJePxv%|D!tg1AV;Ak*}b zvr8wjT51opZvs2`S(KfTyEdoQ9p~BwBHSEzgUOd#lz={tDB7ZTBW#B53me$!-BV*S z-BS}d>4X!~l8e?{+w}=WIO&U-#&~o*3zT)*6FhL*Q>%#)R6bk+7y=j5{4*E~dU7## zsO~kXk!ugGTh*9q;1x0Z&gVTsT@@phjhM^(*f?4Jx!;s8=6~^`&%CFmEFE zN&q*|spd9222hdXlWD8cfmJXz8c*(k{+~eIS@b~f3?}tXGl1^!ows_*=X#A?wO&Oo zVO@86cABWI5|pJ zp}V|8LGzdv!aOGSYI^0H&!qL6pnB*BEySTr9*B^TRjL7f19~QfWKaNfS3E7f<}MHh1bICVx-Dd8`Sj8t25%J{=mx$}k4z+PcSoE^fuZ3QS&oW9L^ zOJP0CyZgS@Z?@>dWf0!HZY*3(Y)aoyN?VxF($9n(A#xQ25Z>dA?1^(T!%pS*9gR89 z#y=YHPWJU#Yeydv^sK7Aemvr@xYa834?1UX#taS~sm8LndY>3ZJ{sEKnZ&r9wX@;X z@f8Z;9_w*=w>omqxKt_|SbrQ-;3Fsjs>BAD3S#GW4=!$sS z0<>TzZm^U(w^?@=-M4vi98?iE{S)Ik@#3{IZ(az=$}y{$g);X^Nfby-CdkKFD09@4 zM0FWu48w*or%XwaYCy+Mq)EiEtEb%jEHm>dYY??-MKDQ8q2k-!D4sXkgWWUbFtO|~ z50cjl&xV6f$Siu%8D-){9fyRJqXY#1LMdK3zbFOSQ`S7sl*AOt)Cp2F<0$Q^(;aV> zI*jB9b?JEdIJzLE3VOheUqB8fH<04K9y^52QG59^CUPN-BqCf};`^$C<&6r8MNM)g zItTwyMxEgn*2vwF<2*XhYA0 zNFV98qI2m$h$+5>vICsM93k^yuOLUvmWLO1t#@X-ykU2UT@FHJkDx3#?RLN`RjaPo z3mxwyMbz7LiL_A@en3oNUjvBryGmNXf!Tvoro@l3T9@iwE|U0V8+9FeJVE{xoVTv= zqb-Ol^!!c8Yi?1{~(+5(M(kvMboKk{+F$zR3W3J$qP!{^=*^Kn(CA zVikMwfmJ=d&$C8HUZ$6cfi?6NhL?#*bI6^qHFR4~W<#=_(WoU)C!{@pF8++~|G>k) zE*vQTGj^fi0*3vSr{n|S|sJIY(x<_{zJxX^QexFMuWX!5~a zbk;#liwYfyBN&Bgq8G%?7-f_z$o+!L@PP-&}-O?H!~`?kT0*-(L-o_Kim@bWSg-n7Kd->qGqXic~v z*H{o|>MUQdLTQy~3t5{aR+*)5C30$v+C3;CNja+ds{*Fm0^uClc~%`}+KODcY?T&* zf{}J7r;a#I)oxuEBlH6m!pf!O3t$Sye8{!PaSBK%(I&NNcS!Jw$?`Fj9Hp%$47g9GcJ=#bq zz};|fvs<7soWUDJ*OeO@z$@#7dZut3B9>kuqM7-@HH+qin-{z*1{OJ}h}Q^oKP^(0 zlgJ(oc{}M?Av900E6?tLk$}3BZhs(;JQD;VY@NTnn&L0P*3nrKGYP}sVaDh~Ofo}h zH1yD#kH9nQ0D2=1l~df4XgZWi z>A*|Hhrg%uc zvH*)xElt?j?Kym#slv6Mnbf?cYy6=OBQ^*hX==M=1^4d`P65E76i|l<4`R+7;~^=p z6dqnTU`htkI5Wj|pzTe*p@qo!pGj~<$RQne^95{c@VdQX4M*y1%}LwC^L6lbjs5BYf^Xo8%{g(mF{onNb-(-o5osogF-9P%!1uAQ{Ya9sPk80y! zf(Gcevv)RWn^cU!K(ap(OT4<4cmf zk2NK!x|eq*@LysY5?ET%se3Ef0@@NXRGpQTUywg2Lix6Mz}qB84`zGfbg8Q^kQO94 zhGNWwu=#=rxl*kcBZnkMMf-Muc-@MOmOi9_DB&X200KT|39JBNhp=3kGU;wCqtmpb zIH)980ZK@(oE8ff6Pk_^dLf+(Hh3ut#~%V^TjY|nm4Rwr!O3QcPB=-nKy~VVTDP*H zzqI}ADG_Sz@Z@6vS{iLsy|h&odsdx711ipR^LyK`ye!&zwF~10Zu&&gMOxI=Sktb# zj4|c%N`s!Zhn)-kx)mprRCA2*L&0h+tOA`4;ej=$WO?u5T}hw)0zME-5{oxZj8`L$ z8zyah*d40jqH7-T2#F4gu3$GHU1wNdkQq0Kk1WX(Gt7R<9MC!v7%vv^8H)7ifFmS2 z2G%eqhyaZkVq3hnR9ww%vq1LSxfzt?O;H4}=lhsyGC@4V8xpymfPU#)eHQo*lsNa) z{*-8v!JjywGb95-ALG$C$TSgbSNwZGwI%4m%8}dcoTCz<6cM|>xnSvvIA!+i&+@K& z#eFtKkD3+~HYo1=R}cm_$J_37R3ilBNJJZ1b}Ucg6H7gw*hd36hiqCV-D2(_NH;AteD5EPCpsG6L-Dm|%kUba$UD7$;e_c64>LBT>Y zh2mM>(PVNn!&Bd=mjAR5H^ZtLZbc)P+VZvU4aXY7Fs9XB&iz3xdOO}7o#3(M;U}Lr zpqB1!uYIO}+H_3WQ&e^Cj&_Sv#-AfECQ4o7ayR6LVxqYVCavE6s^UT0m&VloWs zMUFOe#wZ`|k{{t{8*&qQT&{bff7BICVlUT^t{}B>9@GysG^qvf8*VXvJAih#>-ATw#Q@s#%Z`6OvcvbYfMflO z&@@8)$Asp8wk^&kj{kyd4JtO#YiuwdnR-1NFNA7tt^=Jm=MDFylcL2&*o||iIh0TX zs)iL&CK8U7$J3vDN)8v^7>zk%0DUOWSMCyF?)QZit3BIy&j6Xix{|=u8qnRYV-27U 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 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-1cedc34bfc11a3f9d8f81bd371c876b7.zip b/vendor/composer/tmp-1cedc34bfc11a3f9d8f81bd371c876b7.zip new file mode 100644 index 0000000000000000000000000000000000000000..949c39ab47e82bc761c74ee09c447eaa476d8a2a GIT binary patch literal 13994 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 H&II@$jM3V7 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-338cc0e5dd9ea4bc29607333cd7b4391.zip b/vendor/composer/tmp-338cc0e5dd9ea4bc29607333cd7b4391.zip new file mode 100644 index 0000000000000000000000000000000000000000..62500d6b0928d0c8915cdac836ff8e6a62d8ea38 GIT binary patch literal 376915 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

jR61o0T}JdNlmYPE-kwuD zHU9|{^5GUW&i^o5BuD@Ny#H`iCFE*mX6p1`8wd59|Cxu@w+{x=vc)C$%qrVSW4Z2X zvHFYu=?5j$;?mSHRU)P2)=T{MjZZO=Zp?9`0Gon93g^n(?s0eL$@@qu;~c>;9lZU` zMNI5|u)?{qm_H^D7F-k#>?MJ(WJ#HbiTrgu$gu#~k#g3e#I2Hlr*qG?FqNkvd|n`fFN< zqhdMaE(UZZElJ&Qrz#yi-M_o{1F4|j0pywnbwUy$$&z}RM2)-ad9mtpD zv?W0k6^m0gZBM+)CRSetnx_~?9>$+?jVr+p7g~d4yO8~fqr0N*t}&QxBjHm9g>EF8 zP6_zf6>bU+CDapM~6a{ck4Gpp;T6HcyJx?;Fxsh#eOj2 zf}p59AnBP6C5$Vt$J{mn`?}*{@?V0Q`>Ga2s#Rld=)~T1f9BkU1OJAjR2>fo+V{*A z&Dk&#YMVE)9!(&}QuSQf5+e0g?;Q{W_0^qcvWntlB4HLrH&UXe?j!mSSWm(jjY}lW zd$Gr|#tb($FEy=vGU6k#9-+Z1Rzmg|6PHjGbWIuN(gl>;IZ?FrPDr#>E)^U#AIx(a zxW_$@z$n(3D9uw+b7ypN|RGksvlFZ8)>j%m`lTu>k# z6pqT174)wsMqY(0I4JlVWQ!3Vp4;XVoYl>zO*{q@G)H zpckoi>Nu6Nvi+n|34c3ZM6L}!U2F$^>Mc}7)HR}J=_Dgfd(eA#E}Jm+Y3i!)qIzG^ zm-B9DTUWd66(YI11ldF$V2c{p`H94870tu00~e|KJ?xnnRWh6t)`9ftGm^pO=re5X zl1I9uo^eoW4U^D2H54#W^tU)qYOg;(pK5At0MFQLJB+otpR|FI@6H&obG{-HL4Pyhe~{$bJh-?{Ant#0&aSSxQxp#3XHQ~4;8WK@8O zLAync00SW&(oq9Av!anQ9nZFlyisd$YmlM;>#656!A6>GXlbREZ!K-f7yl&h-NOGP zMV2W-G6f{3UC0S*ywK-&#G3bwuLVmhJ61j5Dl(OU2r|%1E~pL=c3=*|%b-$PJtJRq zFSv1IX!Nod``s@3s4-Ny4Ns}y#O}e3cHyTlfdrC$sL4((pP>#k_K_qI;v^mit~?2d zB@AS&1eJmbG$)9Hq7AL?UGoybl!&K7XS2I7spKKVKkEj5-g!2OL2z;8nbO0%%SN9E!|92; zRnI7VVwJ}3J0QV|>)u2bL@b}!cvdhFN#m?Iz;uWNnRh)bphG<(6$pfOWXh(erzab> zji?9jn7?Ynr5kyoI%CWdAiJkJyCCe}moRt4Ud65X2^+Q|*4KP7*Vf_{%JoZDK zv3@oJ%tbK961huiihv08SVN5+1KTZe_(%=my%U!UQJEN}{7k;J##4yQsAR=bceU+j zA7nLKc}Eg?_tW+_&yhr;L=&Y!Me2R+sk*PzT?00EzsOZi_Yw=juvP2!Qk=`&;e7HQ zvO9^c3;Ard++?$`!2@T~AnX<&%vc1fC+qy8E<$v^7F6Dz0dj9#ZZQu>_?@t>*_w~e*ANd4@ zWv0ukO|#XmUESDx-9J@)GyB2qmkEBfFM2&)s@V@=hs;8M4G!RXVKSvH!3wKMVhJXf zsw@x;0E}5ILr}_|2N<3blf2ppF%09FiI^sd%wfpfTL3Zc+pMB#$6RUnm8w8Z$3((a z%yezdhSMr^FcVr*+Me7Oe#Lq!l30nFoy}m?L+7vIu0)1Rt96)!$ei&;zPDY7e$XYL zc+atC-8x;v%;K(Xh~FnEcG*g9X4OS%B*`lmu0G_FKuGR4_YZui=o1E&GsTx9&k=$7e%sz#=LP*8+Fyp z>E7*RCE!Tplt;Iv^=E6ig2KU8`TY)RxD+~_2a=I#X9!}z-qu%jmrDACnxrN=*AW_T zV7mxksl60xn9icgqV4n6?V|3q`cyr*4K!Sde;THmoq28YgnI0WuXc@;G46e|B~`$( zZjv<)-nOXC2&K+Lu`*lVTQ>Hruo^n2yjld1ZoUI&v@Nmhne+gi5PH zKBM*PZsYR?LwhAAsrhu95fjw2@zfOioLD`yJ1mKd^CDQs&~&Snn50C+W9J-*-bPx% zBosgVGGa3@~7E?cGtb2&CMaiFySQs4yWuOY7NU14U46bYiP=-r~aigb|Y0( znpMHYgz=yUxu)e3Guq;z;f|(tzKGo2Adl`fvm+oeWJ5|5gRctth&t(8(`eW6t;umU zH6N*RKp_39+;Rx2ulB0^w*t>oIM;BdLhkz*!CW8*<4tb%do|YImACsW_aIw7zu!@9 z)r~v&v`MC`=GteA3Vl+%%ER|E-^GruHoQ;A_X3!TcYFn#&2C0xw}NtM)cA~ ziAGjy*SJe=qR$2M!fL)Gd!8ZEa6`GoJfj7ZoRJJpaj>; zdr`s~bw4ZXtHP)7^^X^)3OLhhaGSll$|@Bcautg(sna1Be+1hH!EKE4IX!A0P?$YO zXAH#*giEuF)$k%1NNbGni$TD62Ul=8Cq8(@UuuEM$Ka9^(Q%LRZ$%17!L^=q83BTPV%IJ!mz zio}#$`|!u9%JemjuLjR1(wQTj+5GpUe`R+Nist}J*r?TjtxY~POVN%udhX0^H}J`A z1~hOc1;S~c(R$EC|1pHSRHYEDWvsusG!DYrp73_Cc8M||a*GZW8LEySHp%q+nn5BQ zQn%Hded^OpV<$yG)wyQ0sa@bW3eBI|4!@^AJ5Y`4+sR!&Bjv4`jN{*b@j zCQ5^*XXs#(O$=`IMhOw$wLYp#ipH&c*#x{G_jA5XN!{ z)K)jcWUQYy?Sc`f(0xzQ+6RO9*iuC2UD#fqb@7o(piaqLlN2_@1@P)mh;1qzVS^54M$XN2oD0|I=4xr_rt|8u(Q~75v%YdcJ6utlcff#gYXBeX?Pfy@CV-NY z(IYa!%FDuXrE%NqT4In+K8tF?(!^wkW-O!krc$1mzSwuz+K?(9B7$w*kqgMb!N-d~ zJSpUhXdZxDcX7runGO_X>1kA?DOtcMT9LxekHGF$4obZ-4}6}(gMeix+7IY6PQy@OHvq$tOHoNYKhScReA^T@OmYvV z`lv`!=r>=!fhI%sc{_f*>vLy~7pfa`cRB-3)i7nZL=i05e;0WG2g`sVL;_65nx4Q; zg~>#eS|Nzz7-~t}HSW53DWB)DWtB{QoQKH>WL!jmf+|nP!W-1c0PGd~Zjnk3C@P$L z)2>q?!FGxzlsV|&5;;JWX8^3otHCn{Xx7lVz(BOjroe`dvS5J1vb4{N-IDmNje&t| z-KTd`L~J<=y;NV@SC;YU70~$D(2lB>QDPPV`5G>10n;8L-)2MMb{1|Xd<<*5Zoq!% zI0!6O*b*YL%J0?Zoy}(1=Yiido#hIsf#aNJVZiHCL?V?8;#FWc#Yma)mqF1nEmIJU z)y&(gzHc3dkgK^B>V6oYk69-S>&Yv_2rc7Y1XRbG@V!IiNF4Nbpt=7#f;8cl<_2D! z7Io9CF#f}pXlUKJde z?~pzjm%{d#B$Nf(s6py@gef$A6}piI!Xrj}qtVX7<#VCXA_t2jgXjbcFx|Sb4-p|Y zWKk^**V`}Ybux0Q7L&xPdasiBRX4_RZ%-Yqq}x;cm_poGNJl^BmYgiTQkSY)1fxMB zr1?OzL_+NusOERs)D$G!Ozrp0&e)7cO*hhSPr~GEb^y z0}PrjRoY75@FuVOkQ*nHLbm9iQzguPY=<`O@9LTZ@lGVt2mxw=@n|{$+s{>a%>{w! zhSaNsG_ltQ!%`v)aSWRrD&Ew@6c^ffgkNW-kV6K4IcwiHx|EZSU#6fRo|Y@li0)U= z5flV4ir}Y@K1UPGI_PE#a6ErH1{!9qGti*&3h+UgHAhXuX{(xl<6u)GzEjN%R3Z+< zSenHj<)|=G;j5%omGW0~q^HQWK@iz*B2EYr&OZ|_I8vL3xYG?v$zv_ z0iu=V!LamfCaI;I3v0~MIs>mTueSxCPn-YL3SLzIRd@fM9NCtHWrMDy*pG>cNSj#C zE8o70Brcnp@mQ#45?AZUHT2$oZTxIZzadLBz1cFQvKra1M5R8Zr1B!lFbx335u^n~ zJ;%TtrLWeE9_imvaBHoy%!^Tbe*12^uHOW*dak2w6^1!*T^2L*`?WNoM_0w1{YM>r zeekzrSf>!w!8#xuIgU*wvy4XsL|p**Y=!?V+l9pMg{6aL6-;MU4YtRo-@deJ=vd1> zyUt(JPwO$e9KpIPx}BKzbQ#Z0_ikZU}}?s<$sVA!8I{y4;WbTzccT>s>hG7le-6Pa>xah2OEi z-~1$_{sivy23_Ua9E{4j0lVe;vxi~tslLyl_dYE!muX>uD_Me%h(g~7oAD{ifgnPH zO%8O3HF>=1GqGy*k=aKp(%5WKU1i@}%qsw@_Cs#bw?w<+j2Hdt8S7wK2dPKBwxdn& zak=DB*-oLKhQB!Sgo|eCDyA)_OKuWqkTLJWeEDLJ?ItP>Q&F$!Rw^F`%w9rY8t9QUyLPYwVr2dt1kd z{g;d9Ov^pnFJ7CrS@>-4cag^Q5{_K3)I1h!+iKJNUYWg~4Znpd_YN zF3Mz2Bar5K0R@OQmd4IfNm|J0RGnS*|f zY3A(paH#2**}ZTA4}Y9~MiNqX1&2U^9n?iM6~I=Jc10z~mS66F+*=2cfw(^ium}02 zPH^}tmZO*}b}x65P2YX&6b{LyKh}QnQ(uioX+iu}c`SIXZ0 zt;8=|uwXSE+2-1Kvg;|nhl;kD$Qp^37QJf@&@2I(v%?Jgb1!xfBgDsDw^hyBVU9MS z$xIta6mtrq1r5`p<}F-@joGUj>txj&US!A>i9S1`kvwp~lkE#RQ)Q7Ct1}>*w?UKB zv(YCVx8;gXdT?&e(0y`0xZP)hJ>ZCX=bpF4&?i})r;)9-AGAmep%3DHq?P2FV#t^0 zR(ubzchRZQl;b$l+W$5>zu=uDGGtS0SOub-g+|WK2a0z=M7XHRNRc4^Gilx;S z_mXoSSP?Lk4d%VZ0*h-zdQunDR$${@i7!(Q`Qox_d1#O>8HTnYOBsj`T0c>e+zdky ztto-`bTKAW-$1~Uc*s&BF<*~pjXx)yHdqxCrDeVWVuOP#uTNCpq%1CdvtBwqhb+Xc zvc~aR&);a;NU<{k*Zt^nAL^Md#X~|{^r3P`jB)4Eb?W@})X+^(dh+r&V@4X|a?!5B zlHk>|c+o}anGW|wZM|yGSg$hXfe6%IavgMdIeMRDZ?XA}6V6!Y6!D84Z_&wRQCdJVWuV22!bm(l~u z??0e?5la#am7lh^4jlkM z2-WMJNW&B*k^!Ox8@0k*&)hN@l*xn5fA$KO_kKv>qb(`aAPc(916@yw8m9yGRj80! z0pfFkK~j;D?2 zS4*=rPvEE65f_RA3a2-`cMppOBrtmGm(C~1QREx|0sHbfB+jm=9yfDV-~D%FJ8I<6 zM29n>dVNA#D1_Dp!DI+sb(BboxdT=GAOdiiC`1knXrbEZ9F=_a;iA?@8nkh2_$h`1 zi5Orw!#Ht{Y2VJFBTX|q>S+n#0W!&g9gc@JB+rQ*@+8D9tRL3!xI&&*CI=-Dw=YYN zk`T{63H#(g!U67nLBzydr-}x(udzihp>b;3+2D9>$70=&n#YyeqRt72jH_QGLsfK_ z(~1naFoskJv}5`ceU1q3bhSicuXGe~dfgyP%h3)Y!M1a7P}&~M!Tc(&)fX!+XV0wy zVJ@s0*6M2&h>0JxxR z0SX&DI`H&gYPXDk5SVaP$De@CJ7jRFL}`5?5(N0hVLOn(5Pn;E5}y(Q65j61GkH%& z>f5;}o`4PwteZh15h6oH^6$qF)FdGy5oy$5XzO6POO(0HuV87kAR-i{B+5$JEuzk*SJL`_nsa}q%%^GgHkC9$fZavwEzv6OQ6P5-b z?x|W89%tQ;7JZRP4)p4KhM*q{`UqOt5I|OT=)9Eh)U4xD4G#0)-~cW=Mj>U z9Me@Yv2q{Z)!J~hs#Vc$=>`p5+$Ji9L?UL?6`!XFM)h=wQ>J#A;x((gglS3Nahc=N zHc;PK4Mdk}HJBTs5y%ZVYj#*(SUcAkpi#{W&cii4fSRbQgX<)dnJ;V*#pXU$VXGU>FAdd#m-~WpPT7kh*FGw(M)xwf*|$5--nNngV*09?GP6sejHe+ z326*+5MdF8%*_QT=1dOKR~|a-EsZctQm8kj_I|I9DpJ^}%bX8Knuo|23Uc8S|#Xrn`7? zjs^byYrfd7vm0x-*1ydY$Zg&XrvUyh0tI7R$awtiH?C%(`RSv>SM8{9n2Y_B)MQi8 zuQxzc92&L<>1b@LmZqb=v?!QbFqJgVXUfq?FG3&``=w}uDt+n-GTO0Cms^uT>YyGJv|`8 zVu5uCJ)qnup~<>NLJ5pESAd{B((R-kkbhw-3d+Je+0dRk$5E#DSRfg0@T0rZX^vKO zOt3X?J=?u6(DHX1a%VN*xs}N@kPhP_9H~oZXo=Ac;z|jJHt;u><1t%A)KOZx+=3mv z%}K!30gl7Cb9KCag#!Eb? zIKY?Z&yzPVThuovA1hmg?xbF!_v7QsmgUd!eN%7H3!cTKpPqWl1^6c(2&JAX#3kBa`&{^;{P&yCQ@p6#{6*(O^ zsovV@*29)zXg>CyFV)O_0sVGxu5t>jPd(eK_g%PS)=jP_piRpBwEn5(;5yUySUvn8 z9Z`tC5BB-oK5q0j95KTcov+W~Jnu;SYz_DAQB3+>&q#)6?$)(_rjk>BTbeV&km>95 zesA+O`$n>#g%k`sMqh_Lq$wU~|EEB4XoET9X%8TXSVhOm7a^Dz?=q0dW59-;_of`v zMtJ=lFs`q&;|g;$D?M2pP2gzzi1i*hgojAen8Z~J294B7oE5r7W0K{Zp(iVaO2tzq zXrQP+vU?r2l?yUvM#o;VoRSpYIWH*O}m#zW0Sa7 zsi#Q%5jp15SRFHWSc~uTNiRrvN4I3>)$F6Ksp;&j%Mfzc_lE!9$96@$C|I07u5T7U z@@%nxdVR4sc5(WNDHQ&HPw;(}H=Gt3{*^UxDQtFbvf$zYD+$qoGSM80xf{uVsj0W| zE9!8bl!Jw3nS?X%UDy z?7LPrmF95?NbO`1qUT;f1xoR5IZdi+CL8y0h??+^v&rBS5WMQ<)wGlEwN=O*e4MS+K1L#$PUscbZMCgLljVcOdtFSb!%csq@vSVZz*zT46LmC#uuJdK* z!qJ?~^^jDQI1BC*y;WPM;=@F_)3lDITo9^V+WNgwi$$L_r9#I!M`a`{14@fb!JbRQ z*74Y~F7qzueJ#NRE;Ic0V9;Nqv6P_kA4*ITcxp%}2I((H6_{{oeXI25p{*G3%VMDv zZMUq&@0c!mG3REr@@_*BdBi#4B*R{Fuo*ANvmran;XKX|JbUeGh5WhkWI_~pakvfI z)u;)N>-~Ec*-Zp5q-P34s7J!sv8u=Yi!MSEE$LHIKFQyh$^|%UbyiE~gNx9u?K#Vt z5sQ|VkcS>``0@FZJ9z1{yj zU_9+sEI6g=J^k)Hr+oVlJ(7TaMdtEPquU7i&kcA)Jnal^?M00K>-}2oU-oYpzRz_p zU>K<=FAFX9QkQ=!a#@AxL=Rvwk_ZY&r1pstfh7Mtu75oH71Q+&i#;&_wo=~ttU61) zUA7U?68th0BXLblqgj&o(p6x6TjsuU2_whl2o#+_8Kx-;=mSl}5`p0=aiDGgEfVCs z$1HgYFaUNFhW9~eGQ6up0!ggX|A#-g08bue`j?=<80(vm#03pq6O52zHL0``Y>0S5 zLxNMNp(l-r91C(cxTqN93@xUvW>?ju{C##;hohk|a)WSz+ zErvBUd!BTx4g(n1!Bw_cDiYRfZBkbvq4>!c-7U1Iao_Ha@LZprJ&Abfj-L#V$ekZN#epUB2kG{Bc2Mx+#B5f zG74Z7(1o$ous<%0{+;cgUc9>f5IKGCp8Q@KK2Mo-U`I8VQ_`)525A(J`S2>`|RD834FV>O)Rvmp@F zUo3mRX%2*z`NZSCDrmNi?C{Y8u@*5+i5E-S)6d^o{ykmYJ&rsc&v56X249{(>v3BV z_?-CQXSlBz@wgLPQ-i$PKX;#wR{+YN9$pqbwzxzbQXbaKY`@V9FzwpeH~rU`PFYOW zQ%qoWC53s0dGXVNM7DD@_3bTPu;lx z45)jE8d!HgtTC;_)3c84veTZyoWC{m#*oS>hAXcYR94wzxpD>(X&=T!D{S|lxdC%S z5&L1crQu>mx$jP|fMOj(EuA+B@ZzJ4f})5x1!j8ZPrn-WI(5@j(v#RH?JJI1@86*s zZ@iHzjn_)bCPa%ewny7GbdzA>(|NzF4)n_**Nyx>egsyHv2m4>%+G!ozR@Y)=945U zvlcQFGHvcn(WrgB5Af;saoIgpTO<4ujCn2DlQq*1CHKhxUf^b_v+y&1iW|U>_sBo> z?h>^zbpA;TGyLyI$Iic4WWQ&9M`{=ix*QX4tX&qppJADji*^Hxwgfq{lz>=z4F#Dsq2XC!8ZpU#mT`Fb#+TbH*rGGEucFpnin&%oNTh&20xSr!&5tetjPY zW|pcy!g*sbyv!frd^lU`00>^k_$l;{a9)Wqsc?9Y7c&-wS|J&FAirzpw?|wQkV0aK z=}hw;V^>#_qiO*|nOzs+*KPr(%GF{^K|ZY|56Pc$7;fJId6Y^sdJX^ldjoD8x_l!V zTb=c?ILC>6=mzv~Y!j*(f~u|izkSOoT>a!~3MMCh$txUgV0$niqHlHq#6(^moM%&3 zNG4JZC%5S$f{`~W8;F7^ET&yRlA_McqPjX zOXW6Am<->>XCSkGAMXcR4e;ULoWAnVV$8-HYtrDLSHQL40hMfGphSj6!y;yl95*E~ zT1|_dlZx$#p~X$M>YBKXp)6(IX_H^~sr*1q)PvsgB%W6m1NjV^Tf)GEX-1REw}D*6 zji!U=U#KHXTpD|dEgx3Mr+vSt)fd<~mI0vH-hNXZDJ_Dl*;1G;sf*b34S2~mq6|>6 zC9rLo?G+EC zo%EJ=io9o`j4qvHi|Wco+NT@D_W)6&D(zvVCRr&_Z#3#0RHqV}va4!RU7~=h2HU%I zmficUc;ik6#=t*M;?efyIwuzHhpoR)0-Axt@h0Jj<(~8vaC<j1yl;9K^>kcmtK|jh%^Zwxj<#Sa|2bLy{lMgf`S~B&p;QU$yqQ1S zfhx>@KArqur=PQ_p_8%2e>(z4G_;*J*wB8mF*tJPQ&d*d*2~OJ*BX*3YTUbI$>p9! zS1bsSk`$5wpaU9PV!z+w2C|Hgg^(=(v zRNmi^nHSApW+VCl+C8v}8h35EMV$cQy*J8+pB3LlzyTTht=A?^P3G=sDd+Q^0{ zPdmU5Or{@jZdxZ)S<}}yH)TuHd80HO@DYF*JgEXyBW*NF=B<4-+2@5>Td2``s za^@B3zC%pI%qUQc;HSWh@`?W8t83$d&Zn+Nt^*4p6BJRTq*-CeeN#GR=uzkRp$k+v zH&ZpAPPS=b83!$Nd#%{1h?L`mHdFA`dw@Cm0=u}ne+pA2^LC3lm*>O*YAPZlXsc9^ zYxJs?!m(1FrcTn5`JjdILy{*3y;=zI+ZId}F%o#hSL#&|n~!t#4nr$Vy?Rsu=p+l> ze~YMl$J%Q^eH*!(OecLSc}QMMP`$7be<1m5M7`(fYFrC!t5mL9ZOX`c{@S&Qr4cdu zj7DKpjrv=Y&-i9+V$%e`g1%l)z94*`EMD%<+VrdgC2K5f&PNil!-t6JT`+D0Swh*c zi`@!}-$R)A_(Y!u9JDG_oO@&w-yh6a#-fPt811cQG(w;`RtNPbcj}&!YNfAG6&JEZ z`>PVhu1iy*>(!Pynl%WB8YZ4Lwpxt?y{#m|HI@$g%?$&=iE?WZ1s|vP*Xh;AV;z6a znnb^cZgt|}U)rc&$W;@zl^ttfgLP8un3cplr5YSP(fa=remyBV|; z2FK4BjYmQYsH}h6T-pgMeyK$yIw>D^6zfU}&{0@hO7GtlKXRbuawaz^Ldy<01j^@6 zM2OG(ALHBA?tFK@xIvzroFMq%yUZUx|B}+$guNKkv_^XiwpEw0O*b6`)Cz#i!VG(z zj{fs;{La_09UmIaskLXk6@aOr^4zUTR+qKw(x)5tdXV%NH&vz&_3r^dk7|d1{Jq6# zvhD)L`;sJx_dt@|mzVR3sF!=N3?ALbrD*-%X;mbebUx58`XVly5Z6wt)xiTl_|X!+ z$S|+Qs_mx)Io`g=l&`1yXc$RXLeJE9+C?n42PCm+Md4}9@CK><(OR9`hX9bgBZ=)W zCELDjdnX2rJN$CjPTiAAqJ7ypX!ox<5Xl5FJw3R0RGgDd&#RI>Ldd5+2YmtC!pP}VCwb-bTJMWDu z1PxTVjo>s(gN^VynJ;~El#WOrIrK5aS zr6GK_m_5MI&&Gv8#eLx5Me{UzE&QQ!ehl5Iv$poKsT&z~3=edh@NiIDDEa1D_-(S9 z-@Xac^Hyux>ZfXr9%$RFvde|JVfsukj+&P65hO!dH;$E?rkC6<9gPGgJ z#>N0`?qdyw6@xmrt*X+Kb-s~JZQVJ~5D{vQ%Q}w*58+J>OTrNMhO8Trd(T`@-;=jR zU{yGnz?9O#_xj818Hdb|4zBpwQY)OY_N{l^wdtZzW@p_1V#9D$Yvi1i?=-N(o~KDU zpd-sv-5(QcZdU&RC24K>XFle^Fq$&^&#|j&nJ*JT{aeDaorG78yZ9(!;*fz=OWKq7 zSQH<_z2;day`!RuIliX%X1R}9SA;oA+CCcb;HIFwgOyxY<{wOb=ThMCKZV!j%GaKgg5cR+{TF_BnvGXweVrudc5$g zd?$%^MYHlgYs#r$@5>e`K@dSasK@3BN!u%m!Yn2oJ|uNMDNEvu#^(Q1R+E2%P{Z@n z0b&1txEG5$IoUh?q$dBj@?WDi@UI-%o_FffXpFSh+9pshrG48*Z1YvoBrr!b(L@k1 z+E@}d%YQ{X2qyHMXZc(zP!&#%a`@AVLMitf}Ly z{jZJQJe^pxIn?orrZYoXnG+nuEflq645n@6xI=czmBu6jk>Y2`W7Gd*?J1Tp5}d-bujSV@Ub#iv0&9h)%NKD zTh%<|Oa&p_!47gAkXJWz9ytUH~ISLXfyp%NFd%hT-KD&B2pY(Y;xpZ@aG=6b- zShsQW;w`Dsk4WDjwsUAS%2H{8OK4l2FuDxkBA|s?UZ6$YQ{3DfWfxk zRmOMqf}Yiw1Qx7~L~uZzqK&!f5bW-IKQql#L6gx)ky0v!HD}>CcH9YUf?NZ*!^^g6 zbu}FJUZKM{kgS}WDm^iH$T&J!(d>$hXB*#p*^Sfg_^>$E>Qpz`XZR)+t=_T&F@FgV z+q$&S(!T}#u_s1YWMty1=d1LDmeauEg6-NS9t+X!ksDM_wB6$LB&K=Y;7DxT_H~Qa zaDq%%;n~5f{8t+L+l`NVMKe7QCGPoY0=>9ewA9jf<5R%~Vy*#38wh1!dckY7P10iEJ_Rw8644$2>3-8z41L(&C ze=vKORAM!5>{a4QZoDXsqP{1-#btf)lF7Ll-i?BvsJd9NKFShg&(*bH=kvg6h#kRj zTDGtyugZ9$Hg7?K?vW$1SiyIhwJiKcY*Asf6Yc$n@Ugxg+L9eV z;l|eQ^lj-I{ePd)sNII_NB=A#_I~)`f67pZ8QRzw85&!QJK4MbcZWme0Xt+ygq|Dq zDZ+3PD=bG+S!^g;6jV5cNMUWlI(Ihf^R=`qTP)RA_fb7>$x0jqh&|zM%=n#dPkSFH zGb~_Kr*Rs%+_s?i8$aW@Y5iC;QAS*JhOlfgj`C2Ef-Qy%!PQ;t5c!`iL^{d=yiMd- z3eH`)4+wrs4M@(#krG46-r<;IW-mINsjJSuQMXBkQeSPtvHqP zD4#OX!Zj$|mbqu==fEiGW)cDER6DGy)#?-s(D9trDK$76CtSC>z{=WYVp|lUMZjXX zIx7QC5LV;`T+!o~;rWo#pxRp2(O=FYY|VHx+_w%I?vJN2P@%-3@_fQ(e|AESA!4+4 z_7dF0QIPViIm?6uZ)C+uN+DW6PFfrZO}v@WSqNvCSrMs=YVt$Q0_bs-Y#*Vn8?9DN z944(`6=-#149vYb3Lj7V%IiTd`^KpbJn(V69 zEVNMK7hJDkGh1wcgKJ0Tttnd482f_Zq?Z_QLNGIOu&RPV);s6rg!TcV#m$_fAsN+Y zsl!j|--PW-ub)o ze+%=himi%mt76+$#ZFFa+qP}nwr!k>U9l_Xn)|s{S-5dm0x^j343k4J(EG_Dua?v3e zp8bd;U!dtKI}eF)TGbJSM#RT~q0l@HU#8*|$J#R&Zs(O}!a?G0+Ih#SZ9C&Y2_UC1 z3WGgh<`Bk!O^|aMDlsobwq0FcloKb9m;y6LN67&I#KZ5}`n)#Ri)3P};8Z<^k!HzX z%eOBd1JhAt4Q1EwJt!W7qRhbbZ1vy`!4L_6-O6oz%;TW|0a2KEIU(Z6BVfzL`yrV$ zu%Cs?C_02%)I`z68ZubzB!$bC)L%E-;h-1KgrWOL~ z+klziDiB0(y%lZ2vrWa(?LCJvgyIgun`m#n>)GU-3d=Uu`=W$Nu z8l1}#wB9K?d{3VC`I~#4)v79@l!(+FFlh4+Y>ZOk1?$MT5i%Me!2b(DcLrnI8okj;9uO_+2q!)SsO~T2VPVTD%oEJ|)6#Yc- zv?Lg=|2GzMSTHDfH_6iqKN%O|4xVC}>>O8*;NU)XZgO@AkF`rCQ2Ug4ke>8%rk1}~ zoZm|tSX$?frzHlZEZ2vCrko*+1r3aj{R!upVsZA%fS0ttUg@%`N>-D)MD{%^VA!LP zm{E$*AyYRb;?Zq zY(k&2uakL1J>COh6BVeMQc?PIKnU{+wR)lN`8xekIeP^G&vK^rD*ifp^}yftVXE(6 zX2>T*n4@0NY-NKq|JK=lHmScv*r^{gYNPVog%O-BIhBrF3Iqe2yfg;u&JR^O2dqS) zgd_`@GOElfmrqo_tgB4Av6)2{2jMjTFhGw8;$m&pejHUN?%mRwOoUH^+uti=UV6YQ zGqDQ3S89eHYLQoy(yJ}yu5-%z0Z1FuwC_b^E7u2kH-zrb z1k{JVlJ(2(XO>96Z@?t+X;SJHsT{okmNTMZ?%w#tMVfb4gCxUTe@qD=uG8c2$#`*&qyIH7XgJ<8Rjpm zmjTLdm6oLU#^wfM9`CLUNC|WnQZfomUH+LVLtl3JLmz!S>$Wn?y(KR#i%b>FV-iHW zUvcG`B-kprjFYpunR%sxeF#A>iJQH;g?I~e?LrP!GQ0o9?w!+dU+VoM>*M)ZNl0f? zqLZlFP~Xwhx=pnjI^N|&<|nGqkMa~AikiAoL3(3KaIc0hleqwwHELU)^UE8kX0o+k zTO)GZ8!%&zt@AG@%PyPh1OtE#;llZ{&Fwd8ZC!)p>Gd56fun>)$(4ZB1~M*)(xc`= zy9`o}%)$xC@VYw=$bK8b29Q3w>e3^w2Nx5CvdOwx4kyL%)VKnjJMp2}pKQ8DO+G(( zxgXP3$ChmgE|X*E3SNx+!j?j3FZXx+yIJmjYqZ&rJ6YK~9pbFubkbxDu1YA#R?0$q zpLD2*PA~5;&b1yXS&y?0Cg64JFd#O&|8ml6Qi3O39$l(i|Lo`Ugf3a0K!)+$zt%l+ zPb!L?s~HW<_6j3RaMV5gv3(?_30y!+=xOhCTPK)Bt)L@kOFPp$a=JZ#0Ijhu)*n3#Ix(aPmMVn*u?c514}|$eNmEIpBemm zcrOt9S799mPqU>%y;*jL*v=bh?{sKx$tMgxF|7IEq-*G=CS!ZRB?q{JV=&nZSM6axuGvz!nk7d^oPNJz{NHWk{}-$OrzdA(U)~-7 z2S;HCTSrHL@&696XN*J_F8uygqQ9C`&3{P8{Kqc{8abJ}{14Dq`O6Q;31I3jY4cUW zO$>|x|3={dN|3c(XM_v6`at73j{~a=)cI{SsoJC-=@MEz`Yn)l5uICug_KK>@w_)y z)e3Y`G~nsJtG4NNp%dStX-h<#EZq1{sxq+utOK4@(W3d;eq)0Hgh4#W^q zm!1A>_15Zk$*@x5=v%VR;E&Oa9h_FW^u9Vzn#z+d`Qx*Ofm!7T(9w-5tS-pOcQU0j zFqyLc#Njw6D>Dukv9LkUV_xiTZsZ)t&As$&;A(8t8zz_$vnnM9CXLgCT^?w( zzI2*{@z87U=#smOg)M}A#?#PDP~I;FGTf>&2{4xv4>zM$TW;Z=rj6;6i~G%lG&^CP zSw))>_P|`TWoI*DSG%lcp2`c%MkURIZ- z@ehcw-~Nf;Bltr$h<~Qe>Yy9G3zTGPZ0l&rNUnE13Kt{ReiE%%Q5TOlhhv{5htF#t z?%j)*rM+9+69Nr3q|cBQ*X?siyaYqD++dGs4?HOYxb{j0*U2+bA$s4k{|Rl#lFrox|h2s z=@`=kcd(>{4gQFoL}=6)6Il31&E#tmv>2o7ruk=a3!RM^A~0;E zI0--h4<8zZ%fEO|TnWF-!Ul3?2W?Tc^L(Dh0RC%JO-vAu3xz)+3&C#$y)R}zSk~TM zbHVuvuNT~18WSYL2Nu&UWwnEu{aEeC@*_YRrfyAV5h+bg>Q_n_(S*7&>tMn{BAty7 z^FYDc!G<#68j$F~Wg?q~FZ8pgQYZOSpsQL{KHx2bEsoXrCX|iDSXnwXDGn4LB3dabV<8Z|NI=Grru%vz-wn}6Z_^D8Tfcq_B~2aDY-C2cl88O zY;)%_MiNlI!1Og(d=z4uO2#z!gKq?ut)oT8xz|?SkC`uXi3`5 zcny}{+zuq4sY%h;eodx+xZ^S;jj+;%0y_G@j**c~ygE_0S2hjFkY#23=wq`kB%)yV z$ET2NgoGk#6zN(7LJPa-aGM14uZs(+n0guAn+nx6-S+y>Vg@d&riz{2rp4Kpr;azo zRPKyUN1H%|YEmN~C6Aq&bm}BvUuK;4&0k-H6GZ2 zC@yqp`GHNrI-{3X^hQp+C_kax8qxki)zWKTldgs+>}(IjoHt_2fk-J$#+2J`sV%=t z6DtrZdL4-e&Mxg}NZ@cuF#|#`KRz6Mtx7`@$KsVdQrRJCu_zlt22cmz*=pFlN(Xa2 zxeRd3%9b=L67E|ewe}CJ@WfkV;t1To(tVtM=+K%S+y!Ljlm=S@?_Tm-6X3%6c>z*N zQnDtUbUp870-XXzZNBI3D{~P!VV-z8vYHcITeg^$d&W9O9V*IsH`N{DZQl~1_g&gzJK55>mh&RLB z6N~gH*(Hll;Mq-r`e@b^ol?hsKb_7qVEmSoW<3{5E#m!wKDX+`DEU0tubJ7xHOiGpKE(Lr&~BqsRmBcgSjj9zj` zhIE5@Tz4xVv`CR$>q6h^x9-3OL0W!E5#)~R5s!Wk1nnW|w6mpBz8*eoM;RG7Fpp!q zat!6dDdMo4YfUk1_>#Ji(881W6AWpt(`g_saO8M9qV^0n4&j}e>8P|48hUf#3Qcq|BP~?wEP+hPyGI0Bm>df^ZIQORPz%1=w?8_0HA|5k`is5gaEwCuHX%t)eg4W=WHr-M}| zH}*Y!f?h+lGQL)h$&c@Ks}h!Jigeyb&I;@W^7ui{XeEvOp409y6x-q?wwZE6k&`_8 zX?vXRtsM^2wCvG+RU~0U-)o@AJ_|OHi-4!>+ECuICBtuRG5enHKTH-~&06kr6aNDU z_RRlGI{Uh3LMQs?((nJ?^8B|qgJ}&dTO9U(Ap`nwg()B!a(WjNE(x+O%A~7(lCA1P z{({pA*yJP*QVvySmYL`1CL#^a7+JGO$!L=KWNBV#yU;FQ`m?X!@Y6~vGPza062X}OYI z&iHbKGSRqvt|{#2hf*U?Hr+~lsSi~$poR8t7HPu@b2`F30F-b%Qw^MI{VgqcUAh- zJj#3|tYH+Wa`IwE9*QJV8LSEL@f#=*;h!1CwD*ed-{SL6=+GeicCSHLnkbXNn2K8M z*CrB*lyI>c3^D)GN#3G32c_+&MiBNe)?gQke$d_0NxW1WubDNBb6gjMQwa{z`I{96 z`oSAuqB4c};vj)iQ;))%_0QIJ&-~~EPixU1!v-VH63EFx5rFqu;|dUgv9z2H>pqDKIk{;ZaUuh<)Ghu2TSC4BgG^c|AVXx|1TnBc1(vqSh_pMU$xPjq zTJ|f1Q35*GeG6RK7|s-YS9$}1TEdT7!`YsQ$n;XxCPn_&c&@(w`-hsfeK@|1bTC51XV;z z%2b8Lru@CMTG;ZbpFm~@fHkQ!+3$mnbcJqHZ54c<1G<$t*K=dAW>w3DrghK2x>|^U zLdhq%D#sQRkh%}K@gVc)^vmAr1ve?KioT>LuPd&fFWw?MfX3e8$H0OO0b~IfEvReo z2ca;cL-&{>SGpK~YPVuJ-X6Ql+=Qo+f?@fuY z@}c^_lPtSHo(rpSUxC3fC_A*BPn?d^E`V?Nh8BjaZ^Gv{gJu4hq(|P8U{lt?vH{e3^-M5C*R7=4Vk^ z!OY=J@&sQ> zMlOps?KOdW>R5G(MspYz;#TcfE4L2#u+vc294k41?ZCml$z3XmAGEd>%IX4*&p3xc z(b;=y(tp~L7s)%~07z>dj;K~jG7yH|Tg1>j+=syS(Em0#j%OsXK1K%ycP(N0AWRGh z#2qkF%2v9ILelOJDVeWH>FMQWm8jn8ECa3vraU}eIFzn-;qWt}rnxle^|k!T#8$jW z*x4Cb0)hdCBl%@A+{zwu+Bbbm6-U!qJn39RU``#XKk(TEQF^?Aa z6Q8}diWiH-EJ3%c*=Y5JCudjSc}q)s`MNz`PcQf>Owkr!74IJoz(y@G=iujEHtJ)J zk-}C`MCkd1ZOzqh%cObf8IPd@(_ILweB<+V=+9XmkYMj_+{eP*S%#J*xX@1U)GQ!z zpe&+s;e`+@Dx}51e)jFn7a#{gxyByiyVnQeonaPzrxJVdU-d!$dErtnEU;MHywke& zj>sP;uDyNE<+guJs*3qo6fN3!k500Yq)pd;D%q{;ga?R=fl?-E!rtLXY<`S|J^|vZqkfTg; zf!5v;R$6V{mpOtp^r%Crc0z6B1?&t&AT6-h9?J? zUt?`5OzXR3u@Q#oq~s1}ky^^rsN=%Hv0U(T8^80u1e_QQTakO58<5blz5)C?i>Kd9 zp48X|x9+b?e-vPUvg5CqsTY=`8MWPZsa&TqLGEjl(WyCRBaOK8$=m_h%GD2Vc}%~y z^+47q2#xQRgNnBrwtolV;qE_f-rJg$4dnSe6@^N0n}X#SffVs zJ`3louD`ZeBrNP}X@1#C;Hk0lrrBov`Ssy)@0-J1;bcwGkh#bGTiloE%hM1fo;&uuafXRj zBH1bNxU@$B>TFwgbGd4V$KrB@A5eSQ*+ZY#egj2FlE%h8G^DZAm-}80lW|BVe*+>i zNQt@4B)f?OsJ$Mv#brehU;B+Q#uH_l)tt&_#rs&n8|lz^fp}<3Cx8)sW2FD?)i<`K zjPEL~!eau-Badee3DYag)zj0CI)n_T#>$7%MD|CYpep3f^7!K&9&^IzesQPmorH)} zJH!<4ca42}O?Ar!y$jH<&mi;>(x=g^zmFhPvDZdGc3smbX7e}a$m$%f7Tt|EWTnn7IQ$K|r8(6nqOePls?C9b6+0^RL?4=3Nq|T zvdSfk1E<%e_Wlw{tA>k^$;dSK7x>@_+oA48lUs7HL86Gk_gz+Vl zcSS=5FIkg7UFVAkV;kCh5#A8C6cRt7?*$^_sE41vG$GSPe^LDby}Oww$hei*{Chf! z*Efmu5-b;T=P8!VCRdvEF8n8$RE8wdBpR@w%|MGa^1}-^J6BLhGN^~K7RDL6-D6{+ z=A9*Leolf!gpCC*Q($` zc7%&ES1XDI)|s3RMOlzsJ65j0Mv`I>GJ$%cdHK0pUmRm_vM_Se!1l-5uX(p{Cvkki z-v$l2iB=v#5Ta5){kq}5driz`7X3_4GV(@p^OzhC;2$QQDuIhsBy?!kPpiyw0Eg|z zSzFrTA(O7smLGUO&(-xg&gJFG@W0m$a+n}b7z3=o^PwyZ{rw%{Cg-3-IREq2AW;!D z9v!pn2bReYX*txX?m0zw>y_u=js6Pvr7!DsZ%gkGj+d`w84>Ip6-I|s)G!A0s;VP) z112o+$CrpG%nvC}8LH9*%-BwSFc9g}VYpCNkpYn~Cs;AS0qOwrNV*B>@DA}1W}?cx zb66qRy1-3LE&d3}3uydt@ONhM$&ECrRK`iA=_&G*gW^i+GR$pN2mGYJbFByn`n4h| zBhByDMZ{e8#(3Xgyo5!rB;rM(>Xl@_>dbEbdw{15*pEV`64))*Y6QE`O7dPP_+&v7 zfg;i`S&2P{MdPQt=y0(gjU{8}eQ4p^jB`$kq56R(6((%#5HzV2&~l>nfF&Zy2=ey9 zq)apaQD;(_+<9>L8Sn&TI&0`OU6hh3DA>+JI-Rwxv(3F~?gSG{KJQq&p7tGUuFNxl zCrJdI5G9j=qwrrV2%ykRDZ9el+{Wx+Q^>8Hfrdjro?phk2OebfQN_D9tEL?N>uWNX zbw7K*+nm`x$XVH{)85b2$dih?my&DWzY{et-6c&VIA3k3W9=GSI_zn$@rAEJr<<0d zCZMf-+NWl~qt;gyddHvi@JdBFy|zyG7Vn3p?vw1>Zz8m%w^)%4VB;-rO%8k=>WPR909e{1O2LI zfD~`$iAST}zlI%D6y!HOVH;(4X1qtS6C-u>cjBm<-d6X>?Pr|*E}V~lpO8M7&`1eT zuNe!XzPxqPPa616m#K>6>YDj;6gi83ky$6K{TgJ)-dK9DnaH+vZn18`ZwY*{LXEC4 zsbuot1FCO9os~tT*FM)(h^H-Rf(kb$WuN6QRZ9%8Cv9l1>N853H1t<(L8C7xOc+At zv_(Zv!=bYnxc*MPnIK)zb|2Rcchqz#_O7!ozt-b$=|2LqD(Pp(;)dKKnqbFDLbBH> z31%%~!chWLQH@G+3lZZJu`e%&>`@V@9DE`j!EOW{YeKGwU2-K~pJDLWXBbxSz(P!O zjk`BjEvVVjADY$i8O~1KmL^( z4@{o?BI8#dYb2a1V!1z=%2Un3-N~;~6z_^br`X=BMz30RZ{y-OT93v`p_u&ioSK9~ z{3W2xHf=v>qt)*22-d%r&1VR!l{oCl598EjWMP@081X}*mtA|;wLB`i5E(_ z#8B4EfH>PI8#KR(RNaz9t!*3#ie*kH+}oV{0}7cmJ-s}u_8AYv_P zzF5{emVltpG-`*;nILV(X;BXtjew|`6kIjctILOq&(ShlnN>{ZDVD0VfUwMKUOaWaJ-s!ViehiC2)@D} zr6LxM;?V(xgL1Z(D78$_^V?evWE7}+VEU;GSEEpU<4HlIgU_!~tOt9_HgtoYJ{2ua z%cwtGkIW$v7oD?gY}~&N zj_>%egy4hqfPMGBO}Kl%N}NS(6)QA~n7_G2m-w5Hn<^8KzYXD{$zuoupKLH@ikl2z z(9kVVX^EhR!xTTkQv^XQRYlDQCv{$(m&(353X2xV zp@3PhjVjx4)jK=QIm)VNY#gM(AV=!Ic@AJM<0NnZ?+GS_jVX1x! z8}kKrT!n+WPu`&^MW@E7=Oi&$*{mgU_(aL$Nnn|~uPEuvg}J-7yj?i7|J6(DdiSO8 z+nc2`KN_+B3rnt?Ir_a{)ZQgP%(-w?_M7T|3n7KpI)LiIcLe8^nnD_70WyCLe5hwNw24+2t4!=9oE3*#}XVvq}Gye6Q z2~?%qT#2==yolad{ARDsgpGn>815G-Q#i3XI_9xN?_te_=KhuWfb!2JiMoHX}03=7$w-^zA6Pyt$se zti1oxC%t(@6UcRjxfr~^RXs*cW-Isi-*m|5d9;R^hdkjm8z*8AorG3Wh;ba`I9sZT z*lWK0DI4O2N5^j4dlm78Jxa>sGFKHCF zrdCt!Ok>FXn>t4z-z#-*3B{48*t)SZVbUc&i>3I+IBbPzyOxnhxwAh2tA6(K@6036 zqS+#S#`X_W{}NASVQ!sM=!y0yA8uhg_^fn4s+y-CcYN+QC+dP`|3v{TRRvXs_&xVi zUD8g(#g}{^p0HkulUZcmf|<6a1m33x*3>}57VtUGt7$Ljx2EU-+hxqp7Cnr=xS1<% z_bwSMTl1 z4tYHlcW~$taAl5Vv742Rv`(1&#{JdAc}g$F0LZ$j_K+kDsJl+X2|t`2nE>-I+PQenjZLbYKM-jW zc{@L0WPeAfR3u>04-=_?Gc{Cm)NJ-lM*cRv!Z3ZH#3&q3_h(&ny|vBPt&FA!qko67S$Z5@R$(>yit+B0Zc3 zWCoh@srY63rg#cp0~w|um2nhZu_6fcOd2wyrHsg_#`74-Iwgr~6aiQp!6)7)61QWK zCrUR|9-fUN^Wx&aYorcz`q5yNC%^+%Xu0tUWQ{Fc*)$i{+m-NW7}>K+T7vI8YWwQC zaqzM@zgv;#_Ko!kA{>TM)ny~6GKC&Hl|*E$j0k@4NK1b|F>PCoFsa_fa~;oJrC}{U zIk${TPDZ;%C_%cOryEFrafitRd{K1j43*J{V zN4c!iBnG|tS|T4gP01-TeDeglv5E4YC+C1H?yj{@YOAeUcK7Yn0LYH_1GAg0(dynK zEL?4Gby^~AywJOo+7mqtJnV!qc#QZrY<%?|h($s_P!2u%+JXI@CrzEmKnm_r2&c>T zB@=|f@9wh@@&oe;eA*Wy71w&t`NK~XY`O(wGJKFYEC8Lnm4(fIUh$`5JTi8AI@@jW z|9smP0zavC{X(T=zfc(IfBLp<>tJo*R;=}GSKb1^^#$EDhuQ|Jgo7}3$Z&BHs9I!-5ftN zcyrb^_G&Jo6$8sNy_w2aG+F`FROoqzDglBmB7dXUM1Vzpzmn=QG{N1=%^o#M9mRLqU17;r#o&R!{?(}bDQ?ZKlzW}(NS2a5UM9F&273UL@m9-kYj*B{cNYnrL!R>+zq@YDsAh4r96FoL-GzkHo7f#b3n2YA(xJt{T2` zj)~j6>9#sXCR#L*(7M~Pq6#W#T#zPwgt>~UN()vA*cGZ-xU(X*%Ld%s_HO^UIpb=I zz%54s)7m9c6I1{q9oGF)xxqNRvfd|UQow(vPZ$bg^+;hne)gW+!N$Xxd-A>`cOZ0n zE#)3e4UkU#k^VTbbBzukonfo^d#oW_0jvssDFaYFAIC&?2Tr`m@$Jr}T0|J_sCRlx zbb%-e`(XiJh{s*ZPwfB|y>%N3GIjL!u^R^g^_8pAVQ$`$?^x9$GEg$@CNwf1WF}TJ%a5a?lqjw{g5$<$r*c-LGobNO^McoGUTr3jiH{U_KU% zRi_mmj7EudbAz#jLs!+YFF`SfO-2*9EXE}2_~Vm^#Y+#pIn z9{!xA%cF60BygIg2g^JKEQ}aHRNIkdBl%Y1495F4^ts}SM*K1>59-Ouln0}qkNXBs zq?0#gTa&2*qgBwZf*>omCBAF-!$EZUIm~+9oly3Yoo^VVnk?R9-?Hc31~#0Y*lZaY zw6vcXTBX`i(^lWkU?sw#JFv~ECMRmtdYxR_J-(& z!^^S|4_qk}?!}n&ksi{*L$!Nok1FDhp=^OyZg%&Ls8m&LgPnO}%b{8#BBb*vcU7D* zu1y4*S>1Kb*ulf)_T3Py9Ebv8o>;Q<%ABXo0jF+B21*Uz>X10jw#Kz-_Ji|0;=yv~ z=wSLrnW)ip&n?+6R+axEdNXFl#Gf7c527n0v~#{BFGs z_SHSkbw2^`4f_Mb0lY(bN`pj)Km2F?I>97f4TO#nDy2t?F7{)a=_BU*f2f+JbnxwV ze3i=rxNqNh{$VEl-=4cQt8Ut?v!V7pDrbHFPK^;BxjABg_)(-4Vnw<3t_g(_qD z&cXID`9>`~`iWs+DbY*wf=_)FJBM7BkC~J#Is`H>}^Pp>-UzRaRl=p7A($$Eix1NFetI!eclsNoBb09cx&40T4AHOYR09E(s@t-#Z9~pYy(=kpiI?LZ5F#a zaX-p<-I=y9pL8laV2Zx;Yb1eHdYAlxp;gobwQbrniy}c6Bk2`RBjkPM0qw|Q*_Q8K zl2K0>7L8-6>miER2W8se9OUcV7ZeNGB^PWyFBCc(hO$)`&Ct#b?WTeTX%zFKWt-K-H34=9Dbb`6qV@`0` zE#Vptm!P*MxRzM6!r`(f0zLX;6X00wLTEm#n>~r68g|#d1+1x>;j^#8%{~|}wgeTz zp-^C6amf%2Ucj%b6SP3?6N3EgAU-aTeHt;0^$V4$?XwybPb zuN~m44JQ2z_AY+f)FlbNc?#ZW;bWUN@Hw}B%eN+(`!vwyc5zyp{B4rKBwJYBd{^v< z2rcY10`nItfkpj_B(xMrsmQ7$X3kvlqf_KK%wU+!(}|-?x8H8qL>1MNbNG{}#VG}> z$CLREEo9k(m3C}&;SIczhXBS_;u(i*A(YY=DP*qvEwv`qhb_0^<97EMjbrHNdse_TNk34NF@Y?N?69Xx=0aES9qDhbHT#P z?JF6xk6SBhx!Cgp;o3hV%m1o6^xmyQY~F`jC6GQd`V;ZMoa80I_|JrBAeMkIAo*Zg zCzX$n>ZwN?Ng+H_&F*B@7YDVMTaGvRS8neYbk5>dIB4%QO@0_!S*bQleP^ErPH4L6 zcYu*`T8JAt1I{Dd&F?(TP?>J4$!rWaA3HPGUqjdDs15G|+*cSOi{XMIfJV?bC*Yz` zz0B2rBmyVG*yT~CRgc34;%E10;ML3uzaj7Q$eecx7;-N3XEf6m*W~NVIox80nnToB zV+*4o`@y4-aEa1pG0%#Qx{qiwggy3_Cs9-pQb)boJbVw=j>n`~`Z(@b#J3jJPWTNr zM*N{K?3OJ_Hz)PEdaZLbwZGZ~P9+OF$0Okt!43d6(819<1e`X+*0D82{d)c0Z^k*+ z=64r|F5&ukPRg)CNNd2d8Own>r_4R{IOa0`S$KtRAJTNTDz8T`O=_=oxmYzixqbn- z+YI}$)EB53M~@%OilaKmjjNyQnImj2fMZc`HW@WL&l$XuC3ptv4y#_ZBuPA6_bMZIN^0RF1kLdu7yXxgvzC^h>o!kFF7cSS?9?HL>a0T|C zKal*dNc`{PT(auA4TL#X?EgwzQ=TGig@5ZX9 zPOlg7vx0h;bI*zkldHQ5*diI>?wVD%Hr8tAK$x`*%eA|zYpY6kj4NK=E&jKc*TA$0 zOyN?Hi=icg-y5_h|zDujwn0UZYi8Bs!yz-EE8Gh~W3SMK*noD&?33&jP#jRFjWZK;DLewSn znigei6g7*sty3-$?PU~i@W49JtdOq?%`q$01*SJ)2%^{dF@!uUz9f=LPfuK*hV`d|}R-YDveCJpj zYJ4tm6GR$2v`~@r@2-k5B%25E5{k|{I^>#oSwVqUyr3wJaE6x8X7tAYgIA#lUzDZn z`9eKe@D@V(K=5RaVg_Xm5iU4OR)=Cm$fCJR0oOAKH+(cv=+{Vo2QjI zo_b)agKnLtxMU#|{R4QUa{A4=A@*dIXxQ+lPR|mH>HM7PJxM7#m3QM19j6_-;SaE7 z^JwlmIU%`wVDgcn zIbMD62@F5tD3DhCRwF9!E&KOcy!|%RcwRf*%dR2Q=XKaJ;Qepyct6dacd5{3HpB&T zvyA^_*_EeCB|m-6Uk-vOJ0wx9D@!nv40Al#U-iyK$$g8*ljk1uDQ-XF%bD~WoYs8q zbi9ZX?X0w@^7bhB*z;_D;JCZECTc%9V#ET1!(L;;tR@qnn^-p)A-wvyGtS5uiuwQG zlgrL})K>E0rxb`yOOyOHn?~3tG^^sQkGTkQ==V#`w#Ek7GqOf`z6!%~V5+Uw?PG#d zV%N1<8Qc&qf|s)uz3b=dt3@>;kBF91N`I3WJru7mO2eegV>G}2j5=S$RtHA1;6c+Q zCj;tY)a#Rq_yCpi+M$Kx8#_IXo*Q#?7Z(z5wn(q0TDs3YW5OLl!|D;6Rr}Xgr7rF) z>IYe%I2X>^=5;MKSYrndB0KJ_-m{bogjI5$zb~p2LytT8>MT;?Fey=Y*UV9Q^w{Ee zpH+zUO#WXtpZ|Hq(JEZCCI8j7<9{iN{!^6ef8|3p2Ln4hfWyD-J(j<+;g?Q@_pI8K zFezJE(H<*Zv9_inC6pkUZXER}cP6XzdGduUcK#c;QSD<&(f1|dKE!aq?4POh{pQ$Q z4EOI;4&!j-K&<}FW-TY2Hle5*A!v9QpmXr2?5zWu9>0(OQtc1{Il|PE}OeAA~e1L712c zCCy}WW>Yyc=WoFxVwSM}lRK{NH>c-=N6ZA&`c9mVb;jsQyRaE42+Ha(sf!4^tsN}5 zREpTw_y`aY)ALHuvb=iR3J&2RP?Xl4FVJ*cqa`Q|Ny3Toql&XTJbp#hF2H(HCM~w= zG-bRxmMY4*Z#TAdb|v}|0z}Go*w;X!_&7EFGSK3^91!wgt!3@pO(p_!5C*?g;7L1$ zzXJ?wWm=dZRV?Z+?GjbzIj)J|iSc1U6H0-+a-oCFJPflaiJvc|Bo>qK5S5ZnkdzZt ztd;)i>r6%~Fd-0};|40}KD8eMNLZxy7>8jow*~exl&7&$!H58HUPOMljs?oGw5B1; z&eqGR!s)p|F9(##Y6|BW#XH?mE;)@8hlG9D@Yc2f*Qm8XIfk9I;N-u4H&$|^r(-AxqzFQE9vy#K7&x<*#{Qwf6GN2C z*n2(ZVf2E5I7V%4IlNPt)MdhSSo9TTn=0emu`W4Kd)D%#r76up!7YU$mpu`o8GamgfpF zQrh|i=T;i2;Nm?Iy?A=Re35)tM#?ut|JYQyqZ4Xo26RyfmY|}i4m=yKgkwRc?MNh+ zOVDL`B@{>;LE(^U5tEVaYjz7P2W z{un|*FUbRMFpsvL$!0?M%LVX_>h>zmn_!M#MMdSmwbaq7+qP>GNIplkX~Giz6X4C>jzS3Z zM5%Wu0ey-D9%!0C(5;bk%}z_Gire1p^EFK6HRU(I>D%dA+a4^(8`BhHBog`bk(PQ* zJMPv_IN49(qptbmZp%LIFcbrQDkZQEQyDD<={o3vzy#`FG+g_$R>3+T++LZkJBx&-ePYUr zxf=0>oV#$Lu9P2DB}IzPx)bORGZ&VkO2n<(AYc0UNlqIK-FWaJ)WHDynckjwxh7rw zn=l^RQRZildQ!drZh!*?7lo#M1mQu22#XJkAH4-49Ggs_a*#Hs?Ip*ep)gV2pL9HB zgCpAjjQ3|q*QIBatE(E)48)c#9DLkGBm+SmPHtx+)ad&G*6@kN6-PBEy#4LAngqZ6 zLY<-F$v`)$L8fOf!F>^B^6pc8zFMv=zHv5=XcU3UW8YpC8O#)Hb;@KR%XkKK7H{tf z?$H=T4ZHt~vv+Kcgzef!C$??dwryu(+qRR5ZQGjIwryi#I}^Tr@2dUodakT?aXj-HGs2`8OjI(-qErQ?g z(0z9ixiq_0t&!wg>oO95yvht`R%*8e&%in zJTAS~S#x}7;ux8HFXU(Q4$DX>usg{9_nc8dM$$V0xv_<1XPlYvqm5bfk5_K=6VuzL zUtZ`-6~0ktwy1J;5`)$l*A&A#R8os(yAqEWM4+jr#Zuo|*X{Cb)-g5iXOYBzIZQDR zV4S>&Is=vwyV$?}5t!@$h*nq$019pZPze2(Yqyl0v!%I(i-LpmzoNx|%B;l^eOG_V z0ud#{rZpt|phKNRN3M#{>VzW3@U?(3ZpTf~PU^hWtELS7=4+HuE-WvlBoH;cc0QiE zJ*b?ZkxamlJskVbO|Eqldiv7m!;3LJ8+H%$+R4y>4jR$nDL5-Sz4#sQ5O zjO51l0td#gnrEtgI4Pz`Npu z(M_=Cc6A(()&a~)pZ$LJKh3XG^=|sL??8OtbI7y?&4Yb+2x!vwVwDZCE}WogbLewU zlK8}1yUt`#G^1A*bF7O-KS}((NbUBr!5p5?e@MU#(W*B6gop7V1)j+_`*iW@_ITLr z>~TIw3{kJW(V?MP3ROq6RA$j=9B`ps`Bg}Vr=?Wrr00*GhiA#5rD3&aXYS%>;JTcS zM2HN+?JXlUT5L>J+&Y=#qY=Tdb{gyjtH8rjAF32J8ijF-*Fw@=CQ4OWBspIfO;zZ) zIxP?gLwH8&n*?8U8e6Nza~*dhut4UV0a-lv8V6GrlD@AXAI46)#R2I85r@H7sIrZI z&$|{EpW3TT+_&50s`!8=x-{v+96`8~KpILZpJB>W(-k3>L%mXse1`CKAgkZ)g@qTA z@#ViuFk86#{$@cHfwOqltNfN9xG3V7Z>FHmQctnPQdef-v6_T`UsJ|wq^ZB#U`=r? zYkDfcx2xY`zJxHe^3uf8IHTs92_t1LwPrn>*Xx+x%DRy$_J(o+>j4hdV_<3^zHZBvG-sCUCF4?_PRFBo*6;K4q)dgs5LPbs&s)PM&)tc2qkBDyT zX9T~tx1ay9pywKddxA##?5=rBX-uT<_hHg;`5J`K_qST zA%Qx{kdL()E%{D$U;_|jY8C1xht@3vAwj+$=?Z%}3mE}vR?Wz=)SRE0#aAyd!KSIj zuZ1ywH7=5=oeiM1=QZe61HegG$w5V|s_MtmKc}F{;tJ>!60X$u$g?}Ox-$KBW_&9H z=Fz7HLb1j|>?vK*S=J!6Jq#Drt74N5;^dW8F;?^DT@zoC2pR>M z{&{%bftpOQ{j3PjTr8b3$4hcx*4`Dw0Jeb1iio1Dc}t$GV{a`$&-lxU>_{{pU=xPR z7sisg`8lJZ7WjPxA+pzpC}6mR)i{MC3XjY*SS{B&X$4cm4$cp0OnI}#VhuU`0gzD4 z5EB4DCJJ6OYF#moUH`@|i6j2GY{G4_RYEGeQ1ypsa2oDsBDdpKY*A`zA86AE5tCIO-vv7NVh6@tU4jc zMFAuD41^Qr8xPjy6yKY;U)1+q;ihXY*CuT@etY+_yE_qS4TT{CTJQJp@s_S>2VHr_ zuuKQ9OjUxKaVgv8fFwzof75t%Z_o?yqD4+BLfw2eVRSv$r^41pjMDgPFZ_+~<3IfE z1ViEksQ_9T81cVP-2?oc&22pY?Qw4gs0EAupEi*C={AraBKeyF2A%AvB+dw)o*@(- zmaA7@d@Pf_AfyygxKUiP==yok@EG3FbTJ3^y_E7R&x1s;h~^a6H;B# zhZ^bAvs3tx?gUDRa&!)fq8PQ@Y>k&z+|`9c{%Zg07+#8+=dRR)-KdK8PSsD4lOk&v zWt;YthMaH;aLyhjr=E@kw-ZLu|8bP<2$UFD-$}NgZNe;SG5W#KQL4abC_`ikTUMdT ziD6bS3CNpPJAF5SGfwo#NOq9EJ>z9l(2c8c7q#bv!`$ry+t-t9LnsT>Jij0nJI`%a5xxeGRH?FmJZS>d~%1mmF7xXQsMQYMMAc_p-?#u{M8nD zsL$_aoWvDs?rWurxuqL(6Xw1+Y~tb0f=#(iDaAsylhk{vz+j*9${dxas3BwhvHS!? zAAzAi4NP;hYda^B=Pwho&E}v>0MJ}_%{DIsPc?lQQ@esFe=CAk?hsOr zmV@i$smpY1Jt}}9;n+K$TFBrNL60x#y%!rW%L*o&0m?VN?np=~tO7MB4y1}>VP(wJ@U4^|i zwP@911!ScR1tgSwMKIUKN)yvyh%#%nm)27czSD9~J$D|o!mjqPt@d>5A&ZEheVR=S z(#)%9haDOYNND3U566dZ+%-}u^`q>usu?d68AIK$+N>(IK1Pq%i~Rac>a2P-y=gYu zr_xz0NVgKIpr9$$)Ky23xYh^C-u4lN{VG#f%(4EyCY!5XEa1oKgZWvmhX20mqB&(&CPM} zZhvA{>X)(RxB0Ee+)0gwI<+>Qcsd)sacn5(84z3$@6_kv=Pq~|u*it6??LKJF?YN) zsKQPDIYsOrr+B4pkha#ocWIH5r}0YA}S2asPO)5d=VZ@-1 z^`%V!P5+16$?KG$bpX{AYd|$ZF^}sl`~JpB3z`pcL?cH70^#p4eJop7j+$$Y5@E?Z zP80d!6|%wK`J(s=ciIbJh48_-Uw%A)$u*3ot^3ffn(1CY$tP=Om-wwd{dhZi+p#_! zd9QZc3|xy`u@50~Y`IcZENhSbJe{%i5g>}HB8=wZ92o^0(ugnFs!XW>!Kzp4?ybaAc z$ZsPeC`AzkBUedkItp{Y>t3u!N3qE*3uJV@4XO_hE%(t0C~g9ud{F( z%nCT4HRmxD+F_vQvS@a)@LGK}@yitTnoK70&`L@x0%F71aYi}|1wT)^Uuodi$bDel zgT2z_&dhjP6s1y?N*-TMHq%^4H421J9i<8gOv+YKO-a!xKv&)BgkalhhK(!fq#0HE z)jH=hO*@c|+^hCNNi}HiI-ODvzy7^95qSWnKun;$+@r_dLeJMq44Lo6WU7Q{KsB_9 zo_=aC%$hNPM%VYdhfOqxsSn~L&7<_|U9w&oxYArUS(Dbz;z=fU$PR7@yn>dKXhPH; zhG6qgB`PXvAnpRW0nX~NmMyH$@rYuq^C-B8-9s2C&G&^3=6o}_RuEz}{e0`L0+_V9 zSfv`8ZR}N<^H4dm5!wd2$4tgexDM^fDLTWrX&n0wLt{GF)w^R@~3vrHI*9 zl~}M^rT8|hRluz0clUrGa?%!U9Oylh(jaJS;g;WI63=Alg`T0vsyCAQTQNo69~1A| zk|R@l;=6^7d!wGaY8sM00>5)cc>(oO)9LK;UU`S%HBaNB+Y30Z25Xkk=GNmAThGvW z&%H@0(h`%BTiRHZ@vO6blm(1*dI4h`8N8L%42RjL{SDaGM*=QJU#2!Fv ze)>KTnl8*Wzd73042!h-*e%@S?0cCZ@mW(cYC_o&^}->SM z(9-7LumnJf%Wn$)hXj%(D_#p1eAfalPHt%ms-*UXQEILqeQuelZSI7R3GlzU9CkY( z?Y;!5A9dz2r=NT+q^6c+qRJSM#2H3;*si8tGXH(B*uVG3;RisYxQETGM?7agoD7r^ zNQG!u5??YUmHJ`Ag`d>09G8g6FO}ldmh3r`5zqML$cr$G5@YJcJNl6SsYiW6TQ!M{ ztXYFP3j-ostauOltF(?d$*LbV?Etb88EZThmmqt4dbIV1f494_RwuU9031I(G+A5l zVZ#6#VGH%~*ZpdPI+Sw$(vdeaCS;4C9HJKQ%PMM@s2J!{M^cYF7pCg=qJ)q?Gc(_I zk*6)X>H9IHYdQlRFtIMmZ_qrXd$2ziw1qW4qUKm4aN!7k`OH3-p0feMtXA_`-4I#oAXfB#pIiUw7StR0 zGpRBry;bFD$D`+AjAX!gVnygJ`7XFW0YpEfA&o*+tMx*Zg1gq)*%WqYtNcm(;h>RE zVAMo);R^M25p)6DGKUij{e2tKvBk!7^uc_49*cg(%%M`6N>}cv7Q3~tqeNi9-%xnx zu=ocuXbE~~6jq#Is4LW#A9>igpk!mhMpXF^Y-wlE(IH$x*V(KqJ-;_boP@fgQ&V)6 zw;_&wlZ;!Dp2^U_r#fHIiXvHo*s*)?Xe)pB4;^o@_a1hKT|v6V_Mf4r`KQ-kNg@=7 zWr4Jq_qe%(vg zZD)o>COm6@Hg*)!Sby3EZxE57pD3sDA&Z2JRmkek>>UjB$KnAE-Z|(8`v@M6G7U#B zn{uq3w+T2CjXZz8A^18Tb^oquTz$v24McwI9U4)?Yrgv8eTDmB$QZqr6?yd&>?`Ks zM5Nn$@9r9@rEsS*0|V2HN6%j~05|k30pNyMsKdoZk4>pG(|`lUQJte*H=_DH5s z>66PuNyS-aL5m? z6X9SkXaKD!YV@FrDOare6zJj6LJkwfLK^ML++?XVSVH8O{oQcp+WyyGPE0*HF*!5@ zMRMW4=$H_lB`h+u(FapEL3<580NfBWXrymfx4KMXGFGwTo##jNUXZ1%pq-xE?}UI& z7w<+o{q+qe$HC}+)YoiJEsj$WXCi3*fKu?&!AIxg7D5+n2|EUv zi6-Na1CtHUq`6ca;8h~*r^3cC2XaTjj1g=9MRtw7Pg{b*MTe;*O&qU)gO&#iD~|;J z8DyIt0CcIgeiK)=*l8K!A>B96tWON~5oxD!YWVE>9I$q=@cizY-`!cxi-nHnjG!-c zt1Xsy2t`aa2sI}=7ly!zhpu)v0b-~j^87@}2Ulr|n5#}c`;GE4*Dcqy5j3=Z%bC!# zN76l`Ldxq`Nb8IRzoD-RZ)pdpoeLdZ3+2SG6Bq+3Lq<)0S9cm@-q4ZxiD|cKKjQaC zT+aM8^Zcwps$iyHrs|Rpk9{i6nVw11jseZr?!4^0MOxUdOLe24*m!jlGJM4ZLLyTs zdm0=d*!J+rk10wnqu*&6)|?k?I%TwGIintZ8xR^n1vR_S71F5+e z{grr0=v($1mPcgJ283rLcsX+49A(F@HVCgLRk|^Dh?6^L(yA_{m|Ye}7MET0yo2PH z`Sj%*U%@=7a}#o-*FCOt)K&);;!0n7Bg|Eb7N+ZK%PLk#Zh^J+JwhD=hB2^JVsWuE z*birgSPP{%)g-g+<5-Kf?GJl-Yum0E1@)kmU=k$#ZEieXgY!qvj#ha%EBd0`K zXAU_8v`wBf{FjOPRp*Wii-s$|L79pjtX|Nz-mGa7PS3bA7heDLotd(t&GluEw;7R{ z?`0DoU#_UWc@0`;`h($KuEowhYmyw>E|?8QOm-d?s|~_-F`?B>bY1iw+2c|^CLXEo zqez2x{hlwB6&Q!WI{|(T`ZwR_A<8dPN7ex+Oy1UiGEXB5J2>nBU(Gt;EA?M8PjZ&d z&VWE`F%K7000(7nC+1;n>fi$S@jnzMVhQ~K`xGEr+7p_f70UG>C?3;zLlrdKG4PNy zncNOpGKpI1jC`o`(8M^~XubE--woZp`&y{5j(3l=)IiirAq@ZU>gX}F{%>?Y>`qg} z9CnnT{j3P^uJ8h+_D$DQq|-qXO|@k96AIHW3WDOm=ARP|Cx&-QY-Jv3^AnZ*M^e5w zB3LW%D?zuPM3^Ng4ix>^f%J(r*1o46%saY*_6aK2lY1I(xda?flh!#BXd}g*K?xG^ zwNL;!;0{Vm>1oB{F}jh@R>HqAE$jy zLr`rBAsJO6P`HoveEL-^OxR`eRkg42tWxaUh&Xs4E10MR21J?2I{G!LqcJrhH>tm3 z{m8}F@JE;Y#lLxnwZ+$RR4%hV>;7RkeoYmL`~w*J?f@^we=Gixv$r$17Zv`ux$hT1 zO7Q=-2?I;g+n8_50Cheu44q{bYy;a2g(0vi{j4J+R=FGA?;3@gJy;ClMGvba9&rBXTYaH0pdD!ddJqRd2ABh0 z46d3Iea%=FX18ZY?oj=d8BU!_-V<4BkCz)-s96kfF?JaTv}ys$t6*DdB0{yJqGM0P zz;Rem1tn~08V+guj3a6JeAF=u+fm1xPyTHk-S6koW|$+UjUdf677#3VFtU_k*ykG&=;PCU_eUJ=Tc&z*p(T~H3LJX(Kx`R(4W<}duywkcW9S4sQua7Alg zMzQ?qS0_!s(uUjg$*btq>Du3BgdS-b!;LZ=DFGbdmqgRCd3ui(A7iRupsD~iPD0~U zvZb!ja)!`4VE#HfHdlOfpc&jUnfRr>PW~-UBU7nr4{Bm%N!z@)H*Wfz%0r8bFZ1z_ z4;{e9CXB@cxOKq5|el#{AOqL8bngWJymN4=@z}4wmBrdNpELu*zU$ayp ztB8jx>QgnXU>$EnH?rOSz5KUe3bso@a*DRORjUM0?&VpB=}VwAEtowx9D64Jo`RUp zU8v(=u7b>Mmhft&Pxm&%W~u=9W!!5^a-Ex$#hif0H4wh^u4S z-<(?az#q^HBjcooh}>A{WmE7JlMN(YSfY*Leh|hUs{Bw16WO!g*!P*~td9_F{Sj_L zGIytK)=#bO5NcCRW^oRsOeHFwykR*9>rlfE#_`IyFOK=4fx|9hm-#KdGSMQby+v}I z2@R)tX=hg@u(~<08yuqXb40lEQ8S*rjFth-<$8dRs}fvAPVFs_%A1?T;OJ;MxofPR zV-7OU`}PYAJxnp7bqfE>OB9hQ7l1L*AhYo<9R)nlQG4M+F)a%VttPK>iickKpZ`!* z>$%&J90Pa=Ym^^9ME*;-mj|4p+)V$oL;iaQQ1j1CCjgoNqy{!DR+6TqT%J}EvAATB zDrLqLc&oMq2hkA3L+p+kyn_C0(!BKpkJ|7MfZcsvhUz(!ScpK-S0I7WvE!5Yjjbu*@MhX`=3?xTZDYvRa zDmu)ICo)3W-)t-Ee!TN{^XRN|SD~5GxF|9_2rmI~WTQZ>)&jCqL#!?MStd6sps;Xm z&6^don6v;{xBR1>U*sqn8di}0V%gb6kfFocK3X?2^5TKBWH}2e=k6L$tGfgPln$jt zLl9^oJ$J7`KzMdh@EtrdxcIbnr^rhsl}RgJM+~#flyr_NcmFGKk**9n_wd~-!Rg6! zV)%H7&sS*3{Ph>45L&Lxt!+a7CNbPuDs!$-nU(lA|A2&H|xS|VvijPz5qb8#vJ#U=#_G9!4s+Lffd?%K*yQLh}=AZ$!KG2>bmWzc~g+iF!T>yk`nEzKDVo?aueb9*nm{9|T3~;?2s@ z)9dNQ9gK7aA5`nnGGs{yfi5;aRNjo?`gn9Pk)>*z!u;jSsMe@Ch*@M|V``*d4P3-C z@dp%zAA-O$bt@J+)e5i9GmFP$kvk~c(+qPU4a=)yrRN2FJG(z_0SALVt|OBN-!)Q+ zpyx*L#S~M$ICRC``j0kdYg!stOP(kTe+?=Al+#sN3R5N#@p?xJB(1J=o#U&TPL1^C z<ycZDKe)J0mD@2H#z6S*ReeJse!rfnVtRH3yZ?ScLvdK&q zkLxH!S+v#ZiwxMrj2PxZZFO|qoa{p9U>x-#8@P}pyCL)}k>XuPL0h7_HB z(pi-jDH-W?Zq@~Rrp+`P1@CpMON$ln9&-UF3U!qJ;2g)4FX2xmS~+j~^@t?fe~sEp z52K~2(zK1oG-uzndTS58Q%@x%wY+tyj>J!w)vZs%vqMns$)b4s>L^9$RWwcqDR^^m zHGK9*;Un%g-LptuM;8Oze1HA1V%0bvN2aWvm0NDo2d1m#`rhSfJ;;f5l#So?qx28D z6kKObO$QejRnNu;_k#JWr9?>w>+_P^m5_AN9Gxuh?T9Y91F33G(e+G+Ddmpau8(hq zR1rQCuH;WD+~>-6_p`!j>#K&Gei-wekBv!zq@)o8Zw)WFbu3=N20Zf@M;&J`n?79x z@0RE3$7?^+eo(zdw($(=H;G|3l~)j&!b;@D+nHMW8C&m!#b93{_QO@LFl3F}q~<(j$IG_Mx8+wyPZ?4|{oA6$j($Mr<<_vy;Lf$Z)?l z6tqIVxousI2Mf6)d~zWD?pgc#w%{QM8|-L+ANlKd%ke)?8Su)WpT7WYaw3@jeGZPi zsk^eN&A+o7+Zx;dNip+3`Moyd0c^r3t1l&aKz>bXd*ETy$`BidT6iH7$$!M1Yf`VzG(H6LBC81nh3$D)I$M>448$@ooY2H@121=XZ``6H>^t1 zB0VY{#IH;iE8dwADNKPmpo$h&6)_^B2jg*{qe2*{cWhX=PIO@M_h5#%e~~9H zy!l5;(U%%EjZN+_6DV`HiV+f)ffQstq(`BWEpwXHcy#>ukA-v=9c`$d79RqEEaTF#H>rx`rKXbG!ydlkuNMFIv))^H6MTK)4Jm)UREq}0eDL?++zr!cdw6dl{epROolJz6QQ&F#Rdv)1<>ma`d2Wyh|9BNBO zkT#rHMFgw>Oz%Eg7i}cwxe`&9tTBpmYRA^9u4I{w*zkAl!+;=OMCQSJuOhYyB&dUk z>ig3{I6K4Q@h!9{mfEme`GL&f5fj9##PE>kNH6?VXX1gNFu^i9VP%CGfky~JsuW9E z?ZE~T>Wau>rov^j5PSEn;lC89EQU5h_kbSN7t6zG5VaW7EAUg5`AC zg;VK>;{LvbSe4G2#e~5Acu{5JC#_1Yt%O*Q=4Ehua*4DQxu#|8mM@?l@j@O1y?5fm z&(qWK>A^(()^3b7Tek^q_6pjYczsp~D;XdoC2Tz3LbH!In=#rZFFB4*GCO;7(4RBL zL_9fkT+iEz32be;X)xg{-gf_($VwMTS}3hVTB)fi>lNQ&?Pw1R_i;wFJ71$oY!&C; znWU+w8T@3bE{3EVW#?|w^%CIP40(QSg@8ry{&XTdV@gQ0?#qP93!w`vQ^jSg%Z;Wjv*xJI(8e{s>NOmA z2rd6ox*uS?u;q~h)|m7WaNY996Q{QFn{PTbG(K}A(e}|~jXy(glSy0Idz%g_LzyR} z^zsp@Q43u&alkhy0WX&?n2%LsvDr|nuRg%Pop=qg_?+mLF@t=;fQR!)TB=zst|n`w zvDcert?b$|!4jhmC>HG`A{8HZ!!66k;#clQO=nsgzC7t6ZMXpe30{uG?kk?GUVj1~ z1t+_!tEKi}Hy4?*u%HZ>O_EY`b-ZCrU9TU5_B}<;bLY_9;uiafp2=({=hXn?iv#5L zN7yQB`Kjl8rP-o}?eI_%Ep{@=j;g*|wILp0-66ZY zyouoyYbveidF}6s9%Bn`cSFr)HcSN%?(Z>`;RmLuP+L4eQLLevISfmPiZJFU(jF_# zPmMD%eip&86WXX43|2w#Bne}l@HV8zCPRp; z4kN7+g%`+f_F_;|*zHa2_M&+O(X=`HelBescNWw`$Tp#GpI@e4Y{PQYUf7L!t>NCn zXiM$sVRvbX6B2U|11^Q1c#6nB8#52d%4vchI480BP2oQ});WsNV6J7f&L+=_SG9$= zMp6bh=V7*9l_9~|!nYvZ03knf4Yjur>tQ+d=r&;jxn1I#9DDxdXgVXRZEnfcg z#qslD^2lpy=e8bDl-$Wb(m{SFTU3kyu4E2?JIsGeyvf_!|7%Ndjxt{yz5nQ zL3C8SNr#hoZ!T~Tx(yl1^J=}h|4zgBUD##9-~5txQz-yvbC%_S|IhY?1qtSo9#gHd zS=qyjPh`4Yw}!s^w%cMqIDWMZBX=C3w`z8v_!#;=3)np?RH=U@ls8rF6HRw$+|Wor zP9}L7aR0RgV1)D)wtoY%KR$mMvR%{Yf{?o#vTMLnW!%ddi4S3q9)d{0`$ZFupJEUP zA6Ij;7}nbQqHljuUdp7MvR{sj`4bL~tSGQ(Qe98fzi3DJ2`tMnz?-a*)Lbr8u4nHKX8@$;vN^EHPmq3UEg1(uk(5obU87h~_>aX2J8YAN06=y7c z3}bp+Lg)Sq@Z8StvYwC+gr=f<%Y8og-hU`}bEK?;Q~(xwuKz`fjJ)f=Gds;Hx^c)% zsJ?mnjs)zQgur)b7@|5K(1~(O6sz$I?Xp!lZVPUG;{*OLEh=jPj>bkd%o<yA7M zQ`3{us_`U0r;J8DY1;MwmI`zD?f52`4(fsPz0wv3$EX72y6H~_?0aAX5=Al0U^#aL z)qOx=}wgS3m)q7ta`KG(ZS&c9MY%eN2Df*?Z%9o$ZA*22sKwN;g>B+W}DVGU8qy?(oZ zpmU7_Er6I~i&o3Whu?7THJgISC_T!XWE$A%%L@O?{{*d}pOyB2e zg&{nJUX#KVN{>G|p$7do)BaMsRyumEfb89IOeKRpZ_W=2mdioD@#MGoT zWXs%eZi5Qxc&wr{-DC$S+9RRqX4W1VktcJUUkV_65t>~K7oI#{&&?Rm8c9Q4u%^#((`pW> zk2SvK!f)PUTtAfyL+WNhn$Md3FbW`Pj1$pH*YxJ_m8vq&wr>2jFXkm&;fINGtz%Q$1Au23MB!Vmj8BPp8olNRZ1X{ z>+rZ`SaS@PdYjzZEv#4zCc}H!RAh^(>YAvO)Uil^dT+RtlmE05Q!*O-jc5FGcm2xy zQaYGKJ7GaPC~C1j9uq6#Y>%EX75Cg}uU*rfgMKwehDltSjh0cXH z1~$S)Rtk55HEi9b@KH8hql9k)nX2vuak9M|;57Afc(UxPtd1i`4m~C=bDTneh9((h zjgt#OdCjX54nqzdS=sGYr$J-MID}gE?)d;ej9B`SKX$P#!yCYn<$bckK;qinA$eyF z?20b%KBP>5B}OfW-bXVV5g5FW+jqnoXCfUWToDtl;!$aeUtuyOSvE}DXIf3|*d-!^ zB<^&{)QbCyxI_>c7c^ZE4u`AQk!6v3=!i3CK$=h%^X^&$bDo4y6h^Iyjq?Y_z0y=b z{R8Xq=ol_yLxM8Na40#k{8~QJ4^2}g+{mE`5p|7LFv&S8ZIhb!5dGeGpZJRL_eagM z?23VUXC7ot^8Q+~?_!@NyxtWa7ezb2&$pCs#BL+dI7%^GPAhI(N};JWK}!<991YdN z8&QFZ4BEe^kMEy$6)6_>abG5Sx9~TfGtrLGo@lA184K(a${YT20@|JxY`LvdW>lfe zSqn%{0ezB7U5|e{K32UC@vi3Qx=;4@9@eLqhnIi5xWH=j-ERhGWnJLx_^>qm1_bKy z%|!B6vU)|SPXLWJloc`};eLsbSnQyUp>ThMy7o;jp22QCi?H#u{0-drp{kw@MkQW) zm^}l0%OHICVq9u9LaLI1L@dd>r)JfZt2GpV)0YNOVEL4N)gV}U2w`Y4Or&gehCkrU zsfAM8a8fiD@HCfuA2)h4xVN1H_T*}Rb$M|9;WatG{6uFpojM4vh9gfi!k*pT+a9pf zI7v5Zo)(<7X=^0_Z|8@n)BWA)$X_YsbkCFT!R&|@65I@}LN8JtL&JnWCWX}=!#woV zRLxnU{Co4BF^b^GgA+S;VjE2u*qlJs#^D+jPi$&Mq|dpB_=M8_gLd%~2oH9h;V~#L zOCy_7Xk7}kP}*gEmRN9E5JdV)x1$#U?L3`cc(HTHDiLU#NCmk#9G39u8HzJ6bKiTsP;`B9X8CJf;jr9m? zgHgUPKz?v?}0G8hFLEvC9Ayc;e-VwQOb zTqYfS9GLBU?oZzMAXWCtW~YE8j#it^JQz67D_w&p^+4C*82O-5CaqRHEq3QS7wj@c zff3D`2$QpXz z!aUQC6U}*khS)~0g&&P}QfW_Ld}?70SbdkwZf^T_N-bqP3J)s9c!6B1t(=~omaF$Y z?S};fCr*#uW$RebOZT8K+X4M}Zvhw1n?adUG5uO69|?C99<@{=ujxH%?!chOvP1vl zYH<1oRCgfN+?{Y$+7V=lS?04)Wmoff@2|u-&4TzIgZIXEwz4)ZjY?<#lZ=O+JqQB> zokQ0f`~{%9X}&6ASEOGPM_Ti6vGm77b4IV7D7JL+uznQ zzMe_O0EhpP#g4uG)fz*Y)rKgLO?Bgw{@pxii_m0)$hY=Tp7uX8Jl)a}G&cb$FSJzu zz10a&P$Ob*=WPFfBRu~H_1vtb{d1EW-S6aQxjCoY0@_qbPKLbJDcFJvx1vUf8$NW@ z(OP8Dfh2#btfcnW`z77DI}eoe%AW$b=atqQ4xZn;qKo0LOEBB%ZY7Z!Wp+!%g--sh zFIL9J@9W^6;`C**iBK?9f!`z?>Y}pYnaWPoZIEI=R=c!0^5GFld{-|L6o{X(JQ;!l z+I8YrcXR4Lztk7z+(#b!l>HIw!LvvWC3%tPjL>D#9NQIykCo^H>GHxoj;YB#@nV$GA{wE3kO1;LF*pXkd9Ch6to_?|>bJ zMfRu{h|%}_r}ZK3WC-}vY}79h8T$~;SxmUJn*D=M9e%PeI}%Ef8hQzXbj||aWO|)*H z*HQV!vzH>j@@uqT_?@8?cyKy+e1V|NI)=QWJ@uH`fG>BT>O*hGT~%eBHU#%fN6!4M ziHAqTuRjNu$%0Lz%t~2w9i>;b%Eq(wsL|3 zR{NKIqNa(Fs_3Rqg1i)^<*Lg41{%fL11vH4-qFKtN6QFoXIfW$+V=is&Z0)OZXQH zfp&Og7Osf{74IJX((K~_8-^9(&1B@d!ao2uo-%SBk5ZIfEQE=Hh`!er@%>EkI#%S| z+P{*s!1r-gBRn2=GI5s>`C5@xBoD*_ubekbd}K>eFR1I0b1(iK`$3zc`CjcrE7)3d zTmoEdELbQ0)Efqv4aC4E*b$fFq_F6C0q#%lnJ~UHqI6&aY#3g&6i3}{Tms&}yUmO% zzLd2l92bxnbSmb#b1A;IeNc`y;|o3;x*iC1k!=7ApIT2?kI!{wMd<$A3|r(KQ-2mC zr63OYg`r%u(H&k#rtMfFWq}k4EH_Qt)v|~5@zz3zA-ARou8u~K*Cxv#kOPLZU|5J6 zd1sBj>lJM>D5UBY6@`OI+0VJ3-sWQk41rd1=U)T8_1Ifyw7`aKI6*wq5xADnd{EFU zP+3fBBY`4R;l!!YlFuMGkcbyXO+VfRpJQ921-WcM`?o9e6}|h1mJM;q3N(x8QlqJE&gY`Jw>P5z?sr z*sA2?aS}>_so~>U`U5K()1O?`s+2H>s*FEVc=y*hs?kQ4@Qra2>-f7^YsN&`g)8N+ z&|vm!43qmLEYL?JF$Vmg4&(HG(i`1(FL zaO9p`deI%f0Rz^*V7e+qQ==_{t%=fSl1%& z(a(h1O1Xl2dZmH6i~S$zD%nW4xOcioM#-lO8UbOGBPkA+kHR)^ZY#BS>+C!u2546?%e&+(2n|U`wGHGn@>6S20f&v$-+l=>Y0t_e3H1 zd#$t}rV)iZLJM%7nc<<)u}>X-V#KpEzMIADAZr|w8f(-U-W-=I?r!ak0M#t1=%REC z1Hnq)W@S4IP5E9t$R#HqBa!*8(PQ?(EY7MhP7 zA^lW+A841uZES^idf$MFW^py6cT>4ojYEsk=S;_{%<3G)_p^X`FHy3$Y$Rb)lbXVr zO(vNv)kW75Yn~`rZj5O|M#_57xZR^=i7RctTQ@P9+1(mY&Cwpa_I|b+Z|M&D%Qz!F z78hB@@R1tD)!MBIFB!%Os@{xfWrkrM=BIh7MxTdqLpotOH-@rUo%03>&7NM$9KN)F$|E%+ zRJrt|Y3ur>oRunjg!TO+m8a1cCTzOw3*@=GbqYnv1in%AESs(YTc-}unBiaeEiZ^7 z4EZM4TsZ?dn0>atPf<;XE9yPsFSex!Kb|*pX<9P7pzB?K02#nzQLU;N$_>fpurGo8 zrV$@<>#Lm@mS9xEI5aB3)Plo_AF)^)@M~4xXLh72mXK5-5zr{N>{pXawUg!$HvRv|VX^=L!Q&bJJ3zxQyq4rPrcP zFE*Jr%TC+dR@h>cg0Ze%eXkPf)-cEEmQ~pSUK~(QtF~t;0|w%-T|nh3ewIkI?TD(M&Evc1soo%GFs6S zgi*i!#*eISJ9{%Vl`7F-4-}}MnsQn(JNq7j)fYLi77mv3(E(1LOS_#8_r;3M`jHce z_=-3NkD5{=Dd04W5m#|^45`Pmm1E$Sv=7_g8cWY_@OyQ=^7HTI{i}lpTg>w8SfO>P zXU38Vp0J2i0!)(PUuV5sUwcQmSZQ;rDaOZTC+r7Bj8YLFA4dS!^yXO+z24L!JX3v+fGhwocP3cGP(DishPQRtETSTANu32>gw*b|9h?V zdmgeG9jvUb&-3x_w1&IqSk(6xv&KWv-N&R8LVre}%7HF56qZwav;s5WLwRB~($jDG z86m%#qQcZVjE>ClI<~JM${W45CkKGQL}0k5!x?Pkz@PXC7@;9=-A3GgU5r|Acuboz zFOfl0u>VBKdcT2K=usSorwG?jZ*aJpaQLgXAFyL>YWT5U{(80 zvt^Nm&%R$Qf80iQNpxvNJ%#yS&f=OWjpa5OJ^$i_!UNmJzCL-k4TM``sfwJ&$Vm`O z54pg+Q87SoJZ3z0J2krrU+z8k?sx0Ku}5TV@B7H%`HQ9okAIe!ZqR zcfTr#_j#+a3SH(h+9k^y^S1VFw7)-f@AISOy`}k2&)xjmSofag$o7Xu{r{!s3apl8 zH1pHG(*JLGE)|^YjZK~ZEh^#1bE&+^f$){9->_JKTy{Wa%U>#BN$5VNyBjutKCKw0 zXhW*#ND@zSa2)XM*Og>rL|)L$>mS)rtb5rMpR3#OPL+3(a7SXCB|d7ExCY%d-LdYy zFM!X(`4O0+z zGKGK2bASa%F}=Ooh7s`2;qix!uT{z!SZ(0t;q-+!aPSbxsRqeT28Qe;G6U*?PZLNu zJ{okRM&Qi^fpKql4G0)(A$?niTfrclVH-FS&?`^Tz2U)LcUmgr)`g#bn#YE30tRme1ZO@8d~F6^iYceYivyS#?F+|mqBdWg>!$HrINCGZ%O}wQN5xe5TSsb7c=l*I&_qf8tRkXez!;sys6Ec{#?f1XbVC&n)hE|N_@KE62vd;HnX!)9z@b@w^r2M!3Iv7zCB z(T~KU6jJBJ--biU)tu6XmCJ>#Pu-R^It@?zi)ZfBsaggfYRfBnHf?NNoSH4A1cq#x z+|e!q9V=4U<`&3N6b?3kfV^urD(m4xH{7sLtwI{cie&G@-l+uu1wtE~R}#*JOmsua z1B>lv6+^72SVO>IOv)V5k%Fu zBnAmkJFF4ASBS!)Iq@D@KzWHNk3Yj|UDjz z{eWB9A^&Wxpm^fEN*;+E zLurH>IkBJ@u&UTD_-CM@zH*`1tznMCGr;~kn7KG{HW!K=D;?yzaYi;SCR;G12fxAY z5c->HwPO|0GghmA=(sh@(iR$4oz+68_u4bmU$DQ;ugC8w{;!tDH^#2CTD)`S^s{s7 z3+PYE_-0P%H8k@o!i3Te}+VE!33TEdN8{MA=Ze^vJKgET9Sm-c2_4?n`xB`+7+0_x#IM6M$|NszWZ z>zO3UV17AY3TQLA8x@@`qYwp97i=p=I zXPRB}lSBJY#X0};j`{x;=hP?<#4R!)^qf#1_ZQSyP}g1nfvSl74w@fyBt7Iv9^D z!wy@}0MYD$LM#u_Aod{>PotVR(^lOVit2ic%pD|$3Jr8uQ5EA1n#zmr{?=pMFiJc) z?|lOf1yO5V2_ox*FRdh|P!C|m!j;xmSF%uHIm``iD<^4VZI?c&WxHP0@2%l3A7)&k z8kA#1DMe0cLxf(-)R>C9F}Dg9vs5AJouYBB6hwn8%FT{n*fK%@*5Whk16vrE*?(zq zL=>hJPga+l%?OhCLt|YKKyX40<3pfcMH__A(Ee;#vY`=;F7Iwfnm(r3(P7CG%5hBx zSE~pOkP?X1j#;i>@+4V{`T9tuV%LDq<22`IPLN3A${5@xI*=b%eI%FkzM#KL_f}cp zaiqC!Mpsmb#le0qM{V8Jnhd;tHWm2TWJiuZ%-j$1h_SM+sR0^e>)=2IcNNN^_4GK^ z{Kl4Ek!UlbgKHvw-?iJ4jYC6GNZ4DNI3 z`iX9A`~&rvmyP&+u8-xLOSvL86i^VJwcYRih^=-GqEhoMeTL`FcxS{Tv_hbv%{H=9bN+RJz#@MDBZEI&! zHuCu5(E&-cYzz@+$dwGHm`FU|e4-gNHE0HbkGjICrI7WjUyY;G03H9H&_{_2@kXvj z?T2u;h<{+3F$a4*;St${@Tq8-M^kf$(@w>%Rm}t~LzV#j!^70fq|*I4o$&-RiHljs z1Fe2-9gVz?q}xNM|0pLgo9fNLkoF;HsiPsQLuV|0cvh;GaViwI9`Z#JjXa-kL#LnziqDdHecb%uDNhY%(p@*SG1XG|= z)W%UmlDSob6r9!8WBz>WZE(7-YLJPm2w8GF{R*W%OaV};foiwS*H;2t(u>E^fEQOd z*r*YgN1VU;k#%6j%K)2uUJ2P>Z5)+0Z~jmkXC4$%^k+KS!B~Be=Vyenl)q_O8pn09 z!A+Bg`Z2e*5-YtOa*u_~%0oZ%U)|L;CxkAW$bpR=_vusF7-|Qpzb$+6wRbEIS9EOeIsU!-0`~}#r zN8b;dY1RrZhM&R|x*3s=E1^cl_f<#LR8xSjb`rJzW`NX4aRauM%P+kTzy0m7V77zj zP#5Yg*t#!W2$E|Nph#q%?6}6ofUB!i9WeSgnCp#zD!=3J^%Zw5a%Zg`_*kxBa)!zC zwRhHHTWpNEg9PHK+u!Q$-Oz*|CgjMlYz6-WmXX_ocUYv`vxYU+fzExo$X(t%cbRLK ziz{~p=K}sg=DYKEec3J^-VD!DyLhKrEBB_@=IOs|&N>mk+x+@jC5rfobaDNMNel&N zr++tW|D~q*UvaLwc0e#2@Y-NQd$}Ah-9`1KN6Ol{3-uk@vJ1% z4!6Lwk%e22=WX}h#9kj=R8-TPw85J-E@I{9y`P3fbRIc+@WAVO!0f3qA?;D4$)G)H z4DqjI>I}Pcp5Ufu{4(S>;cS@&>>e%20v6pbUgXn*C1{p2$zW?XQ<_2cIqQs0^J#92*eQ znGc|(EeA1d3#b}^epS}VOh~4H*RKZo!&$Ua7U!>b+)3#+0s^+~EASNk*gcoCSl_s| z?2`=>i2FwNLtOw^(p_zFq+ED0yGiLhb#~TenOB+HK$i!bLxEn_nlON z1^2xYn>W76$@$%q``Ia0sZ*-99NBgqwrJvME|--Xzb{YTt8dli7TP<`q6Il)wfxxO(^dK zNl6D*n+XGLfcucLw{z==3kOyQ%|0k$UQ`j*C;M$o8;*ZFaMBb7K1B#e3q-zDGa`%| zHsbuqal}-r-}AE`GR#V~Ol>Al4i@fYcTo2H$tT2sROhW*;j85ssxS;w-v~>>!6^`Q z%az&rf{dfk{Y2W(5zl-hA|5By3uDK4<_u?SD*ixzvh;_Dc`EqKSBZ{z~jYgPb**)@RhC_Kpn93dG z5y4pozx02#uQQ*uzm3&b#TM$Mq|tArrVr?KW7MV!@sB&Ok3s+CX0M|SiT>=-ogA#| z!^4?vfz39X(=Y0O4dxdV*C$uTvY$(mB!5iNGJlvfl-OUVjKm;)3jD4+tl^b%dw3M@ zaCdQgEgdN=v92mH7V0q1q4Yla8GrKFnBO|Ib0hmG8K&uWdHOKHxVSr%URu}F1J*@- zaV`)Nx8qa)s8OWj4dDdyXgro_F<5cezdk3pxS(noyo90rF+Wmi7thO5sPpW3-paY% z%>%z-A)WVlcOu&5qCJvLuuk$9;KIcHoy~HhJ6(RAKNfes5n$WtgMI%?!(!5VFvaEP zpP!2VpYPi!xH?EVde(UWAnvFO6G}w^b!=3NI7H>=EzE0GIZR11{ zWrLuAWP3}LNF_PqNdMmU2L3k2H59IwmVDtyK}8TTjX4{A|L1f@F%gZ#&`}H(+p5UJ z#%`w4;LX6kxvz!Qw?$Mhu`0!y=>(JbrZ0aIfs>rf^sonoDH&QL`ua3T769`${5Il4 zwlXBSZ*n9^nQ$U|mpsv*e}zVx43Ya`txv)$TtZ^hn2e-uAR;w*ehnZ(qTg_6}ol2wv}3MDm+)MP>y3L!y%N@)ZJgH&zj zY$Yw9b1`42WbTC7AeRvojKa0Y3l3_}$oZ0ei1{*&u2~4>gWLR>rs=o|OOGkhf~a`k z8Bd#*WxUX&L!t&uv_jc)4y6E;Tr5dPtXv{dYM{Aofss}gDy`E5aT)AF!tZmgFZQ>i z*BFau(a@aYPhn4^$Ei1ur?~ZG?p{@OV#Xv!H2^ z9mD0w zfYtO*fI0V%f<{@Uh)d~k7iQbwbct21n5f7VbkH(*St8Ws4$fL;$D-oj=F~lQo&ntN z=hDGbPYaZ%a1AscF|Zfku;;3VEG}~qaE1);2c4VB zF!#*z)rtgd$z5pJATS1xG%3;hL$52{If{`4B273Nd;6P)3r^qDoMWH&jnL`^ zwo}sx%e%*H6^BI_{kl_An^aw{lj?O@mg`8RI*7{zbTx#{*;@mEMJMIL+E~iSPB7UC zpHbKWy1uT-soqeba%JXu;2g4U*&pf8{cc$7iXeU!*c+pcqFIwVFX1b#$VS6FU9u_2 zGe`SQ(K;DjXO0n$+g@fE){?CW=v+!j9rSa1qJ~;Ss_%7Ul z=S|?dx3bl)E?viSBbG=p4kCj3j)`qyAEc(%V5Z2SJ zukqE*j#^P&(qDBBJZL;b{!3{Ul)9Yl>y#`|a=aR|w- zbGqOz37*gXc=vku0$^<4Fk0v;WU2V-eL`?&#^*=2B53ky6F2tSO*phRUsPN$&gjq4 z7y4l~zw#;y_5@;% zg?9s}xDhaCeCV1$Hsr32mz?9Ia!JYUTru3(<4_N2Q!Nbh7_%5yVVcEElz!VzY+JQz zOLlYj-uif7v!>3{O6nJ1x@fflQ7(rdwF^1?pd2l)Sp&Ht zX+yprW_|JPxFEA;ox_T23;?4h?%j0W+#W-s8?WUDsR5se4DIWjA@yB9u)Gzu{zCgp zN0z$W7nV}knTvTj>c_)^A44?7453JgO1LU3pGEEfmXfoM0<~_@HVeyvvjuI7nW~Ns zyp0~-R?PVGZt@ioC(o%o_DtpC&uNHvt9@Xwvk!4Dmd5UH`{iLGU2mQV3mXeEG@m|1 zFwy5FSFQP6dS%Bdf>9M_b)Q2CtYpS7B8X!%isuw_l+9wV`V~oY_>5T_q4pMJh*RU4 zOI+<`D$nMD84iiv+(g!U);-EM9Kq-Zl#WuZlb9eay9gP==RfWsK$aELNEc%@buae7 z80{W`cN(99$0SXgVRBoJrjd@oEySbZiTkoroAK~=B1iToeqx|PBGlFoe`{Cbf<^;7 z*R!0H_#GXsP5%y+%N%CJb?PZa$rgL}45t(4WNmK*IY6%{$<7wZU0zfX^#+Bq@u4)z ziZZvH8oXXc$ET~Cbh5)1#Z6peS>)>K>dHKmdFL&gH}v$i+5=(F<(phTBg|Flux+HZz=6B;90FU zSe#g)dg?ip9GlNaE^^$UNmR%#aM+}Cr0rXh=yg?xMXaIeg>?s7nvsQ1 z@|&}6s_OH4VC6PMyTRbO$TeHG{nVywo%#HH){H1@vJ=DW^gUgr$#(B~JI6K?w-t7N z`8JDPRD<=4q}1EG@K46|Tdd7j_0>IPj?Y~xE|bOS#D2bqdi3vd!p=+lnp*kSW=E3v z8i3JHQ*HWZqwPO+ekhrmSpM5VRH~Y-{NWGmvA55tQ;0|q5Kh%<`Nqi`Tt|B9mmE%+ z->KU8`Lvx55_iilP_LU^ZnvCz$W5R`17vR=`nmgQ5^(#f?jRV?0T!`QtAWeZo~n7A ztC9Dj-&ZRTt$R%9V8=gd&D|fhrWM=|?6Leutr@iP!m7OohspgOF?Lh+L+yUHYC!m* zcE4Dgqg|1MMcbH%i4VL5FYK&$)BQuOxoDL51M(04hgx%Rvg4m1e~?Nb%oTg}J%Vk=u)3{ur+A=1E^O6aKq*IX5?qZf!hp4>tW&1`dHKTsjB1OJd`o zr|uN|6s%6rd7oDg z?FbaMEUn#A?(Wbdnu*lLi}=0Yw`Gnw{TW7?jGt;+rU$dEHFo$NGTP~~41L!!WYw*l zj=q^yNoyS>cu;S|jd0caS!;Hd;Z=>xV<99~G|8KV)hVr;a=G(C*}4SeB?CHDNINqT z4x^XmH5^#rx)LMzGFa@T>MR2mie|_DaDLc|mI5#XCKD_&-Uzr4`0-a|u+AvczbczG zn4$q6M$P)J=O9xc^t|`jyRkK(E%9Z4M4l-<1DcPbAHsjEVn6G^<1E#B8BX$H2)q!o zya{nHaKOKWW`nJVCQt`G-LE?*C)O#0aJbTPy1{34B<1T`$zD{_ng2wN!X8zEzJXDS zP||#|qs1^cQU$UXpJ~0}P7B2ZsPGoC<)0CCScA5A{)vKGWNi~Hkkn49A|xa{K!Uzo zWl_q?&FTGqa|U8Afm+L0Zo-7k6efVrc=_nEf!~+CFlMWCOwSO0&_w}qjZotC#WHH| z3wKq^&Ebes*Xf)(*4lm{%gvo2r51UTqyL-4^J~YcTBqQ*89k7~iSEM|GNu3OkI~o# zVs)szYun+#>D@xKTg4#x&zBZ4Qgu_iooiR)cf`CvZ7!kLvqW|&uNe=dWVHME&3@!) zpKQpqBD8nmi*Vj^tuWVL`*AqpQr0f#P!7paN}AO1mHL%A9|?iAN4$8;1tYW;JoSDM z8jHO;-VPvY-gdG`Fby)>IRBWF%VzBF^#dzjvc9h3kN4!H=Q@enC?H-iUhD(*Y=YVb zo7K18jv#QQ7}otQ9U*&ArL|4}w5A_5Y()2UyZJ@!s$%D{hahr=kC#tZos`y^wmX)6qWBz? zV~gc`AlT1pygmKLJ;85nRjlLnIIfL~>P?KTGKEd%31cQnbUO)SD2pg=q9GALu9MS1nA}ayv;mAATn&4IA!kHj6X6Kj*3{9H_$- zT;VF_;C{Wrx>0o96ikA7Nm>tnO>JmMM*`$){bL^EY=_$a^&`hlviS&1ZI_?j;XlIs zD3m4KQ%Nr|kQ&<0d-vRur?ARS_(8nQa!sVn) zjkKV(gFRJe+4tvN&iGV^r&PxVBQz+3=qc=Q&>E2Hzafw8U5z=A6cF!lNh6J*n^lC= z=PqairCCG-jQh0ch2Y?3E~F?fzHmRHmD{qZ-ZGUxdQVVq5gEk11H-vhLSa!AxzbKS z$^r*ym2e#v4~x3U!1WkQ6oiaJsrHYD&XympY)Kj+({GTq5kwCxK-O+?xqw7nS`yCa zs;mpyZaSoG?Y3nAtZ;!T43SI@i5`!$_n5tjL8;Q=aO%d25|?r&q_o+;Zo~8R;2Q~H zAb!JzA=>eLT^>GpdHJpr{=Tg`=xkUfbBo5E?U@Q;ttC>`X{7h(F5L@aJxcF`88nd63{EPk~neHfS^fGwT6@fA^2a zH@BsSSlF$M)nE!wY+pIa$Dcco-)QzFWV=<@QGPxMy?Ja|d^d{z&XBxV_g;|cLY_q8 z$7w4Z;b~o&1+G0iu(vlkqAl+1oG7VB1wDF*kxbzNiwS)(mV;Mwq$h0eJIM-=9n!Tq zasWPK3|n&4QF0>Ru%&X~chVJyngIFm< zyp?$@|4D{*nee{8_UI_;m+@nN+c-J%&Wkmy5N%jaNl$%!#$ieBrLbs^e0(>+6E|Xf zIryGv7x|&$!WN&G+DcLO;q+*OVz|UAUds6JO)b*Zl>Mv0zD$!Q1mq`osPf;C1S;9v z*cci9+pbc{|7J}C$4p+OfV?vpI3&|p{&m5;Q{tcuBV^T)DkNoNp-f28Wgqw7O)NB# zRBQxX4Cg?(KI-T?xpH~&&OJ()&p;Lx-=ILt4qZQ1!T)6PW5>Yh#_iW`pUMa$JwUl( zC!Y+^37VkLktFPpxz+s;Q0j~yRP#fL-+kBtqJwDHSTxZb-2bg-Ip~$x#lvUWu{G**O|ne|U4VlI4scBL-s= z5gxP=P&Bjv!Zu^-7W~jcqbfb6aP)u&0~SMuB2qi(Aap2?4U@-oHjUr4TfYC!Hq!1g7A`+ zOq)*f3I*?iowjd?b4m{wlLSE^l~~gfVtPAB;GA7k+J>Z(KcHqKDod7JX`lymO@+XA zkinvk7+wr|Yu?`%r6C{zL#lqYvZ2Z{I;fpZU8$56QXA(%El>!XnZ7iD0726burfGY z6u`UZ^7GkLBFFG;eMj{SRLwm0K|dP^F@lJ)?{GFAR7#8Yw8w8o>H=cQFZ%6M_c@4# z6t3hofUVY|2FnpHxYzt!2&;T93UU*G?#uR&DLJ;VQoaaV9Wo9S-xno2iDItDoLny~ z!e~ofQ!V8gvc<$>7a=O7jP4~TGOT7q{*r>l1NV>Jj`N**#s0Xy{@TNB+1C~qG?aWO zw7hCzQqiuhAe?=6i_ei>M;$tVJeSz|NKq$GgrB|7;csUb8ABjpp;{vFC3m*-^#y88 zCRK=^z8%A9KkJ8lasATO*YST4!Y%|Eyh_ZTHDhnuD6($Bt7uvWedFn&DKQ#>iH5vJ zWye?FaiBb^`PxfYeE>UrfdkBG7+U`IDt(pOei6nFz7KvT8Q<=QN;4)J~%Q4 z$^Hd6UasZJtfPE_YIZrUlpCGt11#7j2uL7dn2}FaR0oKC9Zc773 zidAuX&e&dI#7}6RgG@VyDk2>7w`j8K9l>+Px=#h$gx+J99C2^nGl9cBRMRF4AnXr| z6W)Wo)}(p4B{#Prki`(p_$D6@LdmPY?G@tUw#WonYHJT5t4XD~5bH@}{O$}{s5tE+ zIB>u-=0nmFO0Z%H6IG)71*94zLYyDs{N^0B9s4%4z))lzzm;0%H4TwE5Tl{2Bb^Qz zLe`jdtgvEyvA81boM+Tb$e)^}@9Q^Y#8q#e1N~8_cON4;VW8WJ#g@+<$}XO?8Q`&z z=lKGubq&0?fvdxgd~39#rcVsDn_4=gplM@6xAg?or|L>teI6UBb!=-|T|V7<-F5uL zVuR)eJj%H7*&(dY2AWGtXQO1rWVTO481RR(+2_53^I+QF95nVFD*2;3tFcy~T9tgw zHfSh@rzARk64!iItY{YvpcHVFbZJ_|QYm%ru=tI$39xX6;y4ECOtBB~q(fC)l)x4v&n%8xdnf%~5BY#O~=CchW={sji`^;KYq@*`{egZZCx z)RgR9en@I|=3+k}wSRX)YSGZN-yB8rTdm6g0~0}QJOmm6twkA;L*{l&Y!&>&gHc<@ zMI?@7?G%=QsilVd`Rr%j9+9m}&i)uYeROfcJ$3Wy*eIt#@DX9Xk69(WJA287X!bN@ zuyG#ScinKkKElOfgDDoY??2dLYBh18Rj;3-lBl(x=|7}y1Y%V9`~mo`c}8HuU$IPe zsMK)cABXn(7>TIJpcR46`IxyNx5gApbX;XpHMG3JL{?$$jfw5)T>} zUCQ6jANnY99zp<0_T(;2-0()JZb3uB+v_AcL?*Md4RnsXU7TjwJkJIL6J6}&OuVX@ z0mdGtX;Rag$r;hNH1)`&vK`fH3aHnWa1TNVXTdph6uN-&0h9Q4t3Qe8FP*d;giVnQ zC8jMR7qtn18-)%8*f|06v`x_i>?&32K!h(-fli`sCTu=wpfx%u`az`zi0TBY2=p0o z+Bo-M7h007>ZA{yBsjEmlbnaus>E$oix{5@kY!y;yXs)$NxOcogsHulRGpqmMIKn5 zBYZz=n6Ja}#4;vO@=07Ix6>BEsn!jL|3=p};|J*(&^!=Wal^&M$M)IB=UMpcd3w6d z=v#XDt>JtgpU}(Hk5asQMiQU2o5%Nc;CJ9;A|S-YVVX4*Q78@`huyIHOUfbeBrTwm zR+%^!cZ9K@I9)c_tx!dIG#BfNXeH&x^Qwm%;^-fqIOQpH39oEzqI`TO44J<9OlI{S z`6DO;*#X7+_U{n*W_&#K?gw=$%LIktyFMnl*H2J}2yw${;!)$2fNgcu$wRS-5KnO$ zG##w8$!-8}ThKhx$Lg)HXQ8nIMitV&jxT_-T0+tz=%H=_8c!_E@$b2KemEV(E-ukv zV=H1noqkpfdlnTo*3Rx@x`Oc?%J0&MK~OC)nfRNCzZ}Zl2nkdg`4Lf5w9ZPhbgnv} zS4^qB)HknNh8ktPk9QR5h5<2*}GxJ|5FyAaz{3D;YYI_#$ z2AU^y9Sar3Pz$M!CuC%D+-f|0tBguoHXb&u{-O%>?Dcvyb9a*$U%%0o`T_+{Mu-^r(qa9_|6U`}syQdTSl9V~_f<_@ww&n3 zo)it8A9yI}fCe87+z!<8S3}yqnXXcRsnf#O$mzxAe!X#05_iyOKd%`&3NjWyib@LB zbn;u>yI%l278>p_vv1@Tz~GV39(NJ@vz@AhnSHiHu)h)prUbTY#3pnNf@@WEil~2# z-8e>P4kR_9nMG)#K-l`Ui3%NIBmsjqBBaJw2pR#4bNyWfY0FnN*)E0-0I30Hp10mF z%VRGO48H%(F6+GB!>t^vXXZ(Pd1blTb`d|F!p}e&GG{rY0+GKHQmP?`NKR8`m_xzB z)ZAJYvR6R1-O;XsVFlaSTE_yRESr2g;I~z1-zG$BQ)&A2MZMwJp_+O*bP0gBiUl46 zObbw&-^Ck07GUMZ1kI|H@SDreW<_`qzNgq0I1n5r%tkrKD5I?Snhl?8++apit3djW z6^;O!(1Z}$yzv4<1SEvKttWyz2VDlX)^7VPX{D2Vye)=`o%H11{0Y}G+kB(@vkJ?g zQgGt4bUWXT4#{1zT$G`>tr01TL2Oo7M|3lbS(khCUNbS7dKH4^W}(k7%9+KrR96MG zc-&^jR8UNq~g$I4>)p{PGU$g-r8=U<9n~gZwF-*_m*JTyk~a$}G%9 z)%hbe+VBr%dZuvGy^OUzGn>KCUQf|pT`|Fz2cl{hU=mo0R#3c!YXW`CEUEE$0rCNu zf(q?WwHPh6spLqv9?f;36?PFu^YbH z<9BCMYfbFq7;(Hrdtc0ew$+8XAdLUEifhqA5#t<-e=4#&n=@0ocU0z_@t-uWIP@us zRos4gNBSt(ki8|5*qxD==H*ke6?Jm`AnaTZ!pHMGRtcM6Yp^ERM>HK@j~JXQUcFop zy#XtAukHVZy4S}Dp8oTgcaQL&Zx1LN+B(?$oId{D$zw)c_h*3!#rL_c9Xe=~4yVME zdVxc>t5u_|8Dqmn{wGJ)nYN}>ET-fbOZI-*rCx~R%W)QFwDw@2jdZ=*ae}u{HaFEB zf`Uv+BloL~=~lXr@;7aq`5akt(HOD^OnQe)eG*h)ue2d=2I>pW{;%I+nK8Mfd7@#6 zw8xK&CSd&7*-{>sjWSTSdk@Me;kzers#qf)Xli|ot!}NADM7<2*wjs1!Sj?9nfY!g zYIQNRA?ads1u7J$>n+2sw(hr2W2@Kvy=LmJaeU}_D}#bm9r^8d8G~AHIXenpvnp(Y zP$?^~c(P<#D5vEiw!G^6iVmS^0OecTi|np&c$eFCZCQM3CR)a->Gz5#B}rVt-Hu3= zK7euh3RE7k8^9%Dg#jWK5r`BpsqiYK6k(Awkf0ixA4NjHY_O=sCF+?0OIR&a83+R2 zw6uz#pE_rM6WPdsidDf{6nmfumQu8vTZe@)jEia(mQu7Z17&r>Z+Hlal3Tb!YY<84 zYtDuZZo+1eR8*JvFa*UX_5KAz@GU-&={EG2-4-aRA9EnL+8Hk{Q{ zK9?zAb9S4sqv@3LjN1kplOZO4%2Ex2;YmM%HNOm9a`1WRH8l%}?&zNt`a`*|-dFk- zsU4^=j1Up2M454X8LH8QFU3l%QAs3reoO$VSAo)XUw+=d)FFad2=Q4vVY+S_{OfeR ziQh~{(Q7qsqNChLj-jU+`|odRM_D+zgNL)^vJ>l9O|%RtM9l18uIS%NmIZsb$9nx0 zgVR1wBc5sy6@|knmomQ=HMr>?3TUK^KMCVmeELJek~mDE+N~sg1zoBnJ2#Jm0#u$e zabzXfb2gRuVqo{s!Nv!oGc@RscKOn`#tQAG>sClkb0Sc~+BOxlgfZ%L>B;rU1<>P< z)<#ND7ZyqGqP(zP3kPc>orT5OBNd`-+p0G1@O5}?1-cPeqGr@bPIFiYws$O$>R-oQ z+?c#jgz%PkStjt1SIR$qsJXkS5?GkuO|D{l<^=EE!hO#|sNgI?B%QvtH(FIg*4!zV z1~xU=pEp|YGzGG}*tDz8dTo_#7S`Q;|I8E$vV_?@qvi*Nbzu+Z934r$=LY4Bv@JP;7%O`+XEhUS`?}4ACx!*j?m^aD2`Mhpr zvD$K3x4$V^%0oT9Ne7W0Fm88|7|xJPICU`&y3oHJ#^^2h31#2Tdp5IMFYDPr3bdu! zfxka2Q#c~~7bdQq@40hZ^0~7~cWwYPT52WZ1I6Ev!YOyr{i7@@ zb}O2W9aU;;3~~{LH*x9i+^XNz^Y4fAjwP3+^siJ&JA9iw;l9r{CfslP0@*@ew_U*_ zxPs5wE9R_Ox!9KC3xV%I=j{lvfsdPNbpi5CbKj2B!8T=hF56GpgY-r|rk^i;+46ee z$l~gpAH@fWFQR3uY5V*M;Hz3(Rc$twQ_&@5^1+N^qC0 zD(~XE9=C6BRiJGJy5<&O_#1gxu{(;uaRylsz|4e*r|iZXL0N&a2z08I#aYQQ-v-VX zNsWu}9@t+BTxd6r(U-fbn{nD^f#}^IBEEl zEh$}l15^wTunZvYz5nf;Hi<3m|p;nDD9MFZYtb6>9 zpL{w@9+)fXKpHsKEWKe+YLR=9^kl5z1;?dmghVIG+;GfVELp6nIT}_0OV*Mpal|t~c=OU5C5S^H|oEVCau^*uTq6 zmT%hz9FMU&#z9p3yWte0^NZg=H>{6AM?6I~?Ybxj6RJ`Wob7^v+KU^3Spg9nKChLo z+UMH}2k9kAe**LXY}VDg__1TF2XG=%k``i~D8H|806d3V<1LuiuMn9b{BDQrDVi0i z(2Q}KJ!(y>wreRn$H=s52uhB8C}RpR#7g#06OE6Ppta%<&EZfhxwVu;fZUw-R_uHe z(Kbs(&6UnhDinK=K2@^)`exV3w&gN4XX?-50`=u5dvTW3W}Q)2eSs; zPP236_LY0!rigm7acQf#r`Q8gxL6YcOJ&6cpDl>sHg18fkWhj90SPBUVK0piLBndL z{zkYh1}x zisRRpofSJ^$Kw2Gy8k`0Dmk`WIY@!d1ou6ws7wmAvB6rbEcE7Q9eVM6i^#c+#~y&c zdE~;!`UU#GN)Z5n6RC|R!2j`L`cF%djiIqMy{ZZ*0HCKVv-$tJFvLGE+*6di_3KBN z+5g`_0xAFV!vB0%GBvh$GWoxdKs{Qv&YK)?Kat*nt0O8;a>rJ8cJ?N@;NDu-2zz86pZ!=E4B#5vF1SP!* zl+Z^Se6$rD9?P4%8yoMA(H|1ECo&0?(LZFMDS}jzOeD^-!?qA|N2Xx&eO-nkUji{N z{)l81v-&0&X%&^JA%9|$ElFL#7I9bH_4QyPgP`19y)n#T_VA*U9SNi0__H0uAVL4OOl zrvSGGNQ|SR{(2kmjiSWN0YwfP5g0GasIA*Uh0{_Wi_(mFBnTeXRI#XCfvoXG88?t+ zg-LeL8cPr-KAcxMq5$kbN$UncPsBh&5jjg4fFhgcc~GP-LJE@7?0|hY3CZuejmh<8 zJw+Xqx2)>>p6PN0xH?{`X-Rae9%fHf#o1w5MPP5T?7-l}SwC%)3!#iIEg7H#CW zqVqS#wK2<#XBaduW{k?dM3cf-7Gf29rb2=;VT?h_JqyIs&q9HKtJ(t)D?wPh-5|fs zxxoN7WRU=EsnmtIP7=4+^2Q_+vV6(7PyKiO*>#kCY-d!bcrRK}YXb^Z?|zFnMY&H| z?AeLhC95PKmh)Svp>1K7=x1l3Hb$Z8=in$@Sem16_`s#2o$xy?T)p_}#ntNeUWUj% zNMEz>oCu(vjg*h+JzG!ZEG15}_h|&J3#CeL+|7fa5#N`mwEu>qhootm6QJv%KXaOp z+)#1kgicjWw0Y{oJ)#2B;uvYD#$i*hr-oQdMWTz#rs`^Its3@Hg;EgB8gcA}jydRe zj8w@CV)-m>VF^n#CUjj)pmL|g)tN*W`{cGQNjt8_-j16l z;p^y>W%s6%ie`C=oYU=`ab0i^VTBXDRF&PashP)XQa1%_)o>yydcSf-sCj@y=M-Q^ z7vlkoyLN$z-d_|iRG|CKC|77z$j~kGxwb*6`1adr;%m2M7H;!qT$QHgQHfXpdiXm> z9>7D-m&?8SdGj*KsKAS(-A+m2HO6ASP?d9N2Kq zrd_cJHubx_Of*D69Je#uG;w3zV;?1Un=7P=xDRiiqBiTu9JyQK(wlb?>xw-vsUMX1 z)r)}E$<}IgaOSK|qq=%LDb~Rfq@TGz8Co|eGm;XNtEsf2@!|q&%P5*e8O_)3v}d0mk6DU>pdAEsA} zCl8!|4Rgj2Mp-8<=UF{vFwoNJ@KLOUOQDKYBuqjG?a=nn=YvU>K%<^EfRmj*R(ndr z+t<9`UmG@5N{t-6Dg~7Q)|u8$(pEoY4QO>}Vju7~?f8I!i>Id}r$xs48c3Su#Na^w zM!=SSc#Wk%?Zlcw-N@_1$BU6{>)KlNeatD#xKYQIkL#H8Bi@-5XRsh1kb^@LvV18B z)5MN1f_VxJa9ZWpTnLhYxyoEJnJ3$mlvTV58*jb1{`M<^SYnyaNzqvIzNqTowa$q) zeX>Y(tA|ES<#k}r|H0WiHd(fC+q&sW+qP|1+O}=mwr$(CU1{6SthDWudq>=RW50Ku z4{QH{@nyv5v-jCrdm3xHalMU@%30N=JAMrxP;5-z!$ClKjaZsd9o-6sE*WMoAv7fj z>F`=~`8^;{&+V!t?X*zTSoVb6XQX{xvlO>|7YxnzP6mJ(OdY-`3%i zPS(tbWU>{uoZ`gpX^Ju_;c*;Fn0if}W~|CIF&+6Dtg#vzj$s;@vX_@0*3S`XRk;XC zJmE#wtfLzWJBC4Cig(&7&5sRL7m)XJ zeU&A=TvhR99VKRCUEXi|d}%lz~Clwzxvb4%6Ep0Ycdb*LIER+h_E zEu$3yfv(04Dxza}G3w53ywNo?TDw7NvC+BuZ#@jdu)ipxkU0QQEc`_Z+f;wC?I^EP znJ*3aSY$J%wAY`!D;KB9=$;;lh%7^|oMta=7;^MZA9Ay#*TB##@Ee!6*!*1;{e+yH zoIjLI6A8PXtS!@8YxXaIf$g@^;+W~ON@IsBUgr3q+&a`Cp4GLugW=sejYjj<8g9e8 zeOpynE_%daYvUdGc$h!Y?~Vp0*dZbWKZ>ti)qs|ONuG=`VW|10OY>76Q&muX2q)`% zu34M3WW7_;mM8bHn_a7(Zll@RqSMm!Fz-t^29vI?Sjuh9Y5n?-uCDOvj+mYw1D+Mu zzjqS<_xk%!SAMmcrsGBn;*Yr8H|8dyG@P=}3Wq}?bHOQ7ja&LCboM|n=7x`$1g{7H z<)^Zk_3?ZaunR+M%vG9EPeb?grtezcH?eZcNrC`{RH2p^y`SIC(3y0acrX{)uXpFf zmyp_|uFiBP1DQUGGCQEzVPL2y@`aBbuUj0!{;FQ1k_9QQ;ySo$lwEI{wavnMK$9jZIjbXK?+ z5&=xCyBXjtd`QBYg>)4FM`sQPzO1>)GQeNDi0V;a^#?Xni5-VK2hbqJ4`)rpk^IfB z27wF)pxkDL@*Ejb<|D)Chxj4@1W{~YJl=jVG$X)9)XC75 z$5o~uatj^};`HUvzv!EEA9f) znETCE4Cs(TUE-ipQ)11bLc!Gp8fFEHR7&{UaY_&Fo)jp#Djx}o#i#wACSIr{hRE0?B&mM0IHE%#R#K zhFsnF^NI7WB?2TM_Y*u=d)_R+AUXq6>;>)?Y&m&+c{L}eXKK78C#>3~)Fy;Z zLvpXlh)cq4?4OGCA~Pw4U45pr4iEJXEv5I|g8rN~VUZz#jkIo@Ai8TdI$(hKQY=}9F$-;g3qeGb zJvU;nxZfWkrA46Ue*9}g|L1EdyMvye;z@N_d0VrtI{8-_S9d5q2kLSU%y_L_s^6K@ zdiv4}MnEsUf6~Ip!|Od>Xedky_XxK}jx28dx~OgcWsa!zRYvRTI+bttYGDGmhy0MY zpW*Rbd=05^3r*2Hxp88u4dq&LO&z^fZLK!{@sf|BVli|C7yd`QqQ~ z&T1`M)Rn}8+gs5`d2aVPMBKm!k~&#&ch;*tr!mJSKS|Ca$qdq~BfYyLv(7EtJ;ibP z5=7T#Prni>QWX;(64^X+z9js$6C&BCGCRrY>T&h2of`U6Qk>!nanZBND$O)osfUdArs0rk&c(O+`sC2rB`M5oOl#1kgVj205?nHK7 z-o|=NNxdqeHQ`;3@@xG>EZMqKDtXoxX4MsE#|uS(uTsyro363+D7AOpxafUzB|Pgi zg|Ve+zB8VW40N}$I!j5=`H84gy}Ia)A|L&w>mO5Awv|eWZfLt#gVYh<=Ujg&osb9P zHJ~)Jf05TLe9PhoC-n6e@lqx!NRoWQJlx`>wR2KD1>RU+{$oMVOCI4i`;mba;r_h|?Y|cURbvA)TU*P2+!Iv)zb<)7 z1Qq0_XEDiEt$fN-n^vF-?^SIAGKN1JdZI0g8kbMLz4ZqmWJO!4f|Ny1lWa^oA9apj z6q1Z#=1GX+z{Mny4;sBjO3}Pe)129Rp|D8JTZ{vsS>M<}SFZ|l%(y`h1LC?+=KZYh83M!&Xk#tmU;~C? z>O$=Tjb22DF=nK0cnwL2TAl_@wvRT)s*RmTlYHuU&H~IA;Q?vsegj$y=uc8)ZGm4@ z@e^SM`KxbS7f$SJ^1%d3w_d&c2NcO-d^NC@E6cy6kM_)`Z!H5WOj*V>p_j_uE#WeX zD|!wmy>v@Pb#J@#5D-n%TMwxzVo~h!*FuC-0D|?!;%$-YAa9aG!r^1b>)pj2vhfSq zgc6eM(jw&M$=GFa4d0#Gw-8cb3F|xS_9GPfWDA^2LAL6xr={ct(*SEO)2d=YtGow97p%1Y*kl2qUBvsLh%H80J9gCbL8n-(U0o zhW(noimo`S-J2%SAmBoa*1q5R^{r@nsBga!ahsXx!V!)*z)=mXgnneg*G}<_{#UUN zK)U;R8+ZsaS)>fm!!#vM1}J|P=2I?g9HNkSE<QeVtH>kO6tU6-!TFpl zt786stTrPf049N#06osxbikDl^&6ozk7Y04*H^I~l}7|Q;BIm^qf!EDwemPPQ$#pU z5~W&^?psT>Prs8hjZLGh*EK;ZP|YM(nVBiQpih9U`8kmHGU=xhFb6}5B3Maw#9rbb z#3gdAw1yCvF|}#_R=zGBwm_i&)lZuzS_w}&EKa|%ug6BdoD0-VX5ZkuNzHzPL~4)$ z?Wct6kf&X+nL%U5bF{hiKdApqUlY_-a$!pMU%XL(?RmLX!&q)dAu9|Kk+UgV7N>4sQ^ zu_sQNl#@X<)J8J75Sc(jgqS2|>ilTTAUv#B8&fzZ8_dy4<}TO2Ldhl}x5_+|VP67_ zCu=mcRd02q(NlYqaC_v_JdB5~i>f zQu&^_W~4ESBI9D6?BH#&EhfU(K<%8mo4;4E;ki+N{(9lk(KLr$cEKjO<~0c(c^YER z)Fu&jbm-CI)7JaRn2tMBpD<}lGtavzWSuR<$`WC*sEdYRF#d*;lRH6$+*}J?_~SQ4 z=ov&`d**_VuS84SeL(@0VLifJuF6bbvMKbL$X6eH0O*>xD8FiL*4TKE)%NWZ7>Nb8 zY|$}>bCe&J7k%C7s%4#k*Wvp94=f1pmK{;UkM8kK2LQnHZv_=wLrY_)f12e}8e6Ul z?5Muiy7><5ilNpCcMWjCe4#*0TZ5B!H7r8OT9uO`g|6w(oGMe%XQIiu}e>v9a9+#U_BY~D?xxbe@GT5;5L;x zZAn3Ak@nt6QKP(W>3Z>Rr6KgmiP0+b2e zpJU1KeX@HOf$*kw6$OaFHs}Cu9a1G5N$El51?#?sG?)qT^+w-s6*wWPI)Kh>4@U+B z!i-{#W4QB229O<|g89;*l1(^gp(O^@=9csPC>FWNNtp+y$Wd(iN-`@9mHP$~Ys{5u z0rb)qAxLUQ90R=q!&X_fY+Xr)%*^hhNc1RU5Di?$uR*Z5^4uIslvYggYtR z`2vSl=6XuxfuRum(JMNP zN?bZN?}~e>s@UCxeMw*6vm7NqxcHkVmwu$?>%MhfE@Z2X;RoKVPcWwD38$jASAtxu$xLRT${b+<(7tQnO#5b>6BXpm;r&9mhjQ2cBRL6{#D6hQ zQH1v)nH3D0FPXv%s&N||dZvlXy)+0A>%1XFKIC91s25?4g4~bJ@Sl=;q;2Y55Vgx4fi;6rVN*rDNK7#}E{E|9&h72_D&ucTw zhS$U#^@3Fh@Kp_uda6nw{mof#uU6}(HVdV}mvy>t=k;;76baYMJfm#Kt)&Fz^o9ZW zw&?q_+(a4K6J(*RvsoVJ#utvsAD16DG2OK_j}u4uRi0k#R{d!@TGilHjTJrY&;h#w z9Kglvj5EiEt*$5}gArKOi^_GLpP*JMIMa3)De(LA&P0<)6*DO04qU|F$j#S}aA8ub zI}DcZ2S1aWD5eiNJ#_b)Fn)qxtgeOPP=l4z&aldl7Mjw`g<>Rzwl>#SWz|)vtrQy8 z>|G++c%ayid0}wu7Og96%lUY`Xw(XR0sYO_HGH%r*4#Q8YS1yroxk^h_~%i4S_L_! z`*2KJ_wJ?dq!p$v@06E;VsWgn@dn3a(b?3Wrc#TNP`W_wPS{?3SatPQuab?E6pef3 z^}b`Ie7a$$o!Mf6*#Y6#;Gc0fi_Zi`jev5Ufm(P}W*yNK=~;;fo)r=zg&+~{INzYE zOhHyt>9PoM``zb#|YQASUmqIXijKRr2! z3Nyd0n}4uQ0A`hpM&IhnWbzx*z@SUw^Cpk3yXNyX!FN4z$drZAfF<=u&A>&^kVRcoFLjltpmwb) zZGjb@LiPLcL_ouSLO(FFz-z-wryaP6t&qL<{*POtp=D?n3$7%w$1W&rBxu69Guy>G zP0A-IN|j{e_tA~t3ZX;V9UQ{0<7x$2*(?0w9n#NnRx&nVUWcst>&owH*~VbTx0+ko z2o1OGkxCPCZ=k116W8F%m4i4bjHZU_!%{}G$d`zb6Qs$P#7UdlNdaW`d!+=tndoOQ z2Y~$DMfHhY`Ah?-Tr2rKOEu1a0?6GIa9EF*kwzm(b?fy9I+9JN&4D!uh;WN?UI?e5 zu+?A7Uk4{zjjBWMGGU@67raPXhRC39)VuM45f2@N)0<~Nj>)ne)Lk(syGxY@T4;D& zXtRihvg{%-Oq3Te4w8|?_~<|zEW zan9ASRek%`IOa0L_Wn3yN9U79;&x?h(0#G)WEq?snJCLn+CnwUCL^&;N$oN)KdcT- zEAJ$Oe`NT4AI)^V-1+NNK8zMLCmHap;I1%3R{*Tb6gE>p4>87TD^N4&&!^S7$?qm$ z;12#DiX$(y(J~x9?50VsDXf%>8UIld+|(hD@S# z@VREST%O@dqrJd`b=ybE<(aY0ExO^HT}||YW4x=aO|Wpl=P92@YWI8snX!cf_7E>g+TPBK}3pGi|^ipe~Ot<<4z;tmp9Q` zi~!HVjgRt0)T;UgRq@^vNuO+|X}HH$yHBoQtmX$B$K;21<}n!Q^A}71Z2A^)e7yG8 zDSo2^w%2L$<~8~`RwqCI5f>I04^825$)JwL0hb#bke?WnzHOW9U$MBG$BYgdC|da& z&Lh`IKmP5FY?~W{f%LTvgwTa>t}8Ke=GzU|P_|Z(z@ktJW{)<>it|puNZhWFK$4e0 z>!WlJ{=(}VRtH(okxNB>{2LsucFL>2V%i6`-8^S4x4b~%=?qIuWRD?Qd8ggN!%*($ ztTUGDB-}CY8Js~^0xKpU3-T+cT{ijl?{$e5j^LDEb|W3_#d#{Phq1q09D z%;kba{;~~3)x|7KbO}L5E?R$j-(qmH_C19v#>#8=9_23j@oixacP^%SU5Cmkvg)JQ zG{8E#$Z(wTx5|MqIf$e7&aQJ|<$|4JY&E^wn|tuiHEW%qkvlY82yCP|XFy7_AK<)M z0!ZKZAz*JcL?81Z6|h0R+;OsMwm-zrh*%e2guBRVZhT-j8ko_huo)GSn!?>wxIBA> zH&{%+xe86?&Q+nCriRa!jO>DpgctBu3_MjVG^txb1``)fk*N+rX_h8jE$0M|%nFzU zM;Z6NlthiL<+UtZc4n=LTXI?nKT>&?qCoRwZiE|eD#3Ut9MQrBDXI`bi!)Dd=j6ZB z2<{FCG!2n9fb};%p1X6< zVq1u!(bEq+r+J=NQ+;dZQGUFROsg%^;8%ZbIt94cq28j0?-RkY`reh))WE~}dZ~Ws z1E6il`W4A3ocSzY(Il%RbtA3r0KS$;P;K+#glY43ugzG=J4BI;S0e1xbH3(@XqrYp zCYZ`<1o1P!a`gYA56o2rvr7KZ2XNHHjhb3e+s2-|d%APF(xtu1wF)KE17RBBp?2hw zIHL54v?RXcd@7j+q#^$@~@7+P~s(-jrc^Q4x+nrc@D3ek;}Arb!+-+ z%jsgbbUPgd);D{*hTufln|7I6o-F?`rY1lsHmGEk4g}2Z zYwzP?KUeEM?a@t?gRJf)CO`x#%p_!ZGBI+(=2c62kZCy3xcw?zD+;R`Rmj35Cu^oE zQI#%ecIROC%MK4N`6Fn`)X~&P-8)%0Nid>x|F<7~?s0?Eu(qe@YSWTwX@w@*8K2@l zCdn!70AdJRVr6G4PFPdQY*Yhz!7i*{gh5;)D$&I0sSzbw$a|A;yG%0^dGcH7sh|%h z^;>ZQm-eTj6v<4X3y)`?;-zK%F-T8rkVL$JSK+H-yBl})dVX}QXC}sA%PjNgDJ8go znk53>BPr^v4{4RKMR}jM4GLNIS#uA_&B3oGNH)zID|$bW?A~mjXxJyp_mN@|+q zoeGvjLflMZ%>Nz1x0n*2A#6i$0UD zefF|-f1T2rw}snxX}0%%E*y=HLN>XW`{pI)0Rm z(&6v_>DSBqs<@8*!CA)O|1a)VCkJDF>wmmk)qk`~R#YFIZ^)v;6r+&%%VovuQRjWj zmhDw>(im5+&b1{zV&Z&K2pI5n6~pgmo?igA@a5#zcq(u$LV(9UJ&tp-wW#-?;p$0p zV;@@LxaIX4v}!(WSlCw9*1S7}Gh-thGh<0)QGMT_$q```@{S@kLZpZcfu?gb+4Th2 z!}mVOalKF&jt+z-OfpRTK5x$K_1CcuDSrkbJk4c$Q5BFfQN;xa>(wNFXHp3?rV(=+ zsKZ({md8;jYyF@iiK7M@xu&lkyC)(S?ps%m#Uv)m{wl?LW+bK+3M2~Dr)@g2gxd0b zX(2Nj^pP+Bl=xX2GaGZ1$(`Pxn(F1yLx7Rry`7Sf`@v<-*dWU~Sd&*zG$SS)2|>X7 ziu>^tQuvc)lrB9dnHUX#%Z1a} z$C~B;)$5sx_6Fg05N<@{)&?)v$*Y|M*3+V2`1OMaW=tj|89{>26*=ohMwoESnW|E5 zn#0$-!(J2yy>uMFMV{FAnwpx?1kur>azGBJRxM*y7%YW?SQj~=x?ftlr8`*2wcYN) z(AE7o&%#c)c71+&{(2jX^?d)OZRFxwBlBjKo!$Gpr~PBKq_q?HX?5$>XXeXNuDh^7 zv&rB7^t5Z#ruNl#vR%>RjbTvjs`FCIBUnCTiZcd{5s)K(Iko173o@V4uMOc2(h7EL z)v-~N2Da&=0vl6<&tyOOgg*a!BZ)|`iU77sv z9kNsi2yNfpGUrd0!)S_zuq4}H$T56305D95g#PhgHQ3)RP<^}NJs6-TXg_+bz*LPKCj zdwxMz(soi~YhZ4Ofoa>)b-ixeL)e-FmiOhIgT90!E{1Se_}iR-W}CDcaQQ9B4`dJ0 zaGzUIW{8*@XjNvKi7k+?=f=8$t=l=17L+!_e8eaZSxL}KJ8E-m6_8JT zsyKEm`}kdzG(K+u8HzVQZ17o89ZiKwQc=X1$`zD&sf;>s7QT4~IcTRgDhzpeoheNS z-HAwSje->JD;JJGmxI;Mm8y=RpADF(RPlkNr?xI{EMn02P-0Z1bS4P3n*L5spsnW` z#;E1x$g$3WbK$d>UM?!pTpt`1bbPvvchh;Sul!)+gVmtGWy!l7XWeH_^W$5Eru9?C zVFz$Y1EI#v=oW^QFdUR|_T=!N1VmyWH-UG*LH-kHV1i(H60Z-ju=|?{cEcSq_tA1NP}^ zd{@tf*}hjuctzk_o&fv8C|r{wXGN%BbyUpNyuUTEMxG>|7ml!F8k$P_5;5m$v-Uj* z5eT%Rc&Y;YM_YpZWcTtyrTao6!@61akiItQ15BC^ER$_XNzZfrG%)$K2lw0GjSsB8 zRl@KMb3kyR6QJ#3k26dJ+f{_1{Ha-91{{x$+UWNh+Kpyb$`E61lXJz&qqEAc7Ow*!{^oW`lT3y-8bXc^Gt3gh0kh%c z$hcw~FtF3F&62b`**zG!-wiFIT9I14znXpE3|QtYP|7u~zDsL@ofp;L**vdp%w7no zxt-gqjdOnMF?n`!%4Md)YU!RU6hrAQ%>nlY1MCix03$Pv(Zl9XF$UJ_gr>uAf$D{2 zo|lI7%~0Q4c!E{i7s}HbU%OqTcQ>b_ceBK;s7>yX8le5Xnc_p%++oXi@FTs=VJPJb3*>{l=YF4`+nh0U2P53h ziQ#$Oh0f@D169cCfJ-}>r7;`q?3-k(c~kO*2{65BL@dI(UtYRi`!NGV&0%3f*jiY6 z#Jx?i1gt&o&GlI4B_k&d>TY)|<6T0Y=uZ=%Ni)*j92aMN%ZNRxQnm~ZbT{rK20X2g z)AwM4Da-0&!gUr;p8${kM(O~gYLsMim1pIGp2>I2gSa}eSI|EZgguZ{-Cp4ew2AKY z2US-dG9LPzR#K3*2ETlx#Q)tQ&LBg7Q))Z*=*v3@ZTG6C2Yo&{KhF1YaeW=iX`OX| zH3eu!gL7z7(TuGXxd)ud#`5CCvbAkVO?TmcOc^TiQ{nmYwhqY8c%K)?Hqf<>VBt#z_U!OtdV$y2KT-rNQ%axsohT{hK zOl70j4+`|D%Vf<@(^mt3m82vy6QLqZhF?%cabkAYYa;xauR zQxNSUr<#9F1e?=!Kj&*KK5j%8@j~6%P2QzQR{5ZaERgloHF7bBq*+tHR=Dkd%y5Zt zoWs+{B~!S*!Reu(6I0?Srp;wQH0joD)`Y#mZD`S_F%qED@y3%!89VefHqX24f&d~( zl@-;^QU;E&lK99*SVluQ8p*a-jRo zL$@u}Ex)btxXwBGBe84ru`h!s@1!R5enIH95BAGH7RFVT$pok>nCL1#H`WxAprI8MxVnYHIlft z^in(aa(DUpQh_11GF98JUbbhhIWHa9g5GV+A(FLrpTpU!W7jS)b(t)Yv%yk--(!Kit;**!e-xAzf4eqThW#--X=4bEjp; zNFl`9G69}=W#;W9MY-u|gR8*VUW03$Z(Dmyx|?WXDdGyCF>Aky(GJ&sQ@kcrgRUO4 z!DH(1nMqfY!~q}T2j8q6?T94CIaqUkz&s3*<4W|Xr3v$!CwKa`*V}67cIDp0o+Rh3 zr)g<-Vf4{pN5SuiE|;wh9#H2*Ds-mBFlwsY|T!DC&Xt!`HzaR2kd zo~3vhYvcZZAGp;j(zZVXxBFdH${!#eimP8|>u;g-mNcp~ znpi{WBVk@q{S>V*Ch^gt+1-xo3&B{z(Vx&q0)w)>%yc%}kTfbZD6!xLqD@>UMt)H1G#425bJQep&>ZGGquS5lF3QZD9>My=q$b6h8hiZpj3Kd5{ zGM|X2WsL0CW@~2U>GOMe;2py{N#o5Q=)+Btq!d&~w|y6J+n@NaL^c7(xOZ1+puf?7 z#eb(wU8JW$EeP|Nr>@u}`mAlPKaJbzFRN>RD@AswZ;8Dzk-@!F_u7X)`u3mrC{8AC zPSz;ZD9j)?wpsC^7Hng2ojPMuvAcJ-|_;RDbC>K2=!$Pw}KjYvQKUFCBV zUlhTwgM?PV(N3S;OIN#>R9Pok`m{^dN|1{-c9?`p9b64ZzM>}rNV8P#tI{Ub)ktV& z_{=|$m5dKgJJ{Y`0XPwb7(B`_KY{=3lFYl`i>YdANaM)HLHU{uWlcD~<1iGcQwsW> z7%30^eeD~Ps5jSl%hCugn$!4;S|#ACSVKte`ymURG=jmImdQW6&Ous5&W@ak$*4^l|sydn`P$fAVCuG@?l#WaI+j;B=k)>5v z>1nokcih@ z&a!K-XVzELa-ghMBwO<}`&Y)h+yu&0&XgvFg1*2`(eTr@Kg8U%$; zq6YmtMt;=-;iN19dq3c0B$I4>lT@P4epO`z3|AKMkCwk9?fkI*ANlZ(*@Wdacr`L6 zo{Vq)gSZ#rAe?ORBLX=7BqIK`HOAf1%Jv_LH`&Vl4jZiS-RD#-xaMLe=*AwW{`Fcc z^$8^h%;{~vNpN96XoVNy`vCdIG8VtLLB--44o>sCcU z6NrA_{iQ1CnS(a>=MZ8?#Lq zuCZN-*GOkTW}J1KOu#zu7UzoYj)qNwS4RveB$Ur@_H}Ys>0%N!SjVQ@zd~C@1=s>F z4IsXq)N>!d4-#b$CiR5xh^aO7yEOQdZVzB%Q`Y^5V&H0s>G0=)GExo_&){d`E&Dn@m zJNhF+teoaoIwm<&o2>+S+U%*Uf1RI4#()I@P1` zVKBh4g8@XY%AsAYqh%V8R&w64+jzzgo<32ye7(G>kg;D%cw9aZ90TU5-dme-v zc z8xg=>OzJxz^d*!tLd_+9fTxP(4GuMWtm zcdbfyVg;E`!c2p1(NuX zclVNKlW7`@18Eh*X;c|PNr}XP|5x2)yMo7Hl^mlVGrx%GGf=Dh=Gujk2SaX$5{C#D z6O^V2K4Q!)VP#oiew8HUZ21ZuT9 z-F+i@QC)Yu(SSB75IKbmP86K#UcJJVnrUR?dB?FX@UG2&Ai4DiB>q(BeIc$tB&*_K9DoCkS6Slw|Krqs2rzt)r+xWSpj(8OU6y%(iC_N<@Fn z9&8fMyM#!$M@kjHZM3SwXo_nk%>u`E=5MXr)SC2h5;EIO|7lp!rKKHQTk=uC>88wQ zVPsnt&h}Hw{y@sf&r?WZCVmcR9((xghH+E>KHKKW?figM^$Z+I z@7nN%nRuJts*qS3o&_^@+D(xQn5Rmdd!^L36!gFb?G#35R?Yq9irYGx-}L7pntGb&r+X+2&p30MQ`{)`xvccy2lE#jfYAMRIIK=^twqR*5-Tn`O zQLNSXc<@L5k4FFi;QQZx(*L9}Cab>xXpD$o+P*_MqD(~&4ajU`Q_A(5O)Uu>&Dybe z3)^eIVT1(`DIxU$XJg)8c5Kn$A{L35j7u3nsh?giLyvCRhPwQsirov;s-pMHF*23= zA8yL-dzQ|6E&8e2G96(QbC~*ig$tlZDbhFsB`J((P1{mv6EM#6>BmOQfBD2w9^7PS zO}YKB&A-<(U!LJIj?`@jWV#+if6|cV>Bn*72E{K{Huwk_hup>jh3X8+7U}4;!e|j$ zByCTVYmq#z_CA~)9XRon=Y{EHU^<8}7^Qxs#rhasc1$BU4?j(L#n3Ru%R4@mBndxs zCIOV0gJ&~tQ%EGag5t(MbzD70#{={%!tKv49N@ZoTEv>V_mH@@s+hjprb9$uzElgK zOw#?HgO1in){eI{FNuDDf-)FLO!SC|a#j>Dz}74#dFdV|ltv$d3K<+ZFMz=PgRM}n z+>(gN{V1mGCO|R5>1f4jX>g6k1NS6#}rn*#T0y}^ES zm=!kxD;JIWgbO#9Ad0y~!w@f9%Xl<>WXS?pZLe-`e@}F6^}%a**iv`8KO<6NU8tF~ zz9AchvC9pSk?syz_J z6?Qi{{Z9}XUwrz0ah};oa?r`{GUN?rd*A;(=NYhSeQfZOC5;fvF;d-QeYY+9fHr^d$oYr zjDp{USoF){H;_HWi>aNBpq7|Xf^m2#8MKZfUF38K2CbBs$wtJ2qcmNCmQ31Ng8xci z={D5Gbx3@+&bPS6#_A~du?b37N&u)vV-UO#^{PZ6-Yn@8JNNAf`+_#w=8$ae@F+Kb z=8z>JD~)W?q#%Bx10#P9(2M(Yl{sS|DvLsy%R{ggwBrT~Mo~C`ZxMABHKrJvk@n~o z0w-6?E~~!8v>B7qA7Z8nI%@G_A;x~UYp69*`ZhKYsHJ%Xhb?Cf4NH1Q5?y93hw8a} zgxdg-H(YNSb$;$E&=u5U(4))Q(E4E#^(O_~{3DQS&@Ngbi3mOJ77kTo3j@3!P{EbA zYdxkQS5e!}<^nkDtt(qmwziB$)0Bk-(olj zk;Nx&erW4W6u{x0ik5eX^B+Tt76ysg+zT3RhRphv;tRZ?aT zk28U0q37iOi2`#-p1No(&l&sqdfUudbK?7(KO}!7Tmn0z=U49A=M2ngSt6egYt4rv zS;rf_y+KG_d~tK~F2#!y6ep7;_~6YL{d#AqzMmE+&xLwvU|pIBR}9&}lo~YEp)XiL zdZ-<;Fb@Jn?Psf5U0P*>D+KD-R^QM>Kc5b!*uKx{;_0{*ohezg*}2aK9;Z$gUY_3e zKWw}n7u=lOy`OV4eD2&bcDa8I?#*Vd-nELMU{R1PQM_Sd_nA*cVN?&Zct2D@{Jkwf z4r;-y&l+c(IY}uGX7B^|$Tab2TW!U1$-{v*dk2cvK+sKZb1!S;a_qUG?eM1W_;WQ- znX*11`)3!6emM%TAtHO`CT36-^Mn%%V0}N5=hMPn+t89y(o-`R$fm5QiC|po$A|(v zN15E|NGW|Y6YXxGY-#5y+60xe7mmR+fzmU)(dPs-r{BaBEhEknsxG~^0&C3DPiJ10 z_-wbDmCok;^v>6uhNXDI-^)A5P?)CQPi_KR{(9p6R2)x>^xnxu;^jRXD9}2vY9tQPs%j_4pwWt(3XMAS+ ztDUH?kOu8J^!aF(b#NW^hG2l;%e5|+XnLr2^`LIx+B=SJKvqoq!in|{WlAtTI{;>Z zwCS=311bM7H16>^?favkXN2`-zS@jy$G6h@78@c2{>$R?KknpmvK7tjA1lt`j}_TFE|~qI&PZl> zv+#P3criHfpP60>rk7L9}s zZj0{TcC+8F0H0AcsY(T&m`EVswRLh~J4DUIX5$#KuRuA$aBln_d{w8Pb%9^Q!a{Qp zy42(**xj$yY_2=8B;keISzXSHrdsIw&*s>LakZ=gv?-AKsQGCjLE>@~SM6eT1zFB> zl%(i6JPHl0UWxb52a#)Pk&LVrBr0anBoSpUW;v9I`7FwkZop5HIT3Mw1*5AQyzF}H z1c+MyhqHGIvMpNEMANph)88g%8{j_4Oh`C@OH{GrI30J36jBy7kKYM zhogut6O%&wBPU6Wq5aJz`*F28bVnPH^{OuCf8+ZOkKs7!##i&t#T@>{7Ue5htl}_p zZEEWQc^cTp2&0b_@@_m84gF;oj!8tX0gPJzR84VUAQOjAa1bxVJ@~l{hb4>%6&>{B zMv2bFuMm&QF=uk-WmL;p|KoT$QI6ei%)=IiJ5oX@1B{=TuW01`5X0SsbdbZ73~ITl z@>@@sasofyZC1LGUtt=T zKa>BK-ZRbYwC<-zml$2NCxI-36`r8Gxg(r;!=3=n*_?nXY1z`pZ)FTjJ^^}(RXt8Z zSttbJSu?o4q5KXME@Fj2viqxZz<_Cq8Bv^wI6>-}(b99iVb`#(3H_U@qgrsc#R;&+ zx59H=yE_QlUG{}Vq8LR&XSIA#F@|6u0k(x2vyYC0V>&QY@;&_wgc7M;j{HwBXwh8J zLUNz@D}=@LpZ9%k$yOG+#Lew+Oe)?;j1P<;%jKJV26mZT#UZ zN`|4OP{q`QKnb!iT~5Ak_!bmy9cnJ|6uVk={7C)rh`!6evO#!fiKP)F6WNI&41mKH z%LxPse+_%V2J>MmVK-qw(%i{LtT;VP>v7~vir@|P8+qOCz7YkTr=r*TSkpCXndaeK z04%}>`HOvt5owQLC$)y_3_TBbL_t=@7z!u)b11i8?2A%M-K-YOjvgaK_9jY4G9C`a zMP|!uKO?A;v*$g4r-(6rL`}Pm0jdS44Od2iE;ifaf2a5NxVYpDx zO%oq8{yQlJ*i^>-HmeJz9U4QQ2sH*^7G11l|E!(a>u$Wv%~PzfP8DySjUdMDS8T7q z8?WJ+*s5}xb>F6LY;^b)IPu&6a&D};GB6rco`DYZPVQt(u9S_{qZ01wX?leVFr<85%_0#x&6C@MMj9Pq1Y^ulhoAO8Rj(3zgED&x2|c_5-v~7 z8!Pq(lPlKm^ncLFYI+)T?g~HcLhGu&nOKTwa4$s#>t-){fzw4Ur4buPH-DFMDrQ*D zE26yhCuIa1RjHyvf+pHdE=rX+u3YLLn&y{JvwFq7(SAqPPm@M_1)Q;K9ps$YJEu3EG z7G7#r2$~@3>2Q*b-jPB`&gsTmzxig$5m`vLZHNBITrr@1koqmKTaMhE>zU6i10eMx za>Oi?7QB#_o*OCI%{zUW%#ZLjC}aIHk+v>9`+lO1qktg{?=1AjlJ zF{t^Ka~$rrstl)?B;@L$(t6Ji&N_P9llQyeT+poZhi~3oO0Qhvc;qCDmJGC|p}=i! zC0B(qlJ)N*nS?7A#y(xWKPk~w#z3Pbn;ZkE8D%vS6z~EtvFVi_I3G%vSDHFBUfI;{ zw#7-$wPa0RP;+K*Ug*HeD>ocYSlcvH!D9(Ir-@r-NxMKwsX&R?3@Js5_8`}fJYUxR z82mvOOkG%mAo?8NRCj08k&{DGpVO+#@sy&nt#e%23k!HBXAxP$8Wlye3zMxIR$x15k zb+tU6T%;qk$O(&ZL^~&q&jc6!-V3$muhU{uR@6N97oMu?75<%J!9NsK^-*|@-zK){ z$tM3Y6oW&)hR8nHs{7FQna|!1k|cka`fTEzh1s$AyHn`eI-5!F`8+k@8udbilzQ9? z6g<^#RruPrhBTM97Wk#sGRXA_zXwZqTT5F@H=5SObicBOz2a(+HB&lZdcX3%(N{ah zH|Y9q{^ISzi;F$m8TKU5U1Fcy&jA7ZyCs24wqJd^QLKJTRdx^eSDg|ck)#5~FP1_d1|z|ISG2dzPze&V!`iP}oLEtfK-0+NBO}C_)1T;AXQU zjJ)5lUIBn&7E2rx6Cp>U+C zb~dCs)eaR;U!=Pqc=0n?&X@DQs22@0z1`1m!Qn~A=`>}&q&gqlsg{vZZSP#P-Q;aI zo;dQ2!*P>TtZ6TX$S=2OM~M*GI<2g1S6>HAb+@;yn;krb+nceKJ?*<0)5BG;^`|z( zzDYqvV+lY;t{**K?_*knE3-Y>9*pI%kX0rCPi9-17vUM##hu}{Gjf~3fz!{n@f^jq z9|}4ZlX%3~|7u=2ag?O1;B7J6Pzv_}?`w!Z%AhyAeqHYH{$sxSzXVjl9t`evf954R zSO5T=|K_|z$=LC~DgUg0+yM~2u5|4|qa@%qj5d4PoikV_>)@p2nsA;7m|-+ZtZ5s_ zAZFr}B7m7k#^Z(zT@lRo#cN7zX!nq} z6#4l%xajo3Nnjf1&6PH)PCdRP?#7E|#Vg;>NKs5(fH8d7gpoEyh(70$K$fE4luG1! zvgi4lw$_G6+gx5mv>6}j>gSNmgGoaPm)cD)0IACPjzY)FahX{>aGyIdG!!98Lp*uC z0>jIe^8rD%d%oeq&cHu5!YiCyza4XH&o0;*PrOR**)v)rCr22I$q+cumOor{DdL+2 zJc!|&*}q_4W;dcH*Bybz5$7ue?5+JNj&Cgpm{c=RyJ?^m%SUTl%DIdr`TGOfvCA0< z7^x&db<7|+Z?j}RRnFHT!mdEHr$`exoD-QzM$lp+{30b3oWr7L{Uuuv9p{Qc7wy;T zq;QcvH!>-DUf7nCDH3#Cf@sucF2rVoMW2!>5_VLAsMkh8gw_5Ub?P$8D6B@hPivC! zM?y|k$+OM0`V&r2-?MGM@e@qa#6)ysXrs6i3mPrpR55mvqUN@|ls3&%lX*VoOoDLw1o0Uuv z;VNUxM7!LylOa$GUBA=~iPvgxhUIe_)f=LwO&w#|y310331scbwA*B-58z2)0p`|W zE!m2DoRBwymhQe-i=b1F3jps5W#8Wj2-As6vB-Jo_MHgQ4*k=&9zBTGLiG2}Fa)E| zIkOdb!l`rPE_F>HN+C?uplB;$l;D~!!&gzt@&O#i1c`{v=yhWs%PA1$;E^iID}A+l zFOI0?nd;8L2uK&#l?UT+8#6tbaaVF5YQ?wxKTgi?PZt}jMwcr~lr4K!Yi@c0)*6{f*E1ZFo9~MIFd|4 z+NA!}4?V!W)r+3?2OO{Q{9>gBI!D=)`is@#U)>gy&S^4fN&RrQS#{_qx%?{2`vGbbss-islYCYD*WT@ zgQEeqHzJSFf3xxX>d;YI7-lTFW-hOty&K%a1UBN=Nq+O9WGlZvA{QoHH&pR(D5qpc zn`c2+12@NCgbX3*G|=%-_vA z_Hw4%WZZ0_y12W6qU;0@zx*Q_42i{4r)b#jii{HGUJ5H4+@z+p0cM0NOWr^+KJl{7 zHg-@cad6W(to#+0;aIjmf4h*3Hn~b`2W>KNbg)-I>y)odw&fA4^EGPWBXvw{vm`GI z)U6#bWlY5+QBXALs#VLNuHjVr{<6{itroHgr)cZmu<5FqW*cyPg($k;Z39_I%GBn3 z>76&Y%@C4e#x&qhy}|8#`AvVM$qw8Ba|ZZgxBAFBLt;RStx&>YHEf9U!>rwGRj42h zSC9{z+M7?*u>!k^#$9D~8QX4i1;)M?(BIb;w3--?ly*Cwo$s73;JJX)UL!Oc8@u!#%$k0E7mjy#M<$A|iM89aob|EpKPRvV_ooY0KmY(3AOHaIe=~vo z$Qmga+dKcHvHuVNH?=YMFm_OK&^LGbr%j%=yu9oH9fHqwEt@U|b;w^;Kw(I*C@di2 zp18Q0PV3~ksTM>2LEmSV65_3KX4h@+ZP(>p?|AgMJh=^nWp}FJ?KeYz8>e|}I<#OI z0kz{feo9oJ!vIZqQqWwYE-dS$(K1pOu0bAuOE1-joz)egfx=OS(PsZ$QC^#E!%)i8 zVYlUi+$igjIRy%Y5;l$WL)ESJs|=FrEB~Kixb@wWb>_yO(hmw zZ&{vYZGl2d(0_}EK`2ih&*FSdC8*+p5{7L5q#b!WH4SX@WMYO>H8}y;wm;m&+#>Nx zI{AbT7-{(AYcJzGP5Kc+4U#4Xi^muo^Oe-4(Eud~dd6`8!=Vo8O;h*o)C=osz}C}O zR0~VfR^5_Y?3zdc28u{EX+253XB5Oh!CyBgGN zR8M+&4sz=!&Ed$bwLEc8GhiqA6i^Ww;#TGg_!ONYalY3Hgv#qT`C{=mgz*|vQ&Ukg zQ)?x`NbN>oj^|N3SE1`oX2-Qd!|E)YV>=Kw*!uZMNd7rAjBrk%HT*AS$tfKrj9-z9 zY{dq;x%c#5GbJc?HRl?1#k&W`O<~v2kqudBZdjGI&5(M^WF&T*Hc@5R|3Ge3S2U?J zkTrQgRtt%kQu&|TT_1h^T`c{ric4wd1nXF5f+n#GPRS8UQWb1@0)5-s!T76O9`j|Y zLF$LYiKU-*e1*fDY8C(xzMqjk7r?vahukxMz8}lNxBFOEK@5K!?Paa_=n-NOE23}tQ&ez2sZWi z7PUOoT*munfssDvAvHxeeq*(v1z}1xi_Kni$h1CTS(MIzHquT=7nGJMrtqM~i$sCW zGf_85i?tHOO{<`=hZUa5Gv*A`+^aLlGju){(}1?c7XrNL?y3uDy3`ic)n>Hf@dQST zzkKb}3p0wwxZJkjI|=28=+^A0xg`_XYIFU5b-)N98kNah5+c2`EEUeQK6-s`G8yjh zU~#CGTd@(CFLF8oY*L^6#>KqD!S$869%3c(kbh4;tKE^;V5cV3R0b+aKjKv@#Qb!C zEk&ehCtYX={Rv0mNk9>=6%XD6c}Kw71DC<8?~3Qu>$Qi~=s_~tp`jG+U)d8_n6lR# zBVTTb?^;%}3eS;nz}xj_U--W@74n6bFNiCAJ9a?T*DOrFM_rFCFdN7jySy$xzz`v)E}T+fjCF*HcGi{ju&!U5md&>7e?0kIqhQ$=9|Q<&iUt z%}sabvMu#3vWG&1MJ6mSY%U%)rXGlXId zh!mQz|NRjz5b5+8pfPJ+JdI(E^ZA0(C;7QhM=unT9zEfGIe1ab4i6XT=VZWqAxo;9-v19>oC|~M%3}Xp(StwBn)6>Qw>Bq!# zUM#=d!x67g){P5h8MMpsew!lzPubK>YZyd?nqMZ=+M(zE$0Xyeh!HkTy&7nyk80#oE z+ziH>PdPg$Zs_JjO95tgqpU2L&GFt^P6UW}KE{y%0K*R$xwIAW{E|f*TP>DcXCOAxB^}DGOfK% z2B!#O@pRuzdYGidzAQR83?A|*ejB7gQu8ccPfJNmv?7OBg=!D(eLR#e|HF8@>Kkne zyZrjLNeosGlRA=cjR|{wkyaopEZ~?a)@{%6h-%Y%PSfL?$H;To&rD5Qrta*QE3)Ox zH`f-cvt83)o^{8ootM)OBCpxcRC(jsjhg}Pp~Kf2i7Rg^bMJ8_ymt|3WxYR~l0pvU<{W~6wr7xa(&uar*X)4EX3F*A<(SKu+isd^iiN6M*7)VJZz2*)8k~7!F;ikm zC*~J+vy1c5dXtVKj>L_p9h}C(#^nYd``gm}2}|r@;Q-9_i^a{Og}HjBz2e*7{~Y3! z07D}1f0Fz157vtQf0*2*Y)$_QSC(i+N!tZFgq~y72|)AK;?D7NA@mg>;R4EEeul+M z_9n>a!^qKO?+Ayzj4ln<@oWer4otYy&uO=J+RILI`Hvy?Si#xJmaDE9+g!XHG!cL8 z0f%o2?Gcxzh)&ip(ejwZ0&jwW+$)$(d^50)GqUbVpCD+%sKBqwYqB9h#@F51ziJ8J zEOhqP>EDsawRI5!tPxHyDqm8z85 z848R*CaWN)24)P4EbA{gnURvsbl|7}x9B91lTIjs*H0v5)2%g`Snz9C#@`EZyWQy> z_F|y-Ld}rLs(9e$(@9M0gJ8I#yI;O3)CO;*=*@f2K#ri6iq;Z5-!{EyfBcI|-tgzx zUK8pM^-Kc*fcAfW?o5px{;2`D?mRPP1UTzO}7Z9a{zs8N_8l3UfQ1$~%lt+nL zV#Z0D0KNz-BjSMb!ft*nfg}P^(d$4Oan;;F5pqCDcw<#RdK;5?i^wWIH@5-XgV5iu z?KSQU;E+djYK3pFKs@?;g-!SEJur#wo#d!1P-Vvp;R&Ygy`w2)UPxpQ=I@Q;s{_>w zN;m=+i=kh!*@XWr{Ob4JWe`)$A!oo#tvhOh*;A_X3rA85u~L#m5VAdfJtu^2M^Gmi zV#Cq|Ea8i&RZHg|uG*>EA-GW&%Ls(1$B*z^o54-hz{&wrZU@2D)g{ackOLw-g_9s8 z0-_V27(G~>jkWc8EAz$a_4*q7aC<%bCDi}%@w)SHcq_U7eDd(HSpMql<^j_UFEbGs zm{>UPxc>Tg_Ec8%H@xp@-!aJu3^oEoU@Wi@@Ru0KP9zZQHU#;{;?52g-~cJC!Ay|7 zgcE24TK|!2oD5*6;f$1C_ZL@_2(lAivEC@9oZ?X~6K1 zls>%1bLo>sHhTlvqrAtBMwNvdM{I{+CM z3pjsyLm-&b>)V1<0l0(%)ET-w>5@Gdwqn!WVeD*K2fmZSHZD?1p7Uvv#v=vHbD57onf44E%-c5_e2T5svbpbC@?ekA(J1D_}>QzE;Z<>4T{tFZy`ooyj2GsH_!k;_p%r1UP2?eW@!_DASPBP)=(D=bHE%^ zq_GM~o^!w5UXM_r+tXeYXx_49`O2~%*t!vFxaSd_2JF#m zPc+|}fImosBpsJa>+%xFw=o68MwP~)S#N4qP|73}t`AP~DSz=PoY zXr!c>;8b1$C_H%mIHMoj2s$;$>ZpoBg&S%SJ7$mXy_GOx*c11p8Wg3np0gJ;_p zEZ=W8!_&2gmG)!;`l0=C0CGY!b&BUy!q^;(-0ozYU0~ckElk(9?r$~C<@)8&hq_b2 zl;!J!rmC}os)lWGOUhMoO{?BiB_R(=^T|&h5fV8(!_!Y22iMc`BJ>#mQ&;!^M%;jl z=N@BLQ1_UNv|EQs{Ydh;l0}OU8SOvE_E1T&iY{*-aolab&peRDTS0Y!SV&7rUb|i4GS!r zt;x7W@G`(53n;kRy47ev!Zz z(1U>&Q8~aO9moQq>iO@ppMWu!Sl8>_jsm#+o|{;2kjgMfF&1CmQT~ONzH_3OM+C#9 zdstRDR$!qIFMSLarafQKd5;YmSFLy=>@7v`c9}8wLK3l!XB0B|WX}4jF0&atU zW_p0!UUFhMOu>N>zO=8N(rUYBeR3Byblr%?DTBZL3A2RZG*jq0Z79bUORk2|_ycJk z4%^;$0pSrUmv6Mnx- z3gX+V$>WGfT$#;99*{h@r?C+7;K&poi`Thcq7P-(rldRZ88@e}Ew5{k= znO6r9iBW{EA{%Hnc|ybQhCyrGkf%Lq_99JV`iS}9Su9AJ*f|qzn64TDP4}boGDN|h z=geqe62Mgi=iI8n-$FTDv!O69kirOb07mgBRa24IJym64x15(7EpH`89dW@hlm!KL zu2^@>pPZz)Y2C4NXh-b)6lFwL0Uhn6cdSe~m~fgT4mTY3Kq^>qCf*rs0v zShGKd^Zs)Ap4#MCuQ%P#$HoYT z5k+23ZD^u(Q%5bQGKJqf-2e%?z(hFHPY^%G82#mdJrP$_K&z=$pKAxAe`G`Y2Wdml z7a9MLH>9G$Tiw#pb?neyp6qgkj;g^ZJ-{L@`kOK)O>mNdWtR@9f11Xo%2B11}hd~St#4nGVq>Tm5Xa%0qLs*4wu3H-#bWt6Jqb+eusqgL^DDju5=Ep z5wa4aK`Llb9pqj^lEYGHzq(=(Krv|OzY)e!C`Cd$aob~O`*lIvxuB4Mlp%yZ23GRi z;!QwfKkS$54!gVTF9S_0Ii57Lk&N1?QTgE=?Re9&EF-Q=2-*zY=@Rw-EE`s~2v7Cc z6L)9IcQbq|Id@Q&SXPJ#qF>HGT8Lspw(Q#@2)8|-(XW}FA|cDeHGltUxm|}5@eRSM zAM(D4`j(P*7*ky>=4!c1O*#+Cd%&irAv8s~yQ!e#_e zd!7RrZhnhES-4n%nN0*p&63(Z{(+i0b=j-@gfr3d!6~0Csc)jiE0Izl!D@u;~iZcsrccnH*m@SL5t?3!%;9qji zVwZ5rp$9Hy9zTS(EH7Z3#jO^7_Lx|)BZfCPr8rVVtvsYumRi3dG#X)tJ=04=2U$sN zE8f$#@;Vw;SxXps1!0} zI*w2$FkLw8lRfYP&q1uy#{h@i!8!OKzwJ)>E{^SkF8Uf81|O>Y-cl!F+51GYv`FiT zlOl`W_Zr)Pw-wnavOJwkNy}_HbCAmf#O_9S^#j_cRh{?u3!TuxZny{(BUd&yfLc(q zD23IGj^smKt;6Z^2J;lu8*lXSya29ae*a`WDuy?`KTyba`q~&8D$Z%NrbX$-Jt7I?KFEdX;r$%oxh0k$feYRMP68A} z*TQhOM3wp#5?jGTFtb5gj*?1-bRg8^Va4r6Yk@Z!N~l?Q$QB%mq3ohye5B+KhjqB? zlTrZ2!U^wDgIauE{0}1|*;07`Xvb%Z03AS7C1T>)eUPl;dqSrM(G zHtMDivESPd<>B=za)`?GWHdXwuk{Qa=iBjoW7#3?H;j)=bDj2vp(1e@7d&gVt#0qj zwe$FQlfsh9<&4+6-~%%P>f%pX+KA9Xr)DK=M-yw$^;a7X`4WvVnAo9$7<7S9xznQB z7DN?maOa`GL?Tr+j07oZw&YR`Gi`19GlP+gC zTYGr<730m`>cOr&JoZS`R|LH2t)M+WJ+EDiPWhQ5Gw}E-!O2O(=ISmrWwd708gs4T zNTfv+_!7+=rX9a7Z$a3KaLRu*)wQFgVylM+47~-4182}xTf7>31D7Zjmz$>;hhPOt z5p*R^lET5tRe9v7O%ua+;@+XJ4hInndL0tGjwZKt(K`q6G+YbvK47j zSsw^iP!)B2N_m-rMpw@B>EI82-$RR)%VX^C;a`j@ho7RN=CFh=w&mD$-MMI zXfhPh67dUpY|9Ep`sSHJ;7BQUDL}6w>q!!hPPNQ=! z#Evr&^c+O-0djD8)Wav!SEYMJ^|sI@bkHrN#P?ocnyq z4*uJ>3#a28+G?=iOBGqg?351tdFm=xsl5RatQi^{&YfDoB$ci_AX`VqsBV za*!Wp2Zx0{QEcg6o;c}UF1tifJSmq1p^dDV!N(lRS*zdv&| z%~q!?_XyD>naz}*As{gXdt7fK-l_0R%PX!eXio2V)u!Jd!$V?(E7a=x9s?)DBV z=kHm0zxPTxEPt8x5R8hhmI6VTK3rm^)Gld}}NW zwqM^$1=T5vIYH&m6LzLGMvdj9UcnzgV4mr4@jfvv=SAbgyB02*Iy_uQ2caDtC*{*S z>?1^tTd1Q9Mv2kf0wuPHcdP(q+B-n!Yd34WBaV#xEx{TOFDj`3*Avm46aBtbx7$+c zuf{Q)O^n~}5T_{kJ=xXse%GX*LpjU1>(lGu3dKiVSp5a@3&&2~no8Y3i5M|=dJ$$l zVQR8^qC&eblyP?O0P&=~#tgj75pTVU=#aT_i|LX?A0%6@Hc_~^x3$)*P=^0VDDW4C zmhtOLjG@f;V3xXv66Yksb_Pg0?Mtgq`%9veY2_M1F{a(`GfBu~f08^SJ!F*}sFC(p zT&n^=KszbM8DSwxi7g9F$*?>ZGDD!I_bxY+-0_~ISeDxcpsn_o7a-!qv% z_pUw0bdfe2V7TmV%kkq0qw8pc;=~ci4yF9pc`NTC=L>y+|!5 z4Mmv;kv&5`jZyKoj4u)^0@rEn@+BkB;2YGE6XQfZNHsxchuo}V824`>nTOF{hQq1@ z7#{W0(GJ2rtotF%Y3}@Essm^}doO#%c8-l16J2cwkt>cRvf~qz7MOeTKSsda)3aLB zeO;}NGF!fGF!9^%8BQnK4ByqPn+lybpX;W&$cgB^U)+`&Y?cAcOgh+e$xZdwaOT5r zn6fWGq{uQzR;WdNf>EQ7)!j8!S?=H1)zLBuWkr7<3Rw|Oc4e4p>dFio$@`Op>aCkM zLOq)GyA!|1kOetzw z991WU)ek<|N7wGtwnXEoL}{9FyM(bll|ASzk00!4Tdn;(ErqOlv*ct|Tcdiw(tR?e z>Ak@`#rX9Niu=8U?&h`jhW?KQ#Q(`6|DO(mL=ETLysfwrl=+(eqZv3AKK z4h#f=+nJWYPz%HIzmoi+j)Sg1?G`3fsF19_z*60YWo7%0F}`S@w)?qOP=h8y$@Jh( z?%j{*ar0*Enm>Fgo99~1E-~9Rcg+`6QPZ)9YS<-(jEx1)!8Qtv3aTyrNKGKQo$u5B z_F?aR^SV-Sk7_YMvq|@Fw+k|<{>#1rr8$c}V5?Ngu8`k8%qfO6ip3<9zt8wugeq#7 zL<*_V*rj8ZH~>ZVp55-LCQ{(L#)nJpHvT#9{4dM0mEU0yIe~v$q^l)2|BmZrSC^R zT@icu24Vj3Dx8HR`J3?@*5F#YjwFyS%6o7&c+(`w;={@9b%wFl zaQ!k!G<@1f+3jcS!Hc_o@Gm4c{Zz2Mq91hF!q4{cf2#2CpV#uYn60CejlQ+d2L;k&a*bwX$pCXnzt817f-l}&vzibS<&uf~Zd;T>Mh+#7 zwuR#E)^mC}x1%KxDtbOh*r*|7x$By4ODh>KDMJ=jYFE~hXkm$9q;dWag2fKnF3-!3 z01@+j6?T@mor13kulOS9cq+i>d3my|#%;CI>2v7fwNAq=K0_^#R$3DmFio zemO8>1(f$w$#))+^3++MAD_bgdQtukAn6W=xifY_{GGUo-(c;q@$+>z{%CFjL^Xyg z$wG!fwuZy%2p1|ZttY}~T3YTR6`*|GlyO8<`s`)_f37o$Q^#;t`57gY6X@*Xm!S1} z&R7$Yg-)cQAeStWyQH2&A{ktNCC|sdoc|@19fU<0#yQmF4gPpraF-*?+P^{3NnL6c zOX&r3#E88AMo{AoGNopU-x~Z&pXmVj`i?W__Dm6jz(8awb3;`WdUNAP?g z+eo$-`1UV8h)}fPCgML*l)rv_5XJuOh%Ij8J8DdJ6rswSoFCuYYcgoahdQ``;AI!C9sfKnRm*o6`QE zrTyY3B&3DyNH#1koq!_Ij3dq3U6Z=%#3$J~q z>4md@Y=CBa)U6QGGApmOj}?9L;{F!g#5fU{ww_ll9mmxpIRivh>29_*?Q1fLtlJ)D zfX(UV-h>`(6M(Qy@*@Ks+a`)Iqby1@QB*hqi4IIE-~2-e^?6vM1uNKtVo)q9g+-YT zyEHDy&+}D>Jf%sH+u8-|%+X2kWk-jQ0b8FgFdG0C2m#s55otwKv<~{aL+1GX@9MTH zja`>=hzRd&}Ka8v2A@LzL$d6eMb9ZQvQHj@+L8&dg zWSD?_2e{@S$;xxz`UQ`xDf;p+gdDRCJJ9?YCcK|qgnCt7wY#^r>q_9ssH2AloReQ} zy&DB(>nrZtRjaO*(kWZ3KWwKI!E%Fy> z$|PxOiGI6M&c6S(t)!`}@V133yVeaoN@b=T@o0PwcGBXlsOt5?SMjSR-@Sxo!4{``Yf3*L?pgi<{YUx!zeq}P z=Rt>)KUrMpr`neIx8t_7v9+y(yPUDUrLv>G>3@^VtrLEfE$LuFuD?*ZK*Er%AYCTc zYEG7bXqNO>hRbPS)Jv?HW6Z>y7z;;yf0L}6gDatnqr9HEQ)GLYpQAx7L_4H;xQI9o zc}IRd%|2`Ef zd_FLMCOmBR7MjF$X(L)TMRiyzSTo5+-v@$_IKi=~zZ5kzc)%HbUoW%Uuw_v%8HKVa zW!Ls&1GNZL#uHW=ZVvL1hhxphWDyt-bcZiYvipF=5S8xpjcQ>dmAXA(2gICJz>sv~ zVQmpHeZf8*#LyaUzjQF~?TT0g1Z$XBAzL%3$Wr8<0IQ9J{o_rIxiFXpYt8Q6t9?q{ z^=Ftdv?6?Gw^F*eBJ^yG1|EU7( zR?@efr$hM6(X|&#Opzfm4zsl~q+BbqMj-&(jw2mzCk|ObU!AG|dcV%fZnErD@e2x5 zYL~d$@_gPRA+ufU2nI4HqAr=zB>BwNZ90*O6|GG)a!Be!^r}b>RA7eiY8mjzL-LBI zBNBvF_LB8MMm5p;b*9K3VA&8HK%tzB6tZ(*nF9Ykjl&|GvcD?lEzS~2m2WL~)9o32zw&%_cKP>xJrV$w`Ax$u4H`Tc3ivR480cth z`6K9&^Q=mUl(Jw;JOLwr_7+^$|Xv^i4?dB4y1Cq zY?L-nyQNeAkK?R;VQ_5HpmW-YkV$+a9|3pW=TtwnOKls!Ij(ZyEu0E#ZIq~H!_t8$ zke9IYu0evQJ^`7kvvQnGm8_3Ey zX{6E$5ZK9n88D+3HJ)PFys#d^+RUQtl9nQNh`cl15~s!wIzGZ_cWntgkKsNJhqlg2 z0d+dToZ1C!AS_RSx8;U4dnXxvUWKM@1=-R{apiWJMeOrY1G zf?5s<8h#0pN|6g3U}W>Ty+eIRh~XAX;ZUT;CiNEdjoLjV=L}kXu!{zdb}4SoLiXc) zLEkr8&s^e6Wgx1TSq%7Ob3~)-B*Q$YHvTpeNt#8ZdD)7gW|Yu3B~v@W8YVk_XX_*q zHg_%b`PU6Y%^GN~%!=9(;kpW2&6x$*sRh`;29hR`!pFO+>XAzn>;~IBOL_5&)g7KE z@18HW*TZ*XzldM$@-Uu<`AqzBvy3TqtQ%q?FP>-FBJO2TUabFrR25@8YyUp`kEmJz z8vmbBmGywxVas!tdV>$rK2!tcT|Ck31Agt(+KOkZb)9S3DA>4`eUeWI$eF)57Qf?34*kUB_HykyQEVg3~Q0zjYQUDl_MI|K!&0dX+|^yzgoO#h#| zL?;Qd(zUfR(gy$E|GK176BJCPfp~TK?n6CSpS3-KOYSzJ+}y1p9K5_+m1FxU{7jSL`)S#g_)V7 z&L!}oaIO6TXA=kZa~kO-<Gunh+EBNE$_)+ubk*4q9z-q*yZK2m+>UnVT26HC|; zGr~$H`hvXEKhV2Rqw32MjC>%@By1kSYfB|YS(|FgF{_ZAw06d7sxC33+Lamvf|+|; z-myv#)lJclt;d~->isj@aoB}=OlXt`a$zIW-l0DX=*NAPA;e7*mDT~j6sk<0$b=s# z^Vp!^Z4A@PVnyaSGY7_kk1e`sMi11jK@~%}H5K`ZM zGp~RJ&v2tm_mg^3iL&q-y=ch=_rQJV6im5DTLhms#>c}hmJ!iN1j1{gp+1CY@^O-J zrgEr5GGB8PWEv@!AF5PHsuddKPfw%Z@M|S2N*l==dXU;v!HkWmi+ZYCp3xSz@ZX}SQcao z@UkasmG1^k-uC(*D3$fjl|~pu+QZu<^&Fofo7N(9*l4zOp2@GOEo&mNqnMpDExvIw z?{&;OF$ppkU%v@fW}(^+QSHE?09Ev@ICxkd`*t;&_g=9)_oMi{A>7U?tFwFc}(DTg`pzORR z2-&Qpty1@ZY_>FiT>wga`F(@YEeRX6y0#cB*3s64JJMT-a=dBP^&JASCpBjl=ckLO z#km%dqwx17U>D)|CZ6{%}r zZO;G7>ku}B^U+3REE>J4;u{fe;F5b@+@0Mgj?>%An@>)WV4FzRC zSz5(eTg*AtSVd_pLrhwM?ir(b-IuHLBp-)j)L%30sqIOw1=-Ofv*JBCc-xYr%_`zx ztIz3tV_rkJcft=R4;AA(75LFB)CikLWm{(3@RfJxhi07XBpAf{wm^q9bJ8O@$5&oU zsyyEg@CW8P^?#Xbb1NXC1+voD)&*Ts!HVHcA;TB0kSpQ?_U^**dzSj{&~KB4J|NQE ze}-F~GvO=x^}VG%Gk+bYnV|t;v|xy?+xZ4~I)jH#fHt|GGS4B)nfqav`E!l>!rUI) zTVtDP2lrGTz=Ng95hp$OZ)$Q_ed*O%cgHWFaqQBpraEjMbU1vcvBZ!OOM308xOW(QQscFWW4(p z^|1E%$}>R{k(>nu;F;hw(tn9v%2-G946Ela1gc_Ec z>%*+_3V(oCGW76M^iK`Z2*F!5%d5TZMR?wzXu6n4Uv}v6#ZIF)$Ha|;q6{59$XdJD zG$E`6uR0ptbmL$%d*s^-vnGS8o^&6D1^8Vx#IL+rUl_fq3Tz6=Y_OjI85N$!%uiUt zPnV05x{O2wV2ZUw`}I~Goe%3I+O#`NK6M*v#}m)v@>7nc6P99x<9`_X0VnEVCFMva znv}6E6ez^AH<6Ub8K|0Ab~erC$~w;IQAn&QNyuKjO_rV81=a zc7Fd1I^ebX~OF0#1%xf-vuN-zZ$CKCvMQe9m`b6;f9 z?el&Lobx#WwqNJznr2uKIIHG!+Ga7L54=>8H*~K@TpdL(t@hSJkPAAB_LG#xX&3#m z@^)48Ks@SQjL#|(z2AymA_RwMZBFUn`~wv*sS2ZAn!2n%WIRh^Q(PmR?+-`~;-$K& z7L~!OF8K8>I~i5wE_a}D0?R7`yPZ`}q`MT#HtN{D3d&XDfY6@+{s!`tsUxg z%pUrfc-Ho8^pfUDvuz(aQ34Ue8f$!MH*~0+#9fjKABI^Ue9ODOcMcC&_!)gF3=r#| zzsk!Pu9(V3_I$M4vqhB;Tf*MOSm?AxBT&e027uVMKiR%%*`rdTSTIkEI3uekoF?apEs< zk`%BCKWV0NT9d8$=jChYx;dv6FqD=gW0kS%5OKfY%^f;k9U{xMjWh0qck7?5I6H*e z7beLvcOlyF!Q&W*-`0xl3#AIq&xeL3^$dz=l#Q0n%frbz*f8kfe&9Coy=1}sO#$yA z+iK5f`=ptyf>h8>f!)!v9Z_1nh zyePrZ7pWfYATFgTi0R`E$6Q5aNQP* z-m{!S+Yje{7|6!1@Q=^XF@)aA_8vZ$QCq#)@&$kKh0}}i%CSVw7saZ3SksMh1Vzu# zH<~T*yiqM~KW+^vD&g!jl`1%h9%UVUfo~o=eIv20#g>*6yY-VGY@=WNN1ps>BR>%& z&I!ALw=AZoSB_tt`?}`80K1kBpvE9SFjvqv_`?W#rDqN;wbFpo zT#$|YiEh?XDb9Z)3#e=j36WOK%{h1NkivZwbCZ837$d1@(RHni&2+?*PlKwNi(aLN z>T@|xucnly!N+Aw*bWQ%k5E1Zcl6A$7!F~o_^bAN#~LD;T(iXDMXkE~_Aq%I8L>Yf zmA>tAWUoyq@Y`^F_o;i-fkDr0H!==OL&Ix-Ed;E>KyHv+fvXW(Qn)!xUhz4BS1m2P zEV#`y_rzuIZ2QB(hjB^qJ8hEB$@YX(j+NjsrBL}uuyCgm{Fp<14ZE5c1OLuBd{zUZo>el|V zdoqy>IU5gfig-UuZ83L;Mj0#VI0qc1y+^oD*zuTu{r%p2U&o8hIk)i#)ANn!pZf~( zLaE(0ozA0?D$KraY`Tv=(U=iCZ}i$5XuIjgnA2&+5CDzMb zbe`N*4L+754ju$1T|da{7vGAR7iA!|pSF++P_H@@QB z`eg=Amcy{V+i<4Q>!Z?}g)8M@jx+8Q&>3^t)J?e(Zvr`TM&Q4p-)nn~{!DUeap-_d zvsaow&o_-K#tW;AP!BEA$qzUVpgv^S+U1X&k`Lr}Aa( z(b;X9#~p*{(oq5tvXZ)TX6^a!rbI09>XPgPQNz+i+{!TwpF1;q> zji!51e)~k~c-49++FvpV`6SjARx3oB^vDK+^wl&;)rS(4rL9d*Sjo9$Q+dY~ zLLt@gFSHADR)JO3Xcgm&^oz7W`)X|tBy+QCR zgR{5JL1Z3u?f;%~Tk32kMnT-wi-F0vKzp+ay3@pPoink#C|aP-*7tT1onNbkL;Xxu ztOPr30$XmLQ?qTfa0u-Z@nlEr29$k5h0NJdw|7sVJ=|G*)=i1R_BU_ma_Xm!O)WoT zn$t`$;pR&(b4X>xVLRaAeY&ARGgvNw=f{d*5eaIH!-#n#%IFzQGLC;NuzN*ezMQ`$ zgb2uaA5hB+a#;tm+x)%4j8f9DpZ(*8QFmg5{2LmdeHL$08_Swqa47}RgrE0U5-_w_ z&|K7K5mMYhahwizo zz7vTtkMYD3C;!6vP|i!)@QS(dZ{B0U?IOA%4Vv8%^Z*=~)@Mw(DQi;-B&xN$hX+2cjV2P-wq2_Ob*qF80boA`f1wRrv9)s5nfTF8OPGx0kS5;;Kg{Q{yy;vA0o#Eh65` zeATwB-+pDe-s9O==#}T_!2QOlJ^^3cUf*ZxXv`5Uge)S~q;lZ#ZR>Iembx9Sv!j(( zmY$s*yU=G%t7`N}bnS~CCS=Qjsm)g6x(ALtjmQQ~D)dOk4NQW_B^1^B_ghT7Z+E!e zyt~tESEAV<54J2lofdPP&-6&(=aV&2$W@M8_vnCTKiQFLtKlk+p(JceEq1j*Te!&^ z^zeK~yQ{&1I>rWWV)eu*W85q}VmRVM{z%;6OsXCzpd>DKVEu0M4`dhy9;0L3XqfAvL?X~p{}csKy-qSk_D;Jba`xD=PR2Hd_vibs|V9h`@27w33ZQSW4I zs@4->nWbgc&6zG_UsbtRFmzU=ID4`rL)IWVKk+$s+p6o(S1gl^*y-feOv|BHRn`jz zy=^4E1A6nSCu}cs7mlf-w*?Dcpl%_HDg_h24Jh(dS@q31nn2I}$n7G+ z+UAioO>e=d>6>USS?6{9qR-6ZU zg$?cWK?2GAQaUB&QzJQaQId>@;=A?F6%{1iLY{;O`<;-C`@Qj`c&{u9{e+5`#UI&* zZ>H=^DkcYyIKfjXRErXo2M-y()9Q77xf`|^WC1PWM$mowU15NcJ7!3?@%R~0K}kNX z_*231aB4bcv_$?+^e(KL`PfjT)Yvb&*vEQ?ds7je1LU5N$Y;gsuHWPg{p zmSsr_+tHgRqSjx{=gS^biEm}|BE8S?EsBoeiqd4j$UuAZorT%KGHW zErZ&jWb<0s5C&JfojpIdd)!al#Vi-On(bRNylNXWzn5VHOxhIYboy>U?)ZjTP&{qG z?$&hg_ZEQ@710XPI99O;1`@MbMrRwlD)>B1O+rjc*Q1 z=CrN-vR|dCb6g^k2fn8zuo!>*5>#zyRgpd!?uRTcHi*>^WR{mw?WhUO^q4eV;kO9e zbEPuQcoT-s8NHk!b??R=N?my`=}7rpF($Rfm?(D#zoFhBHuzcp=LR@yWU>&PKA3%M zQp45$m0O&)mX9M7_Bp?0p6%$tyt(ga8RsD*ETR4R4gvW`y+QxOQM07B%`@&*8>z2} zBuvx|N+T0!A^R?NXPXWltP@z@9oG4gVfE2%q$d*>gPl$k`ses!Zz?8W;tkr;Ha&ad zAM)7(`dC#ZtLv`c?i9#yR_GWhHSWc_T?dBvmb;Wd|N1*FrL>91>AGY4^sT-?Mx=v4 z^jJ*54YwujNCrus=+L*k9FKa}YxB(%Hg?OT<=8Spr7k#$s)ko3r!be10$U^a+^zK~ z-Z(6qsY+uQURjj@%O}t>RY0I0c2Bk=yz^V`6|4x7I_cSg zyX^0uw?1Z=NTsh?X*!f=Sv_S7%-~ubRFZyTQF^S8hg0aYkIE~0p1YM;?)a$gTPs2m zr32kOKPqbN1HLHRZ!vW7BlS5ea{Lvaa(P%*EGt<>rO=L@svKl-ra9U znP;CoarHxhJ=th2o@Z;uW6|kY@t&oj8^@3|Hz4}Zs$1|SKS9yqt5BMQ=ttZWx6Gz} z-?CHMPe$&0g{j;$FGM;I4jzS>oD7RPPPS+}jHt+W=-*+6aU^iP5>osQErQMhxKgXY zVcvCf|H^@^K{htpI$+S>2aiGWO+cPKocG!HZO=i|b%_XMocdB;`L!d5-G znQy+X9q?clvvR<-zw*90xxoag9du;l|ne)LOK8KajLFNM}q_!hG{%2!NKFzII>!SI{q zaNvv#hP6^#xvQ!n&+hmsB7)mey~xRTpP)35hR|iBdgrIvQ0zOI7d#9V=hsj8^qOD2 zcM?fzplylKiK3iZcUelCW2l*<@E+x-IGzsVQk{FH&XnOcMVT@l_^Lc%w4Vprgye3_ zxkO|+Z;Becmn%N_%zBT=b9-vOi=|WWlUi(D^Vw6(a_QWS&N0jN8W_Dpf^vuT>__fO5~B*LyT)?nf-zHrtih2@WL_jBA(psKI|G}N+6U@t%yl~_6~KX zZ=-jDcT+2tzNtN@HYurcr?jh~f#T8k#bn1oWzHJT1jQ#*{aFr-PgDs*)8B=1T63vI z+e(ygkGTa%4p=Zx+3w{XBV9hoY9DDGrvbd4&%id!a?Nd6-pIgA8~k^PA2Xf-Iq-xp z4wM<5?t;_MKBXn0!`zSb+I1K3R*GWBG+hlYj=rl};8l;k+SC#$8dK~IbJpuG^NuVz6VuG0 z3xnXR%3(t5TdywFY1A8s2`~Md?!D3#mO~M7vu|HN$w?O-zBi3ejsO>omvSxGHHyyhed-CHV*v^exzeS-Y0HvC_! zQ}1vwu?Qiw(;caMW6}jm)WH=fiRmloAPVus9NsstikO{Xd9^1k(MG7KAR&|Y?C$fS zTav5G+zF)2!3^@e&b{*`#0KQdyi$Bwppet(k$M`dC`Ynn!q0moD8`h#uF6O9*)(WqT$0G3E_jL!{&< zwQ&n49ZLQUNX6xw1@4pIOt8`T^poZ7w9A$o zSQ^S{WI9p4qYW!EQYMGbT_7%xt!c5>6)|3E6>Ok>THifUJ~3r&^ti=K`0!S+rN4~q zOvo#lk8;~~A&L)xVtCW21h9)qg)|7c7Rkie5evj6%{QsIOLQX2IgxAJy{zS^Sl_re z3hbybiLnP5&N-{Zm-1q9{q0hhl|@=iZWzW9_Ga=kmbdEW;4Kl8t#q|_92E06n426m zZtI5B3Li}zB6qzX_RI+hu)++`zzjYvkCkD~3rk1If7mJ2h+6aPTfZt-aEO57nPG_>6wuexQ$e0Qm+(z-ErDlI= zyyn?Nxx27n0oq=0SjTKeeV}D(P(VK(zf!xUIJk*Oj-2D}>p_p$t-6Lq1Dgu_gGnh+PTKv1w9Cv#M zK0Cv>JXrh2fpV%lt`T|@R32%?JLeMQ+{E_D^sxH2AM|dRDS?@`w3i;~D?e#pug~w} z8916}4|}a6OuXW}jt9Qot1vOB$6BjY+R>D>HnM(@7|$H^O-{bXUZoLpvNq#Xbx_y= zE4(!a?<__2jGmry-WL3#7U3goz=o%Sq|1iXrt*PDG7$&~eCuwj^q|S2<;}I(ievDU zw$)102-iBEh(|1~+HK|hTIV+-Qzj2q#xT(5;UNcQrlj zSo^p)wnOJcG!EZ?SDKhqGvXx-bYoET19q`7dq?i|RGqWYt=n`2W<0kW!9m~7*DFiQ z2JbU&AoSS9yBswVpBIo+GHkD?na}fWk2;y0{+}ZL_0=53H5KtiO@QA$m>ZJ(X7&!S zHOzpjQ`c4Of3$b;mw>kQZsGS^y=xU1js++FtgREve zT#FRh_kIu5&8h`lB`%?4gWgE!YM3(Ns%ZX9#*}iy7IZF>;|=Gf59 z<>@le-isWD;J(-Fx&4)L)mnMPl0@N0Qd@ea?g2PJ&Aa}$1cDIjfnUm7-(QkgSVY)bx5y7j1-sK^&sxzOn=(agQ=LYjz3ciW!q9@K4(5I3Sts~fdd;Vu-bzl|D_XX}O zScF0u&KU`3jG3&%V~;Sai^)2TgjQf|KW=WEySULS&?@6atnlGHdaFv^M;z;eDws6$ zsJjcZWsr{ReCMkO8Pa2PRWHTns3<%hJj~$$j<)YaRk72Q;XO*ZJ$3CiXDd*y+d85( z4>?}GM|>SaZ!1aqT?>j;0FE*RMT$&1rb!Ex#B^A=0VWAu;Hy2&)>$^CAliMw;w1h$ zXk6CNXsM$$0x5@mUA*`HuzKI`efesRW<5Jcv7@GjBzF`UNZ4{`c; z__*?jik@X?Sd+AX`3fxZMC!BA-;|53DBj_&!tu~F!(cwy{WNZj;a6bK<;f2F@Lhca z=nP~K-ZIRUgIt)2!FZUVYf;Cxr=gHSwQkBQq1(1eS)9CeWbA$ewuV0gBB(eIP&@gP{6=S+M?SB1W z4=1a+W8COjhJK-P9PM&P;B^09?L59Smkg?n5|Mrnp)#^sfAkj%y)miVQ8i!a63(w2 z>&y*~#*P738#o_ALD5`O*C^T;fvqnEUdmN_tiHD2X;`6XSEIf$Y$e)>)e&e{t*R>S zR6QU@c?OOmq0A;?C+&ctr`AeN(zER(A*Bmd$dKchi}6AYKrP&UIVU(LK~3#>oPsOGVT z=6f+I^`7?%Sia3FGAJ3A-l4WxYLbd34cZKs*O#t_;~WCB#%idLtKJ};i8l2g9*=nT z1-i+rXx7kXGhMYnA7=&&5#NumdFRM#$r9{Y;2Z-*l}4{CwX88;b*xDFIczkj==3e9OKc!ssbfjVr0;d zIs06|AIh{t-i7#4#r&%tJ(GyfXX76C%<|VVpeS~{H zGM&rcF)j&B(x}lh_$$wc7)=W|9H;K@IxU~?-C!n`^2ebZ1>d18P@jJYRo6uzbaMY?vyy=gmBy}+{>!n$ ztnXs3$pc!5K=KN_@SB;?0%h$m86JH)Dg5pe;aaCReWZ&CN&I}`SySIx%|248g2Q-( z`a!affwpo)I||vzgYSt8IaAM!aqm_p2k&B;UN1bYNd!!L?%o4g(n=L~o%N~KLgE_t zpuKpkz^4km$v8^fWl$K8^ic?*#7TG=x^k-`;-{?Wu;+eUqW%}@wAP+y>VLb-IPQQ9}(kxNtRJ^jP96YaMbpwL#IkI{{V^rmhh?> zZBQPi{%1TMoY3ZO8RqQ8lp0-f*oK0c8bTF@6vmsu73z=YWp48l3%qsqJk+g#F$t=+ zK}dNQVx`0ERpUeGLcz)Kayqg+MH7EygB3y~oO&=G5JFlOXr@!Ve^@!~j zdaQ?i&iD;{OF+FpGq}7{ad7zc9$dt%p`x92vlrwsU*rD`&sDXXUTb2XW ztfRObIf$*Dl#=_1=Z}fAOr^59J}sEw5SL2bE7G&486N7Ae-9rUD;n8F^yrR_J%@cL z!$V{6W4P(doZ%L8OtfB3T}0^p7!pd*ZROZ! z{8=7RB&6lug`V9W=-PsGW3mZ1w4-eVe5o)oU+e2?r=w%m@`=&SG4h*82+sLh@d<@L z-O`&PP=kt#>@vSm?-^fQ;rHRoX9mu6)LrL~(MQRF!t$>$?sq|bGBeUUpx%~!Q<}ib zwO2JVnnUmX-01FbW_Nr{D^9R9iypo1cklkL?`kvl-1iZjgFRl{45{QRw8W-fcrP_< zDra32avK)oz04y79Ewu($Q#gBVPU$Y^f-#ysJFKQ`n5uo=sDWH;Cx#S(@6eslTevI z+>gj@oHwjJo^ySQUF$1*5Mhj*JM&8ZoQ0NP2Q+qMq0pI3XW`CSjQ&yE&eXaJ@dl>8 z3X|l=+U4(CJ1tZehIe3HvbObRd}ooXBIq{+F}GrsZ*^ASRJm9$*O?z2Yj7nw_B?0( zH~_7V=LAJwW^j)M|4H1(c}k@v3xwi32R-dW$h?dQ*&EbwVEpz})%sEyrC3o=TuOXAawxlheckhOqi}{ z?5z=wl}J?ABh7tn!~CI%>XW~TomF%G42Ofo!F~6~R3Za6U}0m3Jm@fpz81bT2y=hy z!23=g?W3q?ngCz#B>P~O-)mQxoPh6N$QF8E#WUOYy?(RZU-Lb{-J=Rin}?O(5lK;m zh#j%1CXt(v$1Ey7Ur6L8wohWyyN@-_)egpQI&q68qP^HUd{Qf6pglX#HV*4|b-D6q z)^E@4-de>n%Z0j;kJaK3oN`|8*bt@d){px(!G7wjcJzx4(xNu~otfd5#QtF&9>W`W zL?lUGPETGPEhpPA#5Wl2Rcv7$Amw6i#;Ex9qgPv7VBHmW&k6KO%3;e~G_~8`w7`#P zt}_s!dhLD}2}{UomD_!htPSqFRJ;Y7O1LWc%^;gcjkwduHWS%U65MRz(o#h^W$d7t zl0-3svEl7>oB~Z$qHe&e38;H~G@v70GKSQM<1C*CG-97`?B#ix zkRNyAmmF(y6#FEx=+IA<>a|yo5cBY0xAommee|qTc7W{3DC(Vu)Cd$RNjmt0>U3Od z=pGfsCVs_{HLImPFuZLo%UolR>%jf)6vyH(SHH)7i&KAT)` zyF^$}ToH@{z3v9H7r*Y2HdF=!`1R1^g0dHQVWDEk?=j|7_P7QkE7hO|p;V`M_ZLIm zwk&4F(@oP{M$jWWkGZ5i_UDJwW^I)`#yt+;Z(zQWkyK}mn%$g*QzD4n~RIT-36Mvu2HIGbhi6qi|EG~j*I zt&LJwZPhR@igM3zY`kW@M`C&!cgF`uRhjbA^#op=NZL7Uek>BBl=^Uf&&15`xx5v2 z@nn2>8WaX%q^YJ1v1=z~s6`6KWSd&b(fYvL&9cXo>O>@WBy&v9iV(;@wbnmBNmcWB zMx^N+K-PC8nJkah@}*0RyyHspd}Z<+wl^PjUBKe!t5=b06G-I}Zoi z=5Y7>x=1FD8^wiNAmb^gRO4^vubj_;V_In7m;w>%;%D^`tn$Zy{P`CS;4J+3q5b)9 zc@S7n8)QObYHnr@HaDPQ(bZ>XWYz!wqY{5L_v3jnCGlXs4m}hUb1W1T>7UI3*A#)@ z6X4J9niF`+CnX{zAuU2{s;8)M3kup%lF8ubm;Pvadw1`K4e;$`z_Id!OHHo=z~413 zAu1pwB`@^bR@JB1QHtP!d*IkmP(+tn&1Cw0t8zkof|5f2^tGeywbbN5tv0JN=wOH;eAa)0|Nbu7Re@LQnrPAn z&|AQ4b6i44iCwRMg4#A91tU|CsHv |w(>Jp8M?LF-|K5I{57Qv&Pv5>H9;dORU3 ztG}b$SD+ga!b9S>p`3E2yy{DVio;t# zVU~**=RYU=7z`;|1O(Rq^HJ0F`u$-6W>OuHG-E(LNnV2Avw;|HZf*bu34qOQ^?s2%D{f`clVL5@>!m+u1^4BGz_fV%VG>y_22mNj@Ez+ zavk>WdQKuduy)sgwR>>^@Mqtp>LFyCT3TF(_?|f3a|G}%@gH98ZB+|oM1CuCd%!mo zFgLR{2ZOG|=D|-Z9RL;&DLNDs_odz*^+CwC)z=68ZN=5Avzx6g^I0B{EKf`*DBep< z+EK`u|7Xl!r>l}dg|&%*P_qI0@#5jo&xu`{f)HzNt7|C8e;p{O-odv9kfytUVRu=Y zR%RfC+UoqvjQ*;WF6v7D_+2>DaLbSqt-!z6Om)M{MWn!R8UQnS*{Rk1PaNRf`X4

vXw~D(*oH&|N4%17D_keTR(t zm)Cn8DrM*=?pQ#c^6p)oV-INP-$n*6!d8C;g8rn?{Ym}d@m>d=w1`%~1#}qimyOm3 z0Ydae>;!Oru0vJY^qzeQNY)IXA}+g}WGIkPg|)$89c^8c-xhnns)Y~aDO#rhY(MT* z&5wTvLbMSW2;cm3cYoDQe`&)X2GesKNSS6pMN(@4Ao;L0NbmPrivA_GKpNoF_XC5h zdP(WO``?IsK*nRcKQxFuU{=|H3>>fL=@02Y+Q62tFYO21p8!f3-{Bg!QGZn8L-0;P_EiU>5LFU!61;u zQ*(2Z>tLO^D-4JM>>~hsSl&V!8ep_jfwLyAOZ_Dff{P=E|7Dy*QOaGl|G+r>)F1(1&c+5jC zZqFDP09+qHA7AFSszb&F3^F00R)G=dTHFV%!Vg{ps}lzBn=ZS>5n2#)fl%pn`Z}5O z3gsKn*Z5y7&|rOtnSX>yuS4CnU$fT+s1E^q?Vb^hUNfxtOnoVS2pU)B_ZHW2cE1ca|MxzFv*NEQGwHUVN;mqVj?j*vm608`fv zbTP&MX6gShqEO^+p85dZg}^T-D<*Cbl0o)zAi!I{PJfFc4RbCMH(LM$eOZ{5d?BQo zn_p{}OAs~jlm~V>j$gL&7eFq`-`!>TJC9Y$_IiS>8!5Mp4UBC0FDGS8FCimJ+X0C# zfuq^$jI3P@s>%egw^CDFRm4SMkWm4H7=rlZ4W&4p9-z0HzZm1&2@rCBWUIeUXB{8Y z7ajv*Q~+qH%l0X0#(#oBY@d2`tHx#lV$}(B{jz-;n)Sba!N1$5RzxS@1YimI1G?(* zCDSb<7ec!Azr+Q8Xp1iA=13a=7WLq&8WEK>r8XF$oL;=_qqYOzHCRi zRzXIU1L+xE%dSv;mk@kmFWv|2nag(@`0M`zQpQ$C-u7DYyet)J@0);*QuxJCJ$?rv z*!&{UbgcnCJ4?~V1T4l`Ae?u3`_TooG$hJV&fEsrfPl*c!2WZcsYPjIfQtsYy93y7 zm;KtAUdYJu+NMCP_yuK%g#DKMzAl1)1rISQ+X4b6Mu>HVYW6i`qT(f}+NFy7U5 z+A;SZI{43H`a>aUMRjl)0`epO%bD`h>VH52S?3I|8IgH1WkFI34Dt!xRnMbl8$vR0 z;|g@G<6bnPifTSUD-8m>&1HSxe+nVf@>*&z`7C$i6`=1!2(Nb13b=&~k;vLufwWDp zGo=aah*q$`lqv$DuFI+ygajee-bml(`lj&UQdHqs1u6R9&(D8VN356BQQE!#!c^3=_`OP+33PKe0y^jb>@t^k z7%1HT4AZla|6}R=qf&ZW>9*Jctd}sr48I(38p8jNc^KUo0e{6jU(7u6$K)1($W%bwn0bmw@ zpW&11fq_ulHFoum)2`XKz^w>HRVb*xZjS%peBrw`2RH-#%_{v>8T|$MVH+(!yB_5K zZutLR30N<%-D3tR`p?z;yNW(n(N{~#{6tq<{73Zf3d~$ZUoCC& z6P<4bG5X&Nom|CVElcndZ*C7M{j)|Iw@K}@xiO>v92cO0-Vo3Uex}ugs!IM`q>wANZS9~L|s4o@`H6X)z44X%ZTgs z<=4bNGUB%YgB=RW8~BG9c&l2G1Or75_2 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-3f03c748e5fc44451f326e397d84bdda.zip b/vendor/composer/tmp-3f03c748e5fc44451f326e397d84bdda.zip new file mode 100644 index 0000000000000000000000000000000000000000..868b92de6baf4371df332b47190d2bd5385dd64f GIT binary patch literal 3351 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 U4)w;U!##aGvDz58nzpLepN{N8<^TWy literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-6035caee003b977efbee6d168b1d39d6.zip b/vendor/composer/tmp-6035caee003b977efbee6d168b1d39d6.zip new file mode 100644 index 0000000000000000000000000000000000000000..491e879d15c4369f4f2888b3f2b35f206f17f655 GIT binary patch literal 18831 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 k#h8Vjj*iiYU0<{9 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-868cb9b266141e3de46d548426dbc528.zip b/vendor/composer/tmp-868cb9b266141e3de46d548426dbc528.zip new file mode 100644 index 0000000000000000000000000000000000000000..7f5752ba09ce6d125d7279946a87edb47bf39b0b GIT binary patch literal 3573 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 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-94532157512dc59bf8b610437634e2a4.zip b/vendor/composer/tmp-94532157512dc59bf8b610437634e2a4.zip new file mode 100644 index 0000000000000000000000000000000000000000..8031fbb11ccb1a55ef8bdbb4cc52114bcc576e5a GIT binary patch literal 105394 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%0AWS|tuh+`AHBn8H0 zG~~f;IQs*)()wI3nrIXrsQyDcxzG&i1IW9D-tfopMM?O?IYub!L{~`z2 zwv+t>vqOfm4+CZrP!z6b2Y8XrOKQHWo;H|0XO##5>aZ=ICY$+9ClDSS3B-a)aF>n* zL7wym$0*GDg&M%7s0+&~90?{rsv{jd251bMc7Xxzxz8QG1s463xIL{eqt1~#_J?Ls z&~rTn`(y#?UoH=6g>%;21PFr3NxEeP&KXmU=v&ha&2H_$X}(Gf>23@su3g5(mV}E< zvpcvVtu#H{g=l14MH7%&EYt`R_D+hSt$~HrCi)}(xxJCuqK|!j?hWW@VMlR@pe$+ z+*=~&U-3%|N?Vn>$42QER$eVGKmcU_u0Lpj_1dJsZW8)AEsSSuu-Z!o6~uJkXbkoR zn1fz3!6jZznu*=yJmr~rt$csEt7!KADxn;z3OycjZJLOp@RK@qs}X^R)z`)V7Vb-t z>e=3S?9mW*FytV5-)~5jZMV#FaMZ#mxLw z);DR6Bx{2QB!0Yz#GqTPNnutp2Q8;q@{{}qiEW;DN*OP0gyIR==N@LMIPQ$i>bD6- zH%@Ef4L}BH*Yrr52G0M}zsB(+h(;S%lDF5q#z^L)Tq))Bqm1L;M3wL+@+KPx*)l7;+U}sNh!Aym#!iy zM3J?SKz2>Z%akE`o_JyWgnBl)qEsw&g64>pA6~K^IE|YRN;!>O8jwV%3bX)upj=lL z9xIKA!h{Sq@G4E`I4#jh-f*4{A8L#-!6GkWI_W#p)q_ObZpV^}ulzoKL|ZE;?jy@3M6C3@%H7w3-x#z#~@BMnV-7?)b4s zBLh@%EtI}C!(hM-{b&ZjxqYz_h-w6CvB_85whZCD`C7mn&Wlw?7$o2;{B@tZ5s$%u ze>U;D5(~8kg5|3C74A)Ph_V4RMcSxFz6QsPy0>Z>=m`dm%xsR+HNS=2+YydwQB5R6 zr?ffI6a>71TA8K|p|(b6TDf39?JNfp027$uVinTb6?D)*T;DH)1G~-XiX#Q9lB9_; z`inidVcN7}0jqg*)a{lz`csFmby~y2^DO~7;s$qQie4=HsYGp3VSIgzx{gdgHP>@G$LOb^ zHC;8yJyb>Aa}GbdwWH?*+z-`HPE|DM!_+?UqO()Oppr?z0KGRilhHJ08m<& zT1STvhOl>}V+Ss4ALV3XYP6=Qa#)!-mBjg92a9u-mj^) zlM(({(S!UGalAI|W}dO>KxVG!@Xj*>C6?*6MErw9e+*?2eQNOYf((qtu`Yl+>5yDI zjOE#p<8s{f5M-?hFSl+k9&hy++KLWs(``0?HzD+2akX*3cKPnDWCXJQ9Oml-ZEWbtRW;5TcOn(*ED@yXx9zW6%Qzs`Yftdyq@&l{iFoB=HeE7#eV+U3p z|I~ox*f`&<_nlsV!Q{8)gJm%Ur4M-bqHLLmT=rXBeyyp>qG&%k{B@k!mz60YHEGnC zIUAlMo4e}l0pzrSiREw2B;toIy5>jLsf9gs#I{#8f}18~LJ^q!M&pXly93p1AZa#1Y08Gomdi<}eUd1O?#boCU=kGR8t zvv#zmfy4CpEz+afRbVug;i+OD0MCi0%Tt}v$y;+?%V@OL3|87*bA7d{d$US6%OKi1 z7l2?rh(^jP)7}0R z8@bc37QkQK!{Z+QUlJkHIF7g#MIq2_zHFit_fgfqEl}nBW@a4~=Ihnoo2?f>(>*)| z*)%BhIrB|GvB?|m*v!~%<-GWHf@C=ON!gL@Mw%yX_^h@TzAvz#TVdsA(28z0ZG*3# z4?sEz+ge%=Cg##2I|%12`WD#Fd|$At)h;OCUjQO|uT4f|m)!YjUftEFjfo5j{1ku5%` z;UiOho34tl4Y@OG&TW49$i=7~8!f~y5)4-=24|<-h3=I{Q~ZvD-gDgW(67FCJkc3n z9FiO?;1tGTW!Mu;kh&8twy^;ycL*rGlUIi(H)y+Q%KN8&5;X2&waIaYYI9{b#B<%YO*V zf{Ptdc5+S&Q5!k8H;xE%lvF)+|BB2VMg6pB`mf2==S)9^h9Lyi`XaZZwcLx0p@Qw0 z{JuVUX*H5B#a4u^$vJ&t^>z^OWEL`rY|UyctZ2<&bf$Z~U-M!2N0^@H1Qk5E8d3a( zl}r1c%Q>_9mT2zrO{%kNNwX&xveu!#yaAp*b2{=aMbZp%`W%;yeRla zmcM_yiJ*N9(+qe&MUH+tja_%~WP%^VdUbVu#X}Tq*Qfrb-UipKupYl%-Ip*JM2)mH zJTk~>q;8{IFVU6j0ls$BHA#t%T%MvQ5+_dh9A&P>qCR%oCFu)`;mogUr))$2gF2iQ zd;rFMZz`*w;SROG*x`h`1OFO0GU(vr8+}p{8MIdEz8;0URv$}XU^qcbsJD1h#+0%%D z1OHj;R8RAi_-)JXwbQM7Amei2+-mvVt)%Vi%+|&-`&g}pfPa3c$eeYooNBfSuS)@3+Pg?;=sWJFTuN$M^X2Q3HXw?|W3S8nBUts7*=d2*+=k-nF;rBc$R@B`p+>ml*=X&hPS@j}a{ zx{_ZmU4I#K+KfRs|3Zl?rPl{lZ2K+tFW7(1Daqn;pj!VCB+CBHDw+S+(SxXkwTY95 zle3Adb&e_=wZS*kbE7t**wm!+P4M!;TrDEwygn0&7{kekso zXbA5qG(^=#=JBLbRa{ZuR%s-Rh9=y6vRg&RRHCgJQTG<5)siA^d^10Jd*AOUIcfOG z`$W--YixcK_>oEuRcts>DWOB`#M8H!oJ`gq24C>!UmvC#(3!YQj@)%PT!$PBLB^RQ z@P*nZhj-kj6w7QicH3~SYpl8Zs0=&>t0}Z-ow3tr!g7KoCwJll4wPuox-MD}A3dHg z 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Ðe1R`bT?O}ZYIFP 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 VGlM>(fdL%@9TU3&ogs_v{{u6N=Pm#M literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-99302efaebda931b517195a791313ef8.zip b/vendor/composer/tmp-99302efaebda931b517195a791313ef8.zip new file mode 100644 index 0000000000000000000000000000000000000000..563b44f9f9cbeb2aa72616d90462bfe6cb6d4697 GIT binary patch literal 25953 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ɃZ{83a{T^Y~)v^hR1NqC?@vllEwTWenU418@zGH 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 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-a6057dce91728e10f22de5e655c6e00e.zip b/vendor/composer/tmp-a6057dce91728e10f22de5e655c6e00e.zip new file mode 100644 index 0000000000000000000000000000000000000000..cec3736db58775895408009c64b3f19379b0f914 GIT binary patch literal 78664 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

AQq2X28yIT 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 fPQ+7pm2bZxyL6A`5d2#Sg= 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 IKcD%30bkoH1^@s6 literal 0 HcmV?d00001 diff --git a/vendor/composer/tmp-eec490a45e0693df49b82d39c08aa787.zip b/vendor/composer/tmp-eec490a45e0693df49b82d39c08aa787.zip new file mode 100644 index 0000000000000000000000000000000000000000..5df63a51fd5d270532ead6772463c529a645e56a GIT binary patch literal 150312 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 +using the ``mtdowling/jmespath.php`` package. + +.. code-block:: php + + require 'vendor/autoload.php'; + + $expression = 'foo.*.baz'; + + $data = [ + 'foo' => [ + 'bar' => ['baz' => 1], + 'bam' => ['baz' => 2], + 'boo' => ['baz' => 3] + ] + ]; + + JmesPath\search($expression, $data); + // Returns: [1, 2, 3] + +- `JMESPath Tutorial `_ +- `JMESPath Grammar `_ +- `JMESPath Python library `_ + +PHP Usage +========= + +The ``JmesPath\search`` function can be used in most cases when using the +library. This function utilizes a JMESPath runtime based on your environment. +The runtime utilized can be configured using environment variables and may at +some point in the future automatically utilize a C extension if available. + +.. code-block:: php + + $result = JmesPath\search($expression, $data); + + // or, if you require PSR-4 compliance. + $result = JmesPath\Env::search($expression, $data); + +Runtimes +-------- + +jmespath.php utilizes *runtimes*. There are currently two runtimes: +AstRuntime and CompilerRuntime. + +AstRuntime is utilized by ``JmesPath\search()`` and ``JmesPath\Env::search()`` +by default. + +AstRuntime +~~~~~~~~~~ + +The AstRuntime will parse an expression, cache the resulting AST in memory, +and interpret the AST using an external tree visitor. AstRuntime provides a +good general approach for interpreting JMESPath expressions that have a low to +moderate level of reuse. + +.. code-block:: php + + $runtime = new JmesPath\AstRuntime(); + $runtime('foo.bar', ['foo' => ['bar' => 'baz']]); + // > 'baz' + +CompilerRuntime +~~~~~~~~~~~~~~~ + +``JmesPath\CompilerRuntime`` provides the most performance for +applications that have a moderate to high level of reuse of JMESPath +expressions. The CompilerRuntime will walk a JMESPath AST and emit PHP source +code, resulting in anywhere from 7x to 60x speed improvements. + +Compiling JMESPath expressions to source code is a slower process than just +walking and interpreting a JMESPath AST (via the AstRuntime). However, +running the compiled JMESPath code results in much better performance than +walking an AST. This essentially means that there is a warm-up period when +using the ``CompilerRuntime``, but after the warm-up period, it will provide +much better performance. + +Use the CompilerRuntime if you know that you will be executing JMESPath +expressions more than once or if you can pre-compile JMESPath expressions +before executing them (for example, server-side applications). + +.. code-block:: php + + // Note: The cache directory argument is optional. + $runtime = new JmesPath\CompilerRuntime('/path/to/compile/folder'); + $runtime('foo.bar', ['foo' => ['bar' => 'baz']]); + // > 'baz' + +Environment Variables +^^^^^^^^^^^^^^^^^^^^^ + +You can utilize the CompilerRuntime in ``JmesPath\search()`` by setting +the ``JP_PHP_COMPILE`` environment variable to "on" or to a directory +on disk used to store cached expressions. + +Testing +======= + +A comprehensive list of test cases can be found at +https://github.com/jmespath/jmespath.php/tree/master/tests/compliance. +These compliance tests are utilized by jmespath.php to ensure consistency with +other implementations, and can serve as examples of the language. + +jmespath.php is tested using PHPUnit. In order to run the tests, you need to +first install the dependencies using Composer as described in the *Installation* +section. Next you just need to run the tests via make: + +.. code-block:: bash + + make test + +You can run a suite of performance tests as well: + +.. code-block:: bash + + make perf diff --git a/vendor/mtdowling/jmespath.php/bin/jp.php b/vendor/mtdowling/jmespath.php/bin/jp.php new file mode 100644 index 0000000..c8433b5 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/bin/jp.php @@ -0,0 +1,74 @@ +#!/usr/bin/env php +check(); +unset($xdebug); + +$dir = isset($argv[1]) ? $argv[1] : __DIR__ . '/../tests/compliance/perf'; +is_dir($dir) or die('Dir not found: ' . $dir); +// Warm up the runner +\JmesPath\Env::search('foo', []); + +$total = 0; +foreach (glob($dir . '/*.json') as $file) { + $total += runSuite($file); +} +echo "\nTotal time: {$total}\n"; + +function runSuite($file) +{ + $contents = file_get_contents($file); + $json = json_decode($contents, true); + $total = 0; + foreach ($json as $suite) { + foreach ($suite['cases'] as $case) { + $total += runCase( + $suite['given'], + $case['expression'], + $case['name'] + ); + } + } + return $total; +} + +function runCase($given, $expression, $name) +{ + $best = 99999; + $runtime = \JmesPath\Env::createRuntime(); + + for ($i = 0; $i < 100; $i++) { + $t = microtime(true); + $runtime($expression, $given); + $tryTime = (microtime(true) - $t) * 1000; + if ($tryTime < $best) { + $best = $tryTime; + } + if (!getenv('CACHE')) { + $runtime = \JmesPath\Env::createRuntime(); + // Delete compiled scripts if not caching. + if ($runtime instanceof \JmesPath\CompilerRuntime) { + array_map('unlink', glob(sys_get_temp_dir() . '/jmespath_*.php')); + } + } + } + + printf("time: %07.4fms name: %s\n", $best, $name); + + return $best; +} diff --git a/vendor/mtdowling/jmespath.php/composer.json b/vendor/mtdowling/jmespath.php/composer.json new file mode 100644 index 0000000..819db12 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/composer.json @@ -0,0 +1,38 @@ +{ + "name": "mtdowling/jmespath.php", + "description": "Declaratively specify how to extract elements from a JSON document", + "keywords": ["json", "jsonpath"], + "license": "MIT", + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-mbstring": "^1.17" + }, + "require-dev": { + "composer/xdebug-handler": "^3.0.3", + "phpunit/phpunit": "^8.5.33" + }, + "autoload": { + "psr-4": { + "JmesPath\\": "src/" + }, + "files": ["src/JmesPath.php"] + }, + "bin": ["bin/jp.php"], + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + } +} diff --git a/vendor/mtdowling/jmespath.php/src/AstRuntime.php b/vendor/mtdowling/jmespath.php/src/AstRuntime.php new file mode 100644 index 0000000..f5620be --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/AstRuntime.php @@ -0,0 +1,47 @@ +interpreter = new TreeInterpreter($fnDispatcher); + $this->parser = $parser ?: new Parser(); + } + + /** + * Returns data from the provided input that matches a given JMESPath + * expression. + * + * @param string $expression JMESPath expression to evaluate + * @param mixed $data Data to search. This data should be data that + * is similar to data returned from json_decode + * using associative arrays rather than objects. + * + * @return mixed Returns the matching data or null + */ + public function __invoke($expression, $data) + { + if (!isset($this->cache[$expression])) { + // Clear the AST cache when it hits 1024 entries + if (++$this->cachedCount > 1024) { + $this->cache = []; + $this->cachedCount = 0; + } + $this->cache[$expression] = $this->parser->parse($expression); + } + + return $this->interpreter->visit($this->cache[$expression], $data); + } +} diff --git a/vendor/mtdowling/jmespath.php/src/CompilerRuntime.php b/vendor/mtdowling/jmespath.php/src/CompilerRuntime.php new file mode 100644 index 0000000..b85f68e --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/CompilerRuntime.php @@ -0,0 +1,83 @@ +parser = $parser ?: new Parser(); + $this->compiler = new TreeCompiler(); + $dir = $dir ?: sys_get_temp_dir(); + + if (!is_dir($dir) && !mkdir($dir, 0755, true)) { + throw new \RuntimeException("Unable to create cache directory: $dir"); + } + + $this->cacheDir = realpath($dir); + $this->interpreter = new TreeInterpreter(); + } + + /** + * Returns data from the provided input that matches a given JMESPath + * expression. + * + * @param string $expression JMESPath expression to evaluate + * @param mixed $data Data to search. This data should be data that + * is similar to data returned from json_decode + * using associative arrays rather than objects. + * + * @return mixed Returns the matching data or null + * @throws \RuntimeException + */ + public function __invoke($expression, $data) + { + $functionName = 'jmespath_' . md5($expression); + + if (!function_exists($functionName)) { + $filename = "{$this->cacheDir}/{$functionName}.php"; + if (!file_exists($filename)) { + $this->compile($filename, $expression, $functionName); + } + require $filename; + } + + return $functionName($this->interpreter, $data); + } + + private function compile($filename, $expression, $functionName) + { + $code = $this->compiler->visit( + $this->parser->parse($expression), + $functionName, + $expression + ); + + if (!file_put_contents($filename, $code)) { + throw new \RuntimeException(sprintf( + 'Unable to write the compiled PHP code to: %s (%s)', + $filename, + var_export(error_get_last(), true) + )); + } + } +} diff --git a/vendor/mtdowling/jmespath.php/src/DebugRuntime.php b/vendor/mtdowling/jmespath.php/src/DebugRuntime.php new file mode 100644 index 0000000..4052561 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/DebugRuntime.php @@ -0,0 +1,109 @@ +runtime = $runtime; + $this->out = $output ?: STDOUT; + $this->lexer = new Lexer(); + $this->parser = new Parser($this->lexer); + } + + public function __invoke($expression, $data) + { + if ($this->runtime instanceof CompilerRuntime) { + return $this->debugCompiled($expression, $data); + } + + return $this->debugInterpreted($expression, $data); + } + + private function debugInterpreted($expression, $data) + { + return $this->debugCallback( + function () use ($expression, $data) { + $runtime = $this->runtime; + return $runtime($expression, $data); + }, + $expression, + $data + ); + } + + private function debugCompiled($expression, $data) + { + $result = $this->debugCallback( + function () use ($expression, $data) { + $runtime = $this->runtime; + return $runtime($expression, $data); + }, + $expression, + $data + ); + $this->dumpCompiledCode($expression); + + return $result; + } + + private function dumpTokens($expression) + { + $lexer = new Lexer(); + fwrite($this->out, "Tokens\n======\n\n"); + $tokens = $lexer->tokenize($expression); + + foreach ($tokens as $t) { + fprintf( + $this->out, + "%3d %-13s %s\n", $t['pos'], $t['type'], + json_encode($t['value']) + ); + } + + fwrite($this->out, "\n"); + } + + private function dumpAst($expression) + { + $parser = new Parser(); + $ast = $parser->parse($expression); + fwrite($this->out, "AST\n========\n\n"); + fwrite($this->out, json_encode($ast, JSON_PRETTY_PRINT) . "\n"); + } + + private function dumpCompiledCode($expression) + { + fwrite($this->out, "Code\n========\n\n"); + $dir = sys_get_temp_dir(); + $hash = md5($expression); + $functionName = "jmespath_{$hash}"; + $filename = "{$dir}/{$functionName}.php"; + fwrite($this->out, "File: {$filename}\n\n"); + fprintf($this->out, file_get_contents($filename)); + } + + private function debugCallback(callable $debugFn, $expression, $data) + { + fprintf($this->out, "Expression\n==========\n\n%s\n\n", $expression); + $this->dumpTokens($expression); + $this->dumpAst($expression); + fprintf($this->out, "\nData\n====\n\n%s\n\n", json_encode($data, JSON_PRETTY_PRINT)); + $startTime = microtime(true); + $result = $debugFn(); + $total = microtime(true) - $startTime; + fprintf($this->out, "\nResult\n======\n\n%s\n\n", json_encode($result, JSON_PRETTY_PRINT)); + fwrite($this->out, "Time\n====\n\n"); + fprintf($this->out, "Total time: %f ms\n\n", $total); + + return $result; + } +} diff --git a/vendor/mtdowling/jmespath.php/src/Env.php b/vendor/mtdowling/jmespath.php/src/Env.php new file mode 100644 index 0000000..b22cf25 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/Env.php @@ -0,0 +1,91 @@ +{'fn_' . $fn}($args); + } + + private function fn_abs(array $args) + { + $this->validate('abs', $args, [['number']]); + return abs($args[0]); + } + + private function fn_avg(array $args) + { + $this->validate('avg', $args, [['array']]); + $sum = $this->reduce('avg:0', $args[0], ['number'], function ($a, $b) { + return Utils::add($a, $b); + }); + return $args[0] ? ($sum / count($args[0])) : null; + } + + private function fn_ceil(array $args) + { + $this->validate('ceil', $args, [['number']]); + return ceil($args[0]); + } + + private function fn_contains(array $args) + { + $this->validate('contains', $args, [['string', 'array'], ['any']]); + if (is_array($args[0])) { + return in_array($args[1], $args[0]); + } elseif (is_string($args[1])) { + return mb_strpos($args[0], $args[1], 0, 'UTF-8') !== false; + } else { + return null; + } + } + + private function fn_ends_with(array $args) + { + $this->validate('ends_with', $args, [['string'], ['string']]); + list($search, $suffix) = $args; + return $suffix === '' || mb_substr($search, -mb_strlen($suffix, 'UTF-8'), null, 'UTF-8') === $suffix; + } + + private function fn_floor(array $args) + { + $this->validate('floor', $args, [['number']]); + return floor($args[0]); + } + + private function fn_not_null(array $args) + { + if (!$args) { + throw new \RuntimeException( + "not_null() expects 1 or more arguments, 0 were provided" + ); + } + + return array_reduce($args, function ($carry, $item) { + return $carry !== null ? $carry : $item; + }); + } + + private function fn_join(array $args) + { + $this->validate('join', $args, [['string'], ['array']]); + $fn = function ($a, $b, $i) use ($args) { + return $i ? ($a . $args[0] . $b) : $b; + }; + return $this->reduce('join:0', $args[1], ['string'], $fn); + } + + private function fn_keys(array $args) + { + $this->validate('keys', $args, [['object']]); + return array_keys((array) $args[0]); + } + + private function fn_length(array $args) + { + $this->validate('length', $args, [['string', 'array', 'object']]); + return is_string($args[0]) ? mb_strlen($args[0], 'UTF-8') : count((array) $args[0]); + } + + private function fn_max(array $args) + { + $this->validate('max', $args, [['array']]); + $fn = function ($a, $b) { + return $a >= $b ? $a : $b; + }; + return $this->reduce('max:0', $args[0], ['number', 'string'], $fn); + } + + private function fn_max_by(array $args) + { + $this->validate('max_by', $args, [['array'], ['expression']]); + $expr = $this->wrapExpression('max_by:1', $args[1], ['number', 'string']); + $fn = function ($carry, $item, $index) use ($expr) { + return $index + ? ($expr($carry) >= $expr($item) ? $carry : $item) + : $item; + }; + return $this->reduce('max_by:1', $args[0], ['any'], $fn); + } + + private function fn_min(array $args) + { + $this->validate('min', $args, [['array']]); + $fn = function ($a, $b, $i) { + return $i && $a <= $b ? $a : $b; + }; + return $this->reduce('min:0', $args[0], ['number', 'string'], $fn); + } + + private function fn_min_by(array $args) + { + $this->validate('min_by', $args, [['array'], ['expression']]); + $expr = $this->wrapExpression('min_by:1', $args[1], ['number', 'string']); + $i = -1; + $fn = function ($a, $b) use ($expr, &$i) { + return ++$i ? ($expr($a) <= $expr($b) ? $a : $b) : $b; + }; + return $this->reduce('min_by:1', $args[0], ['any'], $fn); + } + + private function fn_reverse(array $args) + { + $this->validate('reverse', $args, [['array', 'string']]); + if (is_array($args[0])) { + return array_reverse($args[0]); + } elseif (is_string($args[0])) { + return strrev($args[0]); + } else { + throw new \RuntimeException('Cannot reverse provided argument'); + } + } + + private function fn_sum(array $args) + { + $this->validate('sum', $args, [['array']]); + $fn = function ($a, $b) { + return Utils::add($a, $b); + }; + return $this->reduce('sum:0', $args[0], ['number'], $fn); + } + + private function fn_sort(array $args) + { + $this->validate('sort', $args, [['array']]); + $valid = ['string', 'number']; + return Utils::stableSort($args[0], function ($a, $b) use ($valid) { + $this->validateSeq('sort:0', $valid, $a, $b); + return strnatcmp($a, $b); + }); + } + + private function fn_sort_by(array $args) + { + $this->validate('sort_by', $args, [['array'], ['expression']]); + $expr = $args[1]; + $valid = ['string', 'number']; + return Utils::stableSort( + $args[0], + function ($a, $b) use ($expr, $valid) { + $va = $expr($a); + $vb = $expr($b); + $this->validateSeq('sort_by:0', $valid, $va, $vb); + return strnatcmp($va, $vb); + } + ); + } + + private function fn_starts_with(array $args) + { + $this->validate('starts_with', $args, [['string'], ['string']]); + list($search, $prefix) = $args; + return $prefix === '' || mb_strpos($search, $prefix, 0, 'UTF-8') === 0; + } + + private function fn_type(array $args) + { + $this->validateArity('type', count($args), 1); + return Utils::type($args[0]); + } + + private function fn_to_string(array $args) + { + $this->validateArity('to_string', count($args), 1); + $v = $args[0]; + if (is_string($v)) { + return $v; + } elseif (is_object($v) + && !($v instanceof \JsonSerializable) + && method_exists($v, '__toString') + ) { + return (string) $v; + } + + return json_encode($v); + } + + private function fn_to_number(array $args) + { + $this->validateArity('to_number', count($args), 1); + $value = $args[0]; + $type = Utils::type($value); + if ($type == 'number') { + return $value; + } elseif ($type == 'string' && is_numeric($value)) { + return mb_strpos($value, '.', 0, 'UTF-8') ? (float) $value : (int) $value; + } else { + return null; + } + } + + private function fn_values(array $args) + { + $this->validate('values', $args, [['array', 'object']]); + return array_values((array) $args[0]); + } + + private function fn_merge(array $args) + { + if (!$args) { + throw new \RuntimeException( + "merge() expects 1 or more arguments, 0 were provided" + ); + } + + return call_user_func_array('array_replace', $args); + } + + private function fn_to_array(array $args) + { + $this->validate('to_array', $args, [['any']]); + + return Utils::isArray($args[0]) ? $args[0] : [$args[0]]; + } + + private function fn_map(array $args) + { + $this->validate('map', $args, [['expression'], ['any']]); + $result = []; + foreach ($args[1] as $a) { + $result[] = $args[0]($a); + } + return $result; + } + + private function typeError($from, $msg) + { + if (mb_strpos($from, ':', 0, 'UTF-8')) { + list($fn, $pos) = explode(':', $from); + throw new \RuntimeException( + sprintf('Argument %d of %s %s', $pos, $fn, $msg) + ); + } else { + throw new \RuntimeException( + sprintf('Type error: %s %s', $from, $msg) + ); + } + } + + private function validateArity($from, $given, $expected) + { + if ($given != $expected) { + $err = "%s() expects {$expected} arguments, {$given} were provided"; + throw new \RuntimeException(sprintf($err, $from)); + } + } + + private function validate($from, $args, $types = []) + { + $this->validateArity($from, count($args), count($types)); + foreach ($args as $index => $value) { + if (!isset($types[$index]) || !$types[$index]) { + continue; + } + $this->validateType("{$from}:{$index}", $value, $types[$index]); + } + } + + private function validateType($from, $value, array $types) + { + if ($types[0] == 'any' + || in_array(Utils::type($value), $types) + || ($value === [] && in_array('object', $types)) + ) { + return; + } + $msg = 'must be one of the following types: ' . implode(', ', $types) + . '. ' . Utils::type($value) . ' found'; + $this->typeError($from, $msg); + } + + /** + * Validates value A and B, ensures they both are correctly typed, and of + * the same type. + * + * @param string $from String of function:argument_position + * @param array $types Array of valid value types. + * @param mixed $a Value A + * @param mixed $b Value B + */ + private function validateSeq($from, array $types, $a, $b) + { + $ta = Utils::type($a); + $tb = Utils::type($b); + + if ($ta !== $tb) { + $msg = "encountered a type mismatch in sequence: {$ta}, {$tb}"; + $this->typeError($from, $msg); + } + + $typeMatch = ($types && $types[0] == 'any') || in_array($ta, $types); + if (!$typeMatch) { + $msg = 'encountered a type error in sequence. The argument must be ' + . 'an array of ' . implode('|', $types) . ' types. ' + . "Found {$ta}, {$tb}."; + $this->typeError($from, $msg); + } + } + + /** + * Reduces and validates an array of values to a single value using a fn. + * + * @param string $from String of function:argument_position + * @param array $values Values to reduce. + * @param array $types Array of valid value types. + * @param callable $reduce Reduce function that accepts ($carry, $item). + * + * @return mixed + */ + private function reduce($from, array $values, array $types, callable $reduce) + { + $i = -1; + return array_reduce( + $values, + function ($carry, $item) use ($from, $types, $reduce, &$i) { + if (++$i > 0) { + $this->validateSeq($from, $types, $carry, $item); + } + return $reduce($carry, $item, $i); + } + ); + } + + /** + * Validates the return values of expressions as they are applied. + * + * @param string $from Function name : position + * @param callable $expr Expression function to validate. + * @param array $types Array of acceptable return type values. + * + * @return callable Returns a wrapped function + */ + private function wrapExpression($from, callable $expr, array $types) + { + list($fn, $pos) = explode(':', $from); + $from = "The expression return value of argument {$pos} of {$fn}"; + return function ($value) use ($from, $expr, $types) { + $value = $expr($value); + $this->validateType($from, $value, $types); + return $value; + }; + } + + /** @internal Pass function name validation off to runtime */ + public function __call($name, $args) + { + $name = str_replace('fn_', '', $name); + throw new \RuntimeException("Call to undefined function {$name}"); + } +} diff --git a/vendor/mtdowling/jmespath.php/src/JmesPath.php b/vendor/mtdowling/jmespath.php/src/JmesPath.php new file mode 100644 index 0000000..d24e516 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/JmesPath.php @@ -0,0 +1,17 @@ + self::STATE_LT, + '>' => self::STATE_GT, + '=' => self::STATE_EQ, + '!' => self::STATE_NOT, + '[' => self::STATE_LBRACKET, + '|' => self::STATE_PIPE, + '&' => self::STATE_AND, + '`' => self::STATE_JSON_LITERAL, + '"' => self::STATE_QUOTED_STRING, + "'" => self::STATE_STRING_LITERAL, + '-' => self::STATE_NUMBER, + '0' => self::STATE_NUMBER, + '1' => self::STATE_NUMBER, + '2' => self::STATE_NUMBER, + '3' => self::STATE_NUMBER, + '4' => self::STATE_NUMBER, + '5' => self::STATE_NUMBER, + '6' => self::STATE_NUMBER, + '7' => self::STATE_NUMBER, + '8' => self::STATE_NUMBER, + '9' => self::STATE_NUMBER, + ' ' => self::STATE_WHITESPACE, + "\t" => self::STATE_WHITESPACE, + "\n" => self::STATE_WHITESPACE, + "\r" => self::STATE_WHITESPACE, + '.' => self::STATE_SINGLE_CHAR, + '*' => self::STATE_SINGLE_CHAR, + ']' => self::STATE_SINGLE_CHAR, + ',' => self::STATE_SINGLE_CHAR, + ':' => self::STATE_SINGLE_CHAR, + '@' => self::STATE_SINGLE_CHAR, + '(' => self::STATE_SINGLE_CHAR, + ')' => self::STATE_SINGLE_CHAR, + '{' => self::STATE_SINGLE_CHAR, + '}' => self::STATE_SINGLE_CHAR, + '_' => self::STATE_IDENTIFIER, + 'A' => self::STATE_IDENTIFIER, + 'B' => self::STATE_IDENTIFIER, + 'C' => self::STATE_IDENTIFIER, + 'D' => self::STATE_IDENTIFIER, + 'E' => self::STATE_IDENTIFIER, + 'F' => self::STATE_IDENTIFIER, + 'G' => self::STATE_IDENTIFIER, + 'H' => self::STATE_IDENTIFIER, + 'I' => self::STATE_IDENTIFIER, + 'J' => self::STATE_IDENTIFIER, + 'K' => self::STATE_IDENTIFIER, + 'L' => self::STATE_IDENTIFIER, + 'M' => self::STATE_IDENTIFIER, + 'N' => self::STATE_IDENTIFIER, + 'O' => self::STATE_IDENTIFIER, + 'P' => self::STATE_IDENTIFIER, + 'Q' => self::STATE_IDENTIFIER, + 'R' => self::STATE_IDENTIFIER, + 'S' => self::STATE_IDENTIFIER, + 'T' => self::STATE_IDENTIFIER, + 'U' => self::STATE_IDENTIFIER, + 'V' => self::STATE_IDENTIFIER, + 'W' => self::STATE_IDENTIFIER, + 'X' => self::STATE_IDENTIFIER, + 'Y' => self::STATE_IDENTIFIER, + 'Z' => self::STATE_IDENTIFIER, + 'a' => self::STATE_IDENTIFIER, + 'b' => self::STATE_IDENTIFIER, + 'c' => self::STATE_IDENTIFIER, + 'd' => self::STATE_IDENTIFIER, + 'e' => self::STATE_IDENTIFIER, + 'f' => self::STATE_IDENTIFIER, + 'g' => self::STATE_IDENTIFIER, + 'h' => self::STATE_IDENTIFIER, + 'i' => self::STATE_IDENTIFIER, + 'j' => self::STATE_IDENTIFIER, + 'k' => self::STATE_IDENTIFIER, + 'l' => self::STATE_IDENTIFIER, + 'm' => self::STATE_IDENTIFIER, + 'n' => self::STATE_IDENTIFIER, + 'o' => self::STATE_IDENTIFIER, + 'p' => self::STATE_IDENTIFIER, + 'q' => self::STATE_IDENTIFIER, + 'r' => self::STATE_IDENTIFIER, + 's' => self::STATE_IDENTIFIER, + 't' => self::STATE_IDENTIFIER, + 'u' => self::STATE_IDENTIFIER, + 'v' => self::STATE_IDENTIFIER, + 'w' => self::STATE_IDENTIFIER, + 'x' => self::STATE_IDENTIFIER, + 'y' => self::STATE_IDENTIFIER, + 'z' => self::STATE_IDENTIFIER, + ]; + + /** @var array Valid identifier characters after first character */ + private $validIdentifier = [ + 'A' => true, 'B' => true, 'C' => true, 'D' => true, 'E' => true, + 'F' => true, 'G' => true, 'H' => true, 'I' => true, 'J' => true, + 'K' => true, 'L' => true, 'M' => true, 'N' => true, 'O' => true, + 'P' => true, 'Q' => true, 'R' => true, 'S' => true, 'T' => true, + 'U' => true, 'V' => true, 'W' => true, 'X' => true, 'Y' => true, + 'Z' => true, 'a' => true, 'b' => true, 'c' => true, 'd' => true, + 'e' => true, 'f' => true, 'g' => true, 'h' => true, 'i' => true, + 'j' => true, 'k' => true, 'l' => true, 'm' => true, 'n' => true, + 'o' => true, 'p' => true, 'q' => true, 'r' => true, 's' => true, + 't' => true, 'u' => true, 'v' => true, 'w' => true, 'x' => true, + 'y' => true, 'z' => true, '_' => true, '0' => true, '1' => true, + '2' => true, '3' => true, '4' => true, '5' => true, '6' => true, + '7' => true, '8' => true, '9' => true, + ]; + + /** @var array Valid number characters after the first character */ + private $numbers = [ + '0' => true, '1' => true, '2' => true, '3' => true, '4' => true, + '5' => true, '6' => true, '7' => true, '8' => true, '9' => true + ]; + + /** @var array Map of simple single character tokens */ + private $simpleTokens = [ + '.' => self::T_DOT, + '*' => self::T_STAR, + ']' => self::T_RBRACKET, + ',' => self::T_COMMA, + ':' => self::T_COLON, + '@' => self::T_CURRENT, + '(' => self::T_LPAREN, + ')' => self::T_RPAREN, + '{' => self::T_LBRACE, + '}' => self::T_RBRACE, + ]; + + /** + * Tokenize the JMESPath expression into an array of tokens hashes that + * contain a 'type', 'value', and 'key'. + * + * @param string $input JMESPath input + * + * @return array + * @throws SyntaxErrorException + */ + public function tokenize($input) + { + $tokens = []; + + if ($input === '') { + goto eof; + } + + $chars = str_split($input); + + while (false !== ($current = current($chars))) { + + // Every character must be in the transition character table. + if (!isset(self::$transitionTable[$current])) { + $tokens[] = [ + 'type' => self::T_UNKNOWN, + 'pos' => key($chars), + 'value' => $current + ]; + next($chars); + continue; + } + + $state = self::$transitionTable[$current]; + + if ($state === self::STATE_SINGLE_CHAR) { + + // Consume simple tokens like ".", ",", "@", etc. + $tokens[] = [ + 'type' => $this->simpleTokens[$current], + 'pos' => key($chars), + 'value' => $current + ]; + next($chars); + + } elseif ($state === self::STATE_IDENTIFIER) { + + // Consume identifiers + $start = key($chars); + $buffer = ''; + do { + $buffer .= $current; + $current = next($chars); + } while ($current !== false && isset($this->validIdentifier[$current])); + $tokens[] = [ + 'type' => self::T_IDENTIFIER, + 'value' => $buffer, + 'pos' => $start + ]; + + } elseif ($state === self::STATE_WHITESPACE) { + + // Skip whitespace + next($chars); + + } elseif ($state === self::STATE_LBRACKET) { + + // Consume "[", "[?", and "[]" + $position = key($chars); + $actual = next($chars); + if ($actual === ']') { + next($chars); + $tokens[] = [ + 'type' => self::T_FLATTEN, + 'pos' => $position, + 'value' => '[]' + ]; + } elseif ($actual === '?') { + next($chars); + $tokens[] = [ + 'type' => self::T_FILTER, + 'pos' => $position, + 'value' => '[?' + ]; + } else { + $tokens[] = [ + 'type' => self::T_LBRACKET, + 'pos' => $position, + 'value' => '[' + ]; + } + + } elseif ($state === self::STATE_STRING_LITERAL) { + + // Consume raw string literals + $t = $this->inside($chars, "'", self::T_LITERAL); + $t['value'] = str_replace("\\'", "'", $t['value']); + $tokens[] = $t; + + } elseif ($state === self::STATE_PIPE) { + + // Consume pipe and OR + $tokens[] = $this->matchOr($chars, '|', '|', self::T_OR, self::T_PIPE); + + } elseif ($state == self::STATE_JSON_LITERAL) { + + // Consume JSON literals + $token = $this->inside($chars, '`', self::T_LITERAL); + if ($token['type'] === self::T_LITERAL) { + $token['value'] = str_replace('\\`', '`', $token['value']); + $token = $this->parseJson($token); + } + $tokens[] = $token; + + } elseif ($state == self::STATE_NUMBER) { + + // Consume numbers + $start = key($chars); + $buffer = ''; + do { + $buffer .= $current; + $current = next($chars); + } while ($current !== false && isset($this->numbers[$current])); + $tokens[] = [ + 'type' => self::T_NUMBER, + 'value' => (int)$buffer, + 'pos' => $start + ]; + + } elseif ($state === self::STATE_QUOTED_STRING) { + + // Consume quoted identifiers + $token = $this->inside($chars, '"', self::T_QUOTED_IDENTIFIER); + if ($token['type'] === self::T_QUOTED_IDENTIFIER) { + $token['value'] = '"' . $token['value'] . '"'; + $token = $this->parseJson($token); + } + $tokens[] = $token; + + } elseif ($state === self::STATE_EQ) { + + // Consume equals + $tokens[] = $this->matchOr($chars, '=', '=', self::T_COMPARATOR, self::T_UNKNOWN); + + } elseif ($state == self::STATE_AND) { + + $tokens[] = $this->matchOr($chars, '&', '&', self::T_AND, self::T_EXPREF); + + } elseif ($state === self::STATE_NOT) { + + // Consume not equal + $tokens[] = $this->matchOr($chars, '!', '=', self::T_COMPARATOR, self::T_NOT); + + } else { + + // either '<' or '>' + // Consume less than and greater than + $tokens[] = $this->matchOr($chars, $current, '=', self::T_COMPARATOR, self::T_COMPARATOR); + + } + } + + eof: + $tokens[] = [ + 'type' => self::T_EOF, + 'pos' => mb_strlen($input, 'UTF-8'), + 'value' => null + ]; + + return $tokens; + } + + /** + * Returns a token based on whether or not the next token matches the + * expected value. If it does, a token of "$type" is returned. Otherwise, + * a token of "$orElse" type is returned. + * + * @param array $chars Array of characters by reference. + * @param string $current The current character. + * @param string $expected Expected character. + * @param string $type Expected result type. + * @param string $orElse Otherwise return a token of this type. + * + * @return array Returns a conditional token. + */ + private function matchOr(array &$chars, $current, $expected, $type, $orElse) + { + if (next($chars) === $expected) { + next($chars); + return [ + 'type' => $type, + 'pos' => key($chars) - 1, + 'value' => $current . $expected + ]; + } + + return [ + 'type' => $orElse, + 'pos' => key($chars) - 1, + 'value' => $current + ]; + } + + /** + * Returns a token the is the result of consuming inside of delimiter + * characters. Escaped delimiters will be adjusted before returning a + * value. If the token is not closed, "unknown" is returned. + * + * @param array $chars Array of characters by reference. + * @param string $delim The delimiter character. + * @param string $type Token type. + * + * @return array Returns the consumed token. + */ + private function inside(array &$chars, $delim, $type) + { + $position = key($chars); + $current = next($chars); + $buffer = ''; + + while ($current !== $delim) { + if ($current === '\\') { + $buffer .= '\\'; + $current = next($chars); + } + if ($current === false) { + // Unclosed delimiter + return [ + 'type' => self::T_UNKNOWN, + 'value' => $buffer, + 'pos' => $position + ]; + } + $buffer .= $current; + $current = next($chars); + } + + next($chars); + + return ['type' => $type, 'value' => $buffer, 'pos' => $position]; + } + + /** + * Parses a JSON token or sets the token type to "unknown" on error. + * + * @param array $token Token that needs parsing. + * + * @return array Returns a token with a parsed value. + */ + private function parseJson(array $token) + { + $value = json_decode($token['value'], true); + + if ($error = json_last_error()) { + // Legacy support for elided quotes. Try to parse again by adding + // quotes around the bad input value. + $value = json_decode('"' . $token['value'] . '"', true); + if ($error = json_last_error()) { + $token['type'] = self::T_UNKNOWN; + return $token; + } + } + + $token['value'] = $value; + return $token; + } +} diff --git a/vendor/mtdowling/jmespath.php/src/Parser.php b/vendor/mtdowling/jmespath.php/src/Parser.php new file mode 100644 index 0000000..d126de5 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/Parser.php @@ -0,0 +1,519 @@ + T::T_EOF]; + private static $currentNode = ['type' => T::T_CURRENT]; + + private static $bp = [ + T::T_EOF => 0, + T::T_QUOTED_IDENTIFIER => 0, + T::T_IDENTIFIER => 0, + T::T_RBRACKET => 0, + T::T_RPAREN => 0, + T::T_COMMA => 0, + T::T_RBRACE => 0, + T::T_NUMBER => 0, + T::T_CURRENT => 0, + T::T_EXPREF => 0, + T::T_COLON => 0, + T::T_PIPE => 1, + T::T_OR => 2, + T::T_AND => 3, + T::T_COMPARATOR => 5, + T::T_FLATTEN => 9, + T::T_STAR => 20, + T::T_FILTER => 21, + T::T_DOT => 40, + T::T_NOT => 45, + T::T_LBRACE => 50, + T::T_LBRACKET => 55, + T::T_LPAREN => 60, + ]; + + /** @var array Acceptable tokens after a dot token */ + private static $afterDot = [ + T::T_IDENTIFIER => true, // foo.bar + T::T_QUOTED_IDENTIFIER => true, // foo."bar" + T::T_STAR => true, // foo.* + T::T_LBRACE => true, // foo[1] + T::T_LBRACKET => true, // foo{a: 0} + T::T_FILTER => true, // foo.[?bar==10] + ]; + + /** + * @param Lexer|null $lexer Lexer used to tokenize expressions + */ + public function __construct(?Lexer $lexer = null) + { + $this->lexer = $lexer ?: new Lexer(); + } + + /** + * Parses a JMESPath expression into an AST + * + * @param string $expression JMESPath expression to compile + * + * @return array Returns an array based AST + * @throws SyntaxErrorException + */ + public function parse($expression) + { + $this->expression = $expression; + $this->tokens = $this->lexer->tokenize($expression); + $this->tpos = -1; + $this->next(); + $result = $this->expr(); + + if ($this->token['type'] === T::T_EOF) { + return $result; + } + + throw $this->syntax('Did not reach the end of the token stream'); + } + + /** + * Parses an expression while rbp < lbp. + * + * @param int $rbp Right bound precedence + * + * @return array + */ + private function expr($rbp = 0) + { + $left = $this->{"nud_{$this->token['type']}"}(); + while ($rbp < self::$bp[$this->token['type']]) { + $left = $this->{"led_{$this->token['type']}"}($left); + } + + return $left; + } + + private function nud_identifier() + { + $token = $this->token; + $this->next(); + return ['type' => 'field', 'value' => $token['value']]; + } + + private function nud_quoted_identifier() + { + $token = $this->token; + $this->next(); + $this->assertNotToken(T::T_LPAREN); + return ['type' => 'field', 'value' => $token['value']]; + } + + private function nud_current() + { + $this->next(); + return self::$currentNode; + } + + private function nud_literal() + { + $token = $this->token; + $this->next(); + return ['type' => 'literal', 'value' => $token['value']]; + } + + private function nud_expref() + { + $this->next(); + return ['type' => T::T_EXPREF, 'children' => [$this->expr(self::$bp[T::T_EXPREF])]]; + } + + private function nud_not() + { + $this->next(); + return ['type' => T::T_NOT, 'children' => [$this->expr(self::$bp[T::T_NOT])]]; + } + + private function nud_lparen() + { + $this->next(); + $result = $this->expr(0); + if ($this->token['type'] !== T::T_RPAREN) { + throw $this->syntax('Unclosed `(`'); + } + $this->next(); + return $result; + } + + private function nud_lbrace() + { + static $validKeys = [T::T_QUOTED_IDENTIFIER => true, T::T_IDENTIFIER => true]; + $this->next($validKeys); + $pairs = []; + + do { + $pairs[] = $this->parseKeyValuePair(); + if ($this->token['type'] == T::T_COMMA) { + $this->next($validKeys); + } + } while ($this->token['type'] !== T::T_RBRACE); + + $this->next(); + + return['type' => 'multi_select_hash', 'children' => $pairs]; + } + + private function nud_flatten() + { + return $this->led_flatten(self::$currentNode); + } + + private function nud_filter() + { + return $this->led_filter(self::$currentNode); + } + + private function nud_star() + { + return $this->parseWildcardObject(self::$currentNode); + } + + private function nud_lbracket() + { + $this->next(); + $type = $this->token['type']; + if ($type == T::T_NUMBER || $type == T::T_COLON) { + return $this->parseArrayIndexExpression(); + } elseif ($type == T::T_STAR && $this->lookahead() == T::T_RBRACKET) { + return $this->parseWildcardArray(); + } else { + return $this->parseMultiSelectList(); + } + } + + private function led_lbracket(array $left) + { + static $nextTypes = [T::T_NUMBER => true, T::T_COLON => true, T::T_STAR => true]; + $this->next($nextTypes); + switch ($this->token['type']) { + case T::T_NUMBER: + case T::T_COLON: + return [ + 'type' => 'subexpression', + 'children' => [$left, $this->parseArrayIndexExpression()] + ]; + default: + return $this->parseWildcardArray($left); + } + } + + private function led_flatten(array $left) + { + $this->next(); + + return [ + 'type' => 'projection', + 'from' => 'array', + 'children' => [ + ['type' => T::T_FLATTEN, 'children' => [$left]], + $this->parseProjection(self::$bp[T::T_FLATTEN]) + ] + ]; + } + + private function led_dot(array $left) + { + $this->next(self::$afterDot); + + if ($this->token['type'] == T::T_STAR) { + return $this->parseWildcardObject($left); + } + + return [ + 'type' => 'subexpression', + 'children' => [$left, $this->parseDot(self::$bp[T::T_DOT])] + ]; + } + + private function led_or(array $left) + { + $this->next(); + return [ + 'type' => T::T_OR, + 'children' => [$left, $this->expr(self::$bp[T::T_OR])] + ]; + } + + private function led_and(array $left) + { + $this->next(); + return [ + 'type' => T::T_AND, + 'children' => [$left, $this->expr(self::$bp[T::T_AND])] + ]; + } + + private function led_pipe(array $left) + { + $this->next(); + return [ + 'type' => T::T_PIPE, + 'children' => [$left, $this->expr(self::$bp[T::T_PIPE])] + ]; + } + + private function led_lparen(array $left) + { + $args = []; + $this->next(); + + while ($this->token['type'] != T::T_RPAREN) { + $args[] = $this->expr(0); + if ($this->token['type'] == T::T_COMMA) { + $this->next(); + } + } + + $this->next(); + + return [ + 'type' => 'function', + 'value' => $left['value'], + 'children' => $args + ]; + } + + private function led_filter(array $left) + { + $this->next(); + $expression = $this->expr(); + if ($this->token['type'] != T::T_RBRACKET) { + throw $this->syntax('Expected a closing rbracket for the filter'); + } + + $this->next(); + $rhs = $this->parseProjection(self::$bp[T::T_FILTER]); + + return [ + 'type' => 'projection', + 'from' => 'array', + 'children' => [ + $left ?: self::$currentNode, + [ + 'type' => 'condition', + 'children' => [$expression, $rhs] + ] + ] + ]; + } + + private function led_comparator(array $left) + { + $token = $this->token; + $this->next(); + + return [ + 'type' => T::T_COMPARATOR, + 'value' => $token['value'], + 'children' => [$left, $this->expr(self::$bp[T::T_COMPARATOR])] + ]; + } + + private function parseProjection($bp) + { + $type = $this->token['type']; + if (self::$bp[$type] < 10) { + return self::$currentNode; + } elseif ($type == T::T_DOT) { + $this->next(self::$afterDot); + return $this->parseDot($bp); + } elseif ($type == T::T_LBRACKET || $type == T::T_FILTER) { + return $this->expr($bp); + } + + throw $this->syntax('Syntax error after projection'); + } + + private function parseDot($bp) + { + if ($this->token['type'] == T::T_LBRACKET) { + $this->next(); + return $this->parseMultiSelectList(); + } + + return $this->expr($bp); + } + + private function parseKeyValuePair() + { + static $validColon = [T::T_COLON => true]; + $key = $this->token['value']; + $this->next($validColon); + $this->next(); + + return [ + 'type' => 'key_val_pair', + 'value' => $key, + 'children' => [$this->expr()] + ]; + } + + private function parseWildcardObject(?array $left = null) + { + $this->next(); + + return [ + 'type' => 'projection', + 'from' => 'object', + 'children' => [ + $left ?: self::$currentNode, + $this->parseProjection(self::$bp[T::T_STAR]) + ] + ]; + } + + private function parseWildcardArray(?array $left = null) + { + static $getRbracket = [T::T_RBRACKET => true]; + $this->next($getRbracket); + $this->next(); + + return [ + 'type' => 'projection', + 'from' => 'array', + 'children' => [ + $left ?: self::$currentNode, + $this->parseProjection(self::$bp[T::T_STAR]) + ] + ]; + } + + /** + * Parses an array index expression (e.g., [0], [1:2:3] + */ + private function parseArrayIndexExpression() + { + static $matchNext = [ + T::T_NUMBER => true, + T::T_COLON => true, + T::T_RBRACKET => true + ]; + + $pos = 0; + $parts = [null, null, null]; + $expected = $matchNext; + + do { + if ($this->token['type'] == T::T_COLON) { + $pos++; + $expected = $matchNext; + } elseif ($this->token['type'] == T::T_NUMBER) { + $parts[$pos] = $this->token['value']; + $expected = [T::T_COLON => true, T::T_RBRACKET => true]; + } + $this->next($expected); + } while ($this->token['type'] != T::T_RBRACKET); + + // Consume the closing bracket + $this->next(); + + if ($pos === 0) { + // No colons were found so this is a simple index extraction + return ['type' => 'index', 'value' => $parts[0]]; + } + + if ($pos > 2) { + throw $this->syntax('Invalid array slice syntax: too many colons'); + } + + // Sliced array from start (e.g., [2:]) + return [ + 'type' => 'projection', + 'from' => 'array', + 'children' => [ + ['type' => 'slice', 'value' => $parts], + $this->parseProjection(self::$bp[T::T_STAR]) + ] + ]; + } + + private function parseMultiSelectList() + { + $nodes = []; + + do { + $nodes[] = $this->expr(); + if ($this->token['type'] == T::T_COMMA) { + $this->next(); + $this->assertNotToken(T::T_RBRACKET); + } + } while ($this->token['type'] !== T::T_RBRACKET); + $this->next(); + + return ['type' => 'multi_select_list', 'children' => $nodes]; + } + + private function syntax($msg) + { + return new SyntaxErrorException($msg, $this->token, $this->expression); + } + + private function lookahead() + { + return (!isset($this->tokens[$this->tpos + 1])) + ? T::T_EOF + : $this->tokens[$this->tpos + 1]['type']; + } + + private function next(?array $match = null) + { + if (!isset($this->tokens[$this->tpos + 1])) { + $this->token = self::$nullToken; + } else { + $this->token = $this->tokens[++$this->tpos]; + } + + if ($match && !isset($match[$this->token['type']])) { + throw $this->syntax($match); + } + } + + private function assertNotToken($type) + { + if ($this->token['type'] == $type) { + throw $this->syntax("Token {$this->tpos} not allowed to be $type"); + } + } + + /** + * @internal Handles undefined tokens without paying the cost of validation + */ + public function __call($method, $args) + { + $prefix = substr($method, 0, 4); + if ($prefix == 'nud_' || $prefix == 'led_') { + $token = substr($method, 4); + $message = "Unexpected \"$token\" token ($method). Expected one of" + . " the following tokens: " + . implode(', ', array_map(function ($i) { + return '"' . substr($i, 4) . '"'; + }, array_filter( + get_class_methods($this), + function ($i) use ($prefix) { + return strpos($i, $prefix) === 0; + } + ))); + throw $this->syntax($message); + } + + throw new \BadMethodCallException("Call to undefined method $method"); + } +} diff --git a/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php b/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php new file mode 100644 index 0000000..b9e376e --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php @@ -0,0 +1,36 @@ +createTokenMessage($token, $expectedTypesOrMessage); + parent::__construct($message); + } + + private function createTokenMessage(array $token, array $valid) + { + return sprintf( + 'Expected one of the following: %s; found %s "%s"', + implode(', ', array_keys($valid)), + $token['type'], + $token['value'] + ); + } +} diff --git a/vendor/mtdowling/jmespath.php/src/TreeCompiler.php b/vendor/mtdowling/jmespath.php/src/TreeCompiler.php new file mode 100644 index 0000000..b5f0658 --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/TreeCompiler.php @@ -0,0 +1,419 @@ +vars = []; + $this->source = $this->indentation = ''; + $this->write("write('use JmesPath\\TreeInterpreter as Ti;') + ->write('use JmesPath\\FnDispatcher as Fd;') + ->write('use JmesPath\\Utils;') + ->write('') + ->write('function %s(Ti $interpreter, $value) {', $fnName) + ->indent() + ->dispatch($ast) + ->write('') + ->write('return $value;') + ->outdent() + ->write('}'); + + return $this->source; + } + + /** + * @param array $node + * @return mixed + */ + private function dispatch(array $node) + { + return $this->{"visit_{$node['type']}"}($node); + } + + /** + * Creates a monotonically incrementing unique variable name by prefix. + * + * @param string $prefix Variable name prefix + * + * @return string + */ + private function makeVar($prefix) + { + if (!isset($this->vars[$prefix])) { + $this->vars[$prefix] = 0; + return '$' . $prefix; + } + + return '$' . $prefix . ++$this->vars[$prefix]; + } + + /** + * Writes the given line of source code. Pass positional arguments to write + * that match the format of sprintf. + * + * @param string $str String to write + * @return $this + */ + private function write($str) + { + $this->source .= $this->indentation; + if (func_num_args() == 1) { + $this->source .= $str . "\n"; + return $this; + } + $this->source .= vsprintf($str, array_slice(func_get_args(), 1)) . "\n"; + return $this; + } + + /** + * Decreases the indentation level of code being written + * @return $this + */ + private function outdent() + { + $this->indentation = substr($this->indentation, 0, -4); + return $this; + } + + /** + * Increases the indentation level of code being written + * @return $this + */ + private function indent() + { + $this->indentation .= ' '; + return $this; + } + + private function visit_or(array $node) + { + $a = $this->makeVar('beforeOr'); + return $this + ->write('%s = $value;', $a) + ->dispatch($node['children'][0]) + ->write('if (!$value && $value !== "0" && $value !== 0) {') + ->indent() + ->write('$value = %s;', $a) + ->dispatch($node['children'][1]) + ->outdent() + ->write('}'); + } + + private function visit_and(array $node) + { + $a = $this->makeVar('beforeAnd'); + return $this + ->write('%s = $value;', $a) + ->dispatch($node['children'][0]) + ->write('if ($value || $value === "0" || $value === 0) {') + ->indent() + ->write('$value = %s;', $a) + ->dispatch($node['children'][1]) + ->outdent() + ->write('}'); + } + + private function visit_not(array $node) + { + return $this + ->write('// Visiting not node') + ->dispatch($node['children'][0]) + ->write('// Applying boolean not to result of not node') + ->write('$value = !Utils::isTruthy($value);'); + } + + private function visit_subexpression(array $node) + { + return $this + ->dispatch($node['children'][0]) + ->write('if ($value !== null) {') + ->indent() + ->dispatch($node['children'][1]) + ->outdent() + ->write('}'); + } + + private function visit_field(array $node) + { + $arr = '$value[' . var_export($node['value'], true) . ']'; + $obj = '$value->{' . var_export($node['value'], true) . '}'; + $this->write('if (is_array($value) || $value instanceof \\ArrayAccess) {') + ->indent() + ->write('$value = isset(%s) ? %s : null;', $arr, $arr) + ->outdent() + ->write('} elseif ($value instanceof \\stdClass) {') + ->indent() + ->write('$value = isset(%s) ? %s : null;', $obj, $obj) + ->outdent() + ->write("} else {") + ->indent() + ->write('$value = null;') + ->outdent() + ->write("}"); + + return $this; + } + + private function visit_index(array $node) + { + if ($node['value'] >= 0) { + $check = '$value[' . $node['value'] . ']'; + return $this->write( + '$value = (is_array($value) || $value instanceof \\ArrayAccess)' + . ' && isset(%s) ? %s : null;', + $check, $check + ); + } + + $a = $this->makeVar('count'); + return $this + ->write('if (is_array($value) || ($value instanceof \\ArrayAccess && $value instanceof \\Countable)) {') + ->indent() + ->write('%s = count($value) + %s;', $a, $node['value']) + ->write('$value = isset($value[%s]) ? $value[%s] : null;', $a, $a) + ->outdent() + ->write('} else {') + ->indent() + ->write('$value = null;') + ->outdent() + ->write('}'); + } + + private function visit_literal(array $node) + { + return $this->write('$value = %s;', var_export($node['value'], true)); + } + + private function visit_pipe(array $node) + { + return $this + ->dispatch($node['children'][0]) + ->dispatch($node['children'][1]); + } + + private function visit_multi_select_list(array $node) + { + return $this->visit_multi_select_hash($node); + } + + private function visit_multi_select_hash(array $node) + { + $listVal = $this->makeVar('list'); + $value = $this->makeVar('prev'); + $this->write('if ($value !== null) {') + ->indent() + ->write('%s = [];', $listVal) + ->write('%s = $value;', $value); + + $first = true; + foreach ($node['children'] as $child) { + if (!$first) { + $this->write('$value = %s;', $value); + } + $first = false; + if ($node['type'] == 'multi_select_hash') { + $this->dispatch($child['children'][0]); + $key = var_export($child['value'], true); + $this->write('%s[%s] = $value;', $listVal, $key); + } else { + $this->dispatch($child); + $this->write('%s[] = $value;', $listVal); + } + } + + return $this + ->write('$value = %s;', $listVal) + ->outdent() + ->write('}'); + } + + private function visit_function(array $node) + { + $value = $this->makeVar('val'); + $args = $this->makeVar('args'); + $this->write('%s = $value;', $value) + ->write('%s = [];', $args); + + foreach ($node['children'] as $arg) { + $this->dispatch($arg); + $this->write('%s[] = $value;', $args) + ->write('$value = %s;', $value); + } + + return $this->write( + '$value = Fd::getInstance()->__invoke("%s", %s);', + $node['value'], $args + ); + } + + private function visit_slice(array $node) + { + return $this + ->write('$value = !is_string($value) && !Utils::isArray($value)') + ->write(' ? null : Utils::slice($value, %s, %s, %s);', + var_export($node['value'][0], true), + var_export($node['value'][1], true), + var_export($node['value'][2], true) + ); + } + + private function visit_current(array $node) + { + return $this->write('// Visiting current node (no-op)'); + } + + private function visit_expref(array $node) + { + $child = var_export($node['children'][0], true); + return $this->write('$value = function ($value) use ($interpreter) {') + ->indent() + ->write('return $interpreter->visit(%s, $value);', $child) + ->outdent() + ->write('};'); + } + + private function visit_flatten(array $node) + { + $this->dispatch($node['children'][0]); + $merged = $this->makeVar('merged'); + $val = $this->makeVar('val'); + + $this + ->write('// Visiting merge node') + ->write('if (!Utils::isArray($value)) {') + ->indent() + ->write('$value = null;') + ->outdent() + ->write('} else {') + ->indent() + ->write('%s = [];', $merged) + ->write('foreach ($value as %s) {', $val) + ->indent() + ->write('if (is_array(%s) && array_key_exists(0, %s)) {', $val, $val) + ->indent() + ->write('%s = array_merge(%s, %s);', $merged, $merged, $val) + ->outdent() + ->write('} elseif (%s !== []) {', $val) + ->indent() + ->write('%s[] = %s;', $merged, $val) + ->outdent() + ->write('}') + ->outdent() + ->write('}') + ->write('$value = %s;', $merged) + ->outdent() + ->write('}'); + + return $this; + } + + private function visit_projection(array $node) + { + $val = $this->makeVar('val'); + $collected = $this->makeVar('collected'); + $this->write('// Visiting projection node') + ->dispatch($node['children'][0]) + ->write(''); + + if (!isset($node['from'])) { + $this->write('if (!is_array($value) || !($value instanceof \stdClass)) { $value = null; }'); + } elseif ($node['from'] == 'object') { + $this->write('if (!Utils::isObject($value)) { $value = null; }'); + } elseif ($node['from'] == 'array') { + $this->write('if (!Utils::isArray($value)) { $value = null; }'); + } + + $this->write('if ($value !== null) {') + ->indent() + ->write('%s = [];', $collected) + ->write('foreach ((array) $value as %s) {', $val) + ->indent() + ->write('$value = %s;', $val) + ->dispatch($node['children'][1]) + ->write('if ($value !== null) {') + ->indent() + ->write('%s[] = $value;', $collected) + ->outdent() + ->write('}') + ->outdent() + ->write('}') + ->write('$value = %s;', $collected) + ->outdent() + ->write('}'); + + return $this; + } + + private function visit_condition(array $node) + { + $value = $this->makeVar('beforeCondition'); + return $this + ->write('%s = $value;', $value) + ->write('// Visiting condition node') + ->dispatch($node['children'][0]) + ->write('// Checking result of condition node') + ->write('if (Utils::isTruthy($value)) {') + ->indent() + ->write('$value = %s;', $value) + ->dispatch($node['children'][1]) + ->outdent() + ->write('} else {') + ->indent() + ->write('$value = null;') + ->outdent() + ->write('}'); + } + + private function visit_comparator(array $node) + { + $value = $this->makeVar('val'); + $a = $this->makeVar('left'); + $b = $this->makeVar('right'); + + $this + ->write('// Visiting comparator node') + ->write('%s = $value;', $value) + ->dispatch($node['children'][0]) + ->write('%s = $value;', $a) + ->write('$value = %s;', $value) + ->dispatch($node['children'][1]) + ->write('%s = $value;', $b); + + if ($node['value'] == '==') { + $this->write('$value = Utils::isEqual(%s, %s);', $a, $b); + } elseif ($node['value'] == '!=') { + $this->write('$value = !Utils::isEqual(%s, %s);', $a, $b); + } else { + $this->write( + '$value = (is_int(%s) || is_float(%s)) && (is_int(%s) || is_float(%s)) && %s %s %s;', + $a, $a, $b, $b, $a, $node['value'], $b + ); + } + + return $this; + } + + /** @internal */ + public function __call($method, $args) + { + throw new \RuntimeException( + sprintf('Invalid node encountered: %s', json_encode($args[0])) + ); + } +} diff --git a/vendor/mtdowling/jmespath.php/src/TreeInterpreter.php b/vendor/mtdowling/jmespath.php/src/TreeInterpreter.php new file mode 100644 index 0000000..f4a8aec --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/TreeInterpreter.php @@ -0,0 +1,235 @@ +fnDispatcher = $fnDispatcher ?: FnDispatcher::getInstance(); + } + + /** + * Visits each node in a JMESPath AST and returns the evaluated result. + * + * @param array $node JMESPath AST node + * @param mixed $data Data to evaluate + * + * @return mixed + */ + public function visit(array $node, $data) + { + return $this->dispatch($node, $data); + } + + /** + * Recursively traverses an AST using depth-first, pre-order traversal. + * The evaluation logic for each node type is embedded into a large switch + * statement to avoid the cost of "double dispatch". + * @return mixed + */ + private function dispatch(array $node, $value) + { + $dispatcher = $this->fnDispatcher; + + switch ($node['type']) { + + case 'field': + if (is_array($value) || $value instanceof \ArrayAccess) { + return isset($value[$node['value']]) ? $value[$node['value']] : null; + } elseif ($value instanceof \stdClass) { + return isset($value->{$node['value']}) ? $value->{$node['value']} : null; + } + return null; + + case 'subexpression': + return $this->dispatch( + $node['children'][1], + $this->dispatch($node['children'][0], $value) + ); + + case 'index': + if (!Utils::isArray($value)) { + return null; + } + $idx = $node['value'] >= 0 + ? $node['value'] + : $node['value'] + count($value); + return isset($value[$idx]) ? $value[$idx] : null; + + case 'projection': + $left = $this->dispatch($node['children'][0], $value); + switch ($node['from']) { + case 'object': + if (!Utils::isObject($left)) { + return null; + } + break; + case 'array': + if (!Utils::isArray($left)) { + return null; + } + break; + default: + if (!is_array($left) || !($left instanceof \stdClass)) { + return null; + } + } + + $collected = []; + foreach ((array) $left as $val) { + $result = $this->dispatch($node['children'][1], $val); + if ($result !== null) { + $collected[] = $result; + } + } + + return $collected; + + case 'flatten': + static $skipElement = []; + $value = $this->dispatch($node['children'][0], $value); + + if (!Utils::isArray($value)) { + return null; + } + + $merged = []; + foreach ($value as $values) { + // Only merge up arrays lists and not hashes + if (is_array($values) && array_key_exists(0, $values)) { + $merged = array_merge($merged, $values); + } elseif ($values !== $skipElement) { + $merged[] = $values; + } + } + + return $merged; + + case 'literal': + return $node['value']; + + case 'current': + return $value; + + case 'or': + $result = $this->dispatch($node['children'][0], $value); + return Utils::isTruthy($result) + ? $result + : $this->dispatch($node['children'][1], $value); + + case 'and': + $result = $this->dispatch($node['children'][0], $value); + return Utils::isTruthy($result) + ? $this->dispatch($node['children'][1], $value) + : $result; + + case 'not': + return !Utils::isTruthy( + $this->dispatch($node['children'][0], $value) + ); + + case 'pipe': + return $this->dispatch( + $node['children'][1], + $this->dispatch($node['children'][0], $value) + ); + + case 'multi_select_list': + if ($value === null) { + return null; + } + + $collected = []; + foreach ($node['children'] as $node) { + $collected[] = $this->dispatch($node, $value); + } + + return $collected; + + case 'multi_select_hash': + if ($value === null) { + return null; + } + + $collected = []; + foreach ($node['children'] as $node) { + $collected[$node['value']] = $this->dispatch( + $node['children'][0], + $value + ); + } + + return $collected; + + case 'comparator': + $left = $this->dispatch($node['children'][0], $value); + $right = $this->dispatch($node['children'][1], $value); + if ($node['value'] == '==') { + return Utils::isEqual($left, $right); + } elseif ($node['value'] == '!=') { + return !Utils::isEqual($left, $right); + } else { + return self::relativeCmp($left, $right, $node['value']); + } + + case 'condition': + return Utils::isTruthy($this->dispatch($node['children'][0], $value)) + ? $this->dispatch($node['children'][1], $value) + : null; + + case 'function': + $args = []; + foreach ($node['children'] as $arg) { + $args[] = $this->dispatch($arg, $value); + } + return $dispatcher($node['value'], $args); + + case 'slice': + return is_string($value) || Utils::isArray($value) + ? Utils::slice( + $value, + $node['value'][0], + $node['value'][1], + $node['value'][2] + ) : null; + + case 'expref': + $apply = $node['children'][0]; + return function ($value) use ($apply) { + return $this->visit($apply, $value); + }; + + default: + throw new \RuntimeException("Unknown node type: {$node['type']}"); + } + } + + /** + * @return bool + */ + private static function relativeCmp($left, $right, $cmp) + { + if (!(is_int($left) || is_float($left)) || !(is_int($right) || is_float($right))) { + return false; + } + + switch ($cmp) { + case '>': return $left > $right; + case '>=': return $left >= $right; + case '<': return $left < $right; + case '<=': return $left <= $right; + default: throw new \RuntimeException("Invalid comparison: $cmp"); + } + } +} diff --git a/vendor/mtdowling/jmespath.php/src/Utils.php b/vendor/mtdowling/jmespath.php/src/Utils.php new file mode 100644 index 0000000..9e69fef --- /dev/null +++ b/vendor/mtdowling/jmespath.php/src/Utils.php @@ -0,0 +1,258 @@ + 'boolean', + 'string' => 'string', + 'NULL' => 'null', + 'double' => 'number', + 'float' => 'number', + 'integer' => 'number' + ]; + + /** + * Returns true if the value is truthy + * + * @param mixed $value Value to check + * + * @return bool + */ + public static function isTruthy($value) + { + if (!$value) { + return $value === 0 || $value === '0'; + } elseif ($value instanceof \stdClass) { + return (bool) get_object_vars($value); + } else { + return true; + } + } + + /** + * Gets the JMESPath type equivalent of a PHP variable. + * + * @param mixed $arg PHP variable + * @return string Returns the JSON data type + * @throws \InvalidArgumentException when an unknown type is given. + */ + public static function type($arg) + { + $type = gettype($arg); + if (isset(self::$typeMap[$type])) { + return self::$typeMap[$type]; + } elseif ($type === 'array') { + if (empty($arg)) { + return 'array'; + } + reset($arg); + return key($arg) === 0 ? 'array' : 'object'; + } elseif ($arg instanceof \stdClass) { + return 'object'; + } elseif ($arg instanceof \Closure) { + return 'expression'; + } elseif ($arg instanceof \ArrayAccess + && $arg instanceof \Countable + ) { + return count($arg) == 0 || $arg->offsetExists(0) + ? 'array' + : 'object'; + } elseif (method_exists($arg, '__toString')) { + return 'string'; + } + + throw new \InvalidArgumentException( + 'Unable to determine JMESPath type from ' . get_class($arg) + ); + } + + /** + * Determine if the provided value is a JMESPath compatible object. + * + * @param mixed $value + * + * @return bool + */ + public static function isObject($value) + { + if (is_array($value)) { + return !$value || array_keys($value)[0] !== 0; + } + + // Handle array-like values. Must be empty or offset 0 does not exist + return $value instanceof \Countable && $value instanceof \ArrayAccess + ? count($value) == 0 || !$value->offsetExists(0) + : $value instanceof \stdClass; + } + + /** + * Determine if the provided value is a JMESPath compatible array. + * + * @param mixed $value + * + * @return bool + */ + public static function isArray($value) + { + if (is_array($value)) { + return !$value || array_keys($value)[0] === 0; + } + + // Handle array-like values. Must be empty or offset 0 exists. + return $value instanceof \Countable && $value instanceof \ArrayAccess + ? count($value) == 0 || $value->offsetExists(0) + : false; + } + + /** + * JSON aware value comparison function. + * + * @param mixed $a First value to compare + * @param mixed $b Second value to compare + * + * @return bool + */ + public static function isEqual($a, $b) + { + if ($a === $b) { + return true; + } elseif ($a instanceof \stdClass) { + return self::isEqual((array) $a, $b); + } elseif ($b instanceof \stdClass) { + return self::isEqual($a, (array) $b); + } else { + return false; + } + } + + /** + * Safely add together two values. + * + * @param mixed $a First value to add + * @param mixed $b Second value to add + * + * @return int|float + */ + public static function add($a, $b) + { + if (is_numeric($a)) { + if (is_numeric($b)) { + return $a + $b; + } else { + return $a; + } + } else { + if (is_numeric($b)) { + return $b; + } else { + return 0; + } + } + } + + /** + * JMESPath requires a stable sorting algorithm, so here we'll implement + * a simple Schwartzian transform that uses array index positions as tie + * breakers. + * + * @param array $data List or map of data to sort + * @param callable $sortFn Callable used to sort values + * + * @return array Returns the sorted array + * @link http://en.wikipedia.org/wiki/Schwartzian_transform + */ + public static function stableSort(array $data, callable $sortFn) + { + // Decorate each item by creating an array of [value, index] + array_walk($data, function (&$v, $k) { + $v = [$v, $k]; + }); + // Sort by the sort function and use the index as a tie-breaker + uasort($data, function ($a, $b) use ($sortFn) { + return $sortFn($a[0], $b[0]) ?: ($a[1] < $b[1] ? -1 : 1); + }); + + // Undecorate each item and return the resulting sorted array + return array_map(function ($v) { + return $v[0]; + }, array_values($data)); + } + + /** + * Creates a Python-style slice of a string or array. + * + * @param array|string $value Value to slice + * @param int|null $start Starting position + * @param int|null $stop Stop position + * @param int $step Step (1, 2, -1, -2, etc.) + * + * @return array|string + * @throws \InvalidArgumentException + */ + public static function slice($value, $start = null, $stop = null, $step = 1) + { + if (!is_array($value) && !is_string($value)) { + throw new \InvalidArgumentException('Expects string or array'); + } + + return self::sliceIndices($value, $start, $stop, $step); + } + + private static function adjustEndpoint($length, $endpoint, $step) + { + if ($endpoint < 0) { + $endpoint += $length; + if ($endpoint < 0) { + $endpoint = $step < 0 ? -1 : 0; + } + } elseif ($endpoint >= $length) { + $endpoint = $step < 0 ? $length - 1 : $length; + } + + return $endpoint; + } + + private static function adjustSlice($length, $start, $stop, $step) + { + if ($step === null) { + $step = 1; + } elseif ($step === 0) { + throw new \RuntimeException('step cannot be 0'); + } + + if ($start === null) { + $start = $step < 0 ? $length - 1 : 0; + } else { + $start = self::adjustEndpoint($length, $start, $step); + } + + if ($stop === null) { + $stop = $step < 0 ? -1 : $length; + } else { + $stop = self::adjustEndpoint($length, $stop, $step); + } + + return [$start, $stop, $step]; + } + + private static function sliceIndices($subject, $start, $stop, $step) + { + $type = gettype($subject); + $len = $type == 'string' ? mb_strlen($subject, 'UTF-8') : count($subject); + list($start, $stop, $step) = self::adjustSlice($len, $start, $stop, $step); + + $result = []; + if ($step > 0) { + for ($i = $start; $i < $stop; $i += $step) { + $result[] = $subject[$i]; + } + } else { + for ($i = $start; $i > $stop; $i += $step) { + $result[] = $subject[$i]; + } + } + + return $type == 'string' ? implode('', $result) : $result; + } +} diff --git a/vendor/symfony/polyfill-ctype/Ctype.php b/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 0000000..ba75a2c --- /dev/null +++ b/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,232 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Ctype; + +/** + * Ctype implementation through regex. + * + * @internal + * + * @author Gert de Pagter + */ +final class Ctype +{ + /** + * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. + * + * @see https://php.net/ctype-alnum + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alnum($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is a letter, FALSE otherwise. + * + * @see https://php.net/ctype-alpha + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alpha($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); + } + + /** + * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. + * + * @see https://php.net/ctype-cntrl + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_cntrl($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); + } + + /** + * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. + * + * @see https://php.net/ctype-digit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_digit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. + * + * @see https://php.net/ctype-graph + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_graph($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); + } + + /** + * Returns TRUE if every character in text is a lowercase letter. + * + * @see https://php.net/ctype-lower + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_lower($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); + } + + /** + * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. + * + * @see https://php.net/ctype-print + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_print($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); + } + + /** + * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. + * + * @see https://php.net/ctype-punct + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_punct($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); + } + + /** + * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. + * + * @see https://php.net/ctype-space + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_space($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); + } + + /** + * Returns TRUE if every character in text is an uppercase letter. + * + * @see https://php.net/ctype-upper + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_upper($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); + } + + /** + * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. + * + * @see https://php.net/ctype-xdigit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_xdigit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); + } + + /** + * Converts integers to their char versions according to normal ctype behaviour, if needed. + * + * If an integer between -128 and 255 inclusive is provided, + * it is interpreted as the ASCII value of a single character + * (negative values have 256 added in order to allow characters in the Extended ASCII range). + * Any other integer is interpreted as a string containing the decimal digits of the integer. + * + * @param mixed $int + * @param string $function + * + * @return mixed + */ + private static function convert_int_to_char_for_ctype($int, $function) + { + if (!\is_int($int)) { + return $int; + } + + if ($int < -128 || $int > 255) { + return (string) $int; + } + + if (\PHP_VERSION_ID >= 80100) { + @trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); + } + + if ($int < 0) { + $int += 256; + } + + return \chr($int); + } +} diff --git a/vendor/symfony/polyfill-ctype/LICENSE b/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 0000000..7536cae --- /dev/null +++ b/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018-present Fabien Potencier + +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/symfony/polyfill-ctype/README.md b/vendor/symfony/polyfill-ctype/README.md new file mode 100644 index 0000000..b144d03 --- /dev/null +++ b/vendor/symfony/polyfill-ctype/README.md @@ -0,0 +1,12 @@ +Symfony Polyfill / Ctype +======================== + +This component provides `ctype_*` functions to users who run php versions without the ctype extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/vendor/symfony/polyfill-ctype/bootstrap.php b/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 0000000..d54524b --- /dev/null +++ b/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit($text) { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph($text) { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower($text) { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print($text) { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct($text) { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space($text) { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper($text) { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/vendor/symfony/polyfill-ctype/bootstrap80.php b/vendor/symfony/polyfill-ctype/bootstrap80.php new file mode 100644 index 0000000..ab2f861 --- /dev/null +++ b/vendor/symfony/polyfill-ctype/bootstrap80.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (!function_exists('ctype_alnum')) { + function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } +} diff --git a/vendor/symfony/polyfill-ctype/composer.json b/vendor/symfony/polyfill-ctype/composer.json new file mode 100644 index 0000000..131ca7a --- /dev/null +++ b/vendor/symfony/polyfill-ctype/composer.json @@ -0,0 +1,38 @@ +{ + "name": "symfony/polyfill-ctype", + "type": "library", + "description": "Symfony polyfill for ctype functions", + "keywords": ["polyfill", "compatibility", "portable", "ctype"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/vendor/symfony/yaml/.gitignore b/vendor/symfony/yaml/.gitignore new file mode 100644 index 0000000..c49a5d8 --- /dev/null +++ b/vendor/symfony/yaml/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md new file mode 100644 index 0000000..f55b570 --- /dev/null +++ b/vendor/symfony/yaml/CHANGELOG.md @@ -0,0 +1,28 @@ +CHANGELOG +========= + +2.8.0 +----- + + * Deprecated usage of a colon in an unquoted mapping value + * Deprecated usage of @, \`, | and > at the beginning of an unquoted string + * When surrounding strings with double-quotes, you must now escape `\` characters. Not + escaping those characters (when surrounded by double-quotes) is deprecated. + + Before: + + ```yml + class: "Foo\Var" + ``` + + After: + + ```yml + class: "Foo\\Var" + ``` + +2.1.0 +----- + + * Yaml::parse() does not evaluate loaded files as PHP files by default + anymore (call Yaml::enablePhpParsing() to get back the old behavior) diff --git a/vendor/symfony/yaml/Dumper.php b/vendor/symfony/yaml/Dumper.php new file mode 100644 index 0000000..8b523d1 --- /dev/null +++ b/vendor/symfony/yaml/Dumper.php @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Dumper dumps PHP variables to YAML strings. + * + * @author Fabien Potencier + */ +class Dumper +{ + /** + * The amount of spaces to use for indentation of nested nodes. + * + * @var int + */ + protected $indentation = 4; + + /** + * Sets the indentation. + * + * @param int $num The amount of spaces to use for indentation of nested nodes + */ + public function setIndentation($num) + { + if ($num < 1) { + throw new \InvalidArgumentException('The indentation must be greater than zero.'); + } + + $this->indentation = (int) $num; + } + + /** + * Dumps a PHP value to YAML. + * + * @param mixed $input The PHP value + * @param int $inline The level where you switch to inline YAML + * @param int $indent The level of indentation (used internally) + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * + * @return string The YAML representation of the PHP value + */ + public function dump($input, $inline = 0, $indent = 0, $exceptionOnInvalidType = false, $objectSupport = false) + { + $output = ''; + $prefix = $indent ? str_repeat(' ', $indent) : ''; + + if ($inline <= 0 || !\is_array($input) || empty($input)) { + $output .= $prefix.Inline::dump($input, $exceptionOnInvalidType, $objectSupport); + } else { + $isAHash = Inline::isHash($input); + + foreach ($input as $key => $value) { + $willBeInlined = $inline - 1 <= 0 || !\is_array($value) || empty($value); + + $output .= sprintf('%s%s%s%s', + $prefix, + $isAHash ? Inline::dump($key, $exceptionOnInvalidType, $objectSupport).':' : '-', + $willBeInlined ? ' ' : "\n", + $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + $this->indentation, $exceptionOnInvalidType, $objectSupport) + ).($willBeInlined ? "\n" : ''); + } + } + + return $output; + } +} diff --git a/vendor/symfony/yaml/Escaper.php b/vendor/symfony/yaml/Escaper.php new file mode 100644 index 0000000..2b1321f --- /dev/null +++ b/vendor/symfony/yaml/Escaper.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Escaper encapsulates escaping rules for single and double-quoted + * YAML strings. + * + * @author Matthew Lewinski + * + * @internal + */ +class Escaper +{ + // Characters that would cause a dumped string to require double quoting. + const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9"; + + // Mapping arrays for escaping a double quoted string. The backslash is + // first to ensure proper escaping because str_replace operates iteratively + // on the input arrays. This ordering of the characters avoids the use of strtr, + // which performs more slowly. + private static $escapees = array('\\', '\\\\', '\\"', '"', + "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", + "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", + "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", + "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", + "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9", + ); + private static $escaped = array('\\\\', '\\"', '\\\\', '\\"', + '\\0', '\\x01', '\\x02', '\\x03', '\\x04', '\\x05', '\\x06', '\\a', + '\\b', '\\t', '\\n', '\\v', '\\f', '\\r', '\\x0e', '\\x0f', + '\\x10', '\\x11', '\\x12', '\\x13', '\\x14', '\\x15', '\\x16', '\\x17', + '\\x18', '\\x19', '\\x1a', '\\e', '\\x1c', '\\x1d', '\\x1e', '\\x1f', + '\\N', '\\_', '\\L', '\\P', + ); + + /** + * Determines if a PHP value would require double quoting in YAML. + * + * @param string $value A PHP value + * + * @return bool True if the value would require double quotes + */ + public static function requiresDoubleQuoting($value) + { + return 0 < preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value); + } + + /** + * Escapes and surrounds a PHP value with double quotes. + * + * @param string $value A PHP value + * + * @return string The quoted, escaped string + */ + public static function escapeWithDoubleQuotes($value) + { + return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value)); + } + + /** + * Determines if a PHP value would require single quoting in YAML. + * + * @param string $value A PHP value + * + * @return bool True if the value would require single quotes + */ + public static function requiresSingleQuoting($value) + { + // Determines if a PHP value is entirely composed of a value that would + // require single quoting in YAML. + if (\in_array(strtolower($value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) { + return true; + } + + // Determines if the PHP value contains any single characters that would + // cause it to require single quoting in YAML. + return 0 < preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ \- ? | < > = ! % @ ` ]/x', $value); + } + + /** + * Escapes and surrounds a PHP value with single quotes. + * + * @param string $value A PHP value + * + * @return string The quoted, escaped string + */ + public static function escapeWithSingleQuotes($value) + { + return sprintf("'%s'", str_replace('\'', '\'\'', $value)); + } +} diff --git a/vendor/symfony/yaml/Exception/DumpException.php b/vendor/symfony/yaml/Exception/DumpException.php new file mode 100644 index 0000000..cce972f --- /dev/null +++ b/vendor/symfony/yaml/Exception/DumpException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during dumping. + * + * @author Fabien Potencier + */ +class DumpException extends RuntimeException +{ +} diff --git a/vendor/symfony/yaml/Exception/ExceptionInterface.php b/vendor/symfony/yaml/Exception/ExceptionInterface.php new file mode 100644 index 0000000..ad850ee --- /dev/null +++ b/vendor/symfony/yaml/Exception/ExceptionInterface.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception interface for all exceptions thrown by the component. + * + * @author Fabien Potencier + */ +interface ExceptionInterface +{ +} diff --git a/vendor/symfony/yaml/Exception/ParseException.php b/vendor/symfony/yaml/Exception/ParseException.php new file mode 100644 index 0000000..60802b6 --- /dev/null +++ b/vendor/symfony/yaml/Exception/ParseException.php @@ -0,0 +1,144 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during parsing. + * + * @author Fabien Potencier + */ +class ParseException extends RuntimeException +{ + private $parsedFile; + private $parsedLine; + private $snippet; + private $rawMessage; + + /** + * @param string $message The error message + * @param int $parsedLine The line where the error occurred + * @param string|null $snippet The snippet of code near the problem + * @param string|null $parsedFile The file name where the error occurred + * @param \Exception|null $previous The previous exception + */ + public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null) + { + $this->parsedFile = $parsedFile; + $this->parsedLine = $parsedLine; + $this->snippet = $snippet; + $this->rawMessage = $message; + + $this->updateRepr(); + + parent::__construct($this->message, 0, $previous); + } + + /** + * Gets the snippet of code near the error. + * + * @return string The snippet of code + */ + public function getSnippet() + { + return $this->snippet; + } + + /** + * Sets the snippet of code near the error. + * + * @param string $snippet The code snippet + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + + $this->updateRepr(); + } + + /** + * Gets the filename where the error occurred. + * + * This method returns null if a string is parsed. + * + * @return string The filename + */ + public function getParsedFile() + { + return $this->parsedFile; + } + + /** + * Sets the filename where the error occurred. + * + * @param string $parsedFile The filename + */ + public function setParsedFile($parsedFile) + { + $this->parsedFile = $parsedFile; + + $this->updateRepr(); + } + + /** + * Gets the line where the error occurred. + * + * @return int The file line + */ + public function getParsedLine() + { + return $this->parsedLine; + } + + /** + * Sets the line where the error occurred. + * + * @param int $parsedLine The file line + */ + public function setParsedLine($parsedLine) + { + $this->parsedLine = $parsedLine; + + $this->updateRepr(); + } + + private function updateRepr() + { + $this->message = $this->rawMessage; + + $dot = false; + if ('.' === substr($this->message, -1)) { + $this->message = substr($this->message, 0, -1); + $dot = true; + } + + if (null !== $this->parsedFile) { + if (\PHP_VERSION_ID >= 50400) { + $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } else { + $jsonOptions = 0; + } + $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions)); + } + + if ($this->parsedLine >= 0) { + $this->message .= sprintf(' at line %d', $this->parsedLine); + } + + if ($this->snippet) { + $this->message .= sprintf(' (near "%s")', $this->snippet); + } + + if ($dot) { + $this->message .= '.'; + } + } +} diff --git a/vendor/symfony/yaml/Exception/RuntimeException.php b/vendor/symfony/yaml/Exception/RuntimeException.php new file mode 100644 index 0000000..3f36b73 --- /dev/null +++ b/vendor/symfony/yaml/Exception/RuntimeException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during parsing. + * + * @author Romain Neutron + */ +class RuntimeException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php new file mode 100644 index 0000000..639ff4a --- /dev/null +++ b/vendor/symfony/yaml/Inline.php @@ -0,0 +1,609 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\DumpException; +use Symfony\Component\Yaml\Exception\ParseException; + +/** + * Inline implements a YAML parser/dumper for the YAML inline syntax. + * + * @author Fabien Potencier + */ +class Inline +{ + const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*+(?:\\\\.[^"\\\\]*+)*+)"|\'([^\']*+(?:\'\'[^\']*+)*+)\')'; + + private static $exceptionOnInvalidType = false; + private static $objectSupport = false; + private static $objectForMap = false; + + /** + * Converts a YAML string to a PHP value. + * + * @param string $value A YAML string + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap True if maps should return a stdClass instead of array() + * @param array $references Mapping of variable names to values + * + * @return mixed A PHP value + * + * @throws ParseException + */ + public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false, $references = array()) + { + self::$exceptionOnInvalidType = $exceptionOnInvalidType; + self::$objectSupport = $objectSupport; + self::$objectForMap = $objectForMap; + + $value = trim($value); + + if ('' === $value) { + return ''; + } + + if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + + $i = 0; + switch ($value[0]) { + case '[': + $result = self::parseSequence($value, $i, $references); + ++$i; + break; + case '{': + $result = self::parseMapping($value, $i, $references); + ++$i; + break; + default: + $result = self::parseScalar($value, null, array('"', "'"), $i, true, $references); + } + + // some comments are allowed at the end + if (preg_replace('/\s+#.*$/A', '', substr($value, $i))) { + throw new ParseException(sprintf('Unexpected characters near "%s".', substr($value, $i))); + } + + if (isset($mbEncoding)) { + mb_internal_encoding($mbEncoding); + } + + return $result; + } + + /** + * Dumps a given PHP variable to a YAML string. + * + * @param mixed $value The PHP variable to convert + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * + * @return string The YAML string representing the PHP value + * + * @throws DumpException When trying to dump PHP resource + */ + public static function dump($value, $exceptionOnInvalidType = false, $objectSupport = false) + { + switch (true) { + case \is_resource($value): + if ($exceptionOnInvalidType) { + throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value))); + } + + return 'null'; + case \is_object($value): + if ($objectSupport) { + return '!php/object:'.serialize($value); + } + + if ($exceptionOnInvalidType) { + throw new DumpException('Object support when dumping a YAML file has been disabled.'); + } + + return 'null'; + case \is_array($value): + return self::dumpArray($value, $exceptionOnInvalidType, $objectSupport); + case null === $value: + return 'null'; + case true === $value: + return 'true'; + case false === $value: + return 'false'; + case ctype_digit($value): + return \is_string($value) ? "'$value'" : (int) $value; + case is_numeric($value): + $locale = setlocale(LC_NUMERIC, 0); + if (false !== $locale) { + setlocale(LC_NUMERIC, 'C'); + } + if (\is_float($value)) { + $repr = (string) $value; + if (is_infinite($value)) { + $repr = str_ireplace('INF', '.Inf', $repr); + } elseif (floor($value) == $value && $repr == $value) { + // Preserve float data type since storing a whole number will result in integer value. + $repr = '!!float '.$repr; + } + } else { + $repr = \is_string($value) ? "'$value'" : (string) $value; + } + if (false !== $locale) { + setlocale(LC_NUMERIC, $locale); + } + + return $repr; + case '' == $value: + return "''"; + case Escaper::requiresDoubleQuoting($value): + return Escaper::escapeWithDoubleQuotes($value); + case Escaper::requiresSingleQuoting($value): + case Parser::preg_match(self::getHexRegex(), $value): + case Parser::preg_match(self::getTimestampRegex(), $value): + return Escaper::escapeWithSingleQuotes($value); + default: + return $value; + } + } + + /** + * Check if given array is hash or just normal indexed array. + * + * @internal + * + * @param array $value The PHP array to check + * + * @return bool true if value is hash array, false otherwise + */ + public static function isHash(array $value) + { + $expectedKey = 0; + + foreach ($value as $key => $val) { + if ($key !== $expectedKey++) { + return true; + } + } + + return false; + } + + /** + * Dumps a PHP array to a YAML string. + * + * @param array $value The PHP array to dump + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * + * @return string The YAML string representing the PHP array + */ + private static function dumpArray($value, $exceptionOnInvalidType, $objectSupport) + { + // array + if ($value && !self::isHash($value)) { + $output = array(); + foreach ($value as $val) { + $output[] = self::dump($val, $exceptionOnInvalidType, $objectSupport); + } + + return sprintf('[%s]', implode(', ', $output)); + } + + // hash + $output = array(); + foreach ($value as $key => $val) { + $output[] = sprintf('%s: %s', self::dump($key, $exceptionOnInvalidType, $objectSupport), self::dump($val, $exceptionOnInvalidType, $objectSupport)); + } + + return sprintf('{ %s }', implode(', ', $output)); + } + + /** + * Parses a YAML scalar. + * + * @param string $scalar + * @param string[] $delimiters + * @param string[] $stringDelimiters + * @param int &$i + * @param bool $evaluate + * @param array $references + * + * @return string + * + * @throws ParseException When malformed inline YAML string is parsed + * + * @internal + */ + public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true, $references = array()) + { + if (\in_array($scalar[$i], $stringDelimiters)) { + // quoted scalar + $output = self::parseQuotedScalar($scalar, $i); + + if (null !== $delimiters) { + $tmp = ltrim(substr($scalar, $i), ' '); + if ('' === $tmp) { + throw new ParseException(sprintf('Unexpected end of line, expected one of "%s".', implode('', $delimiters))); + } + if (!\in_array($tmp[0], $delimiters)) { + throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i))); + } + } + } else { + // "normal" string + if (!$delimiters) { + $output = substr($scalar, $i); + $i += \strlen($output); + + // remove comments + if (Parser::preg_match('/[ \t]+#/', $output, $match, PREG_OFFSET_CAPTURE)) { + $output = substr($output, 0, $match[0][1]); + } + } elseif (Parser::preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) { + $output = $match[1]; + $i += \strlen($output); + } else { + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $scalar)); + } + + // a non-quoted string cannot start with @ or ` (reserved) nor with a scalar indicator (| or >) + if ($output && ('@' === $output[0] || '`' === $output[0] || '|' === $output[0] || '>' === $output[0])) { + @trigger_error(sprintf('Not quoting the scalar "%s" starting with "%s" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $output, $output[0]), E_USER_DEPRECATED); + + // to be thrown in 3.0 + // throw new ParseException(sprintf('The reserved indicator "%s" cannot start a plain scalar; you need to quote the scalar.', $output[0])); + } + + if ($evaluate) { + $output = self::evaluateScalar($output, $references); + } + } + + return $output; + } + + /** + * Parses a YAML quoted scalar. + * + * @param string $scalar + * @param int &$i + * + * @return string + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseQuotedScalar($scalar, &$i) + { + if (!Parser::preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) { + throw new ParseException(sprintf('Malformed inline YAML string: %s.', substr($scalar, $i))); + } + + $output = substr($match[0], 1, \strlen($match[0]) - 2); + + $unescaper = new Unescaper(); + if ('"' == $scalar[$i]) { + $output = $unescaper->unescapeDoubleQuotedString($output); + } else { + $output = $unescaper->unescapeSingleQuotedString($output); + } + + $i += \strlen($match[0]); + + return $output; + } + + /** + * Parses a YAML sequence. + * + * @param string $sequence + * @param int &$i + * @param array $references + * + * @return array + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseSequence($sequence, &$i = 0, $references = array()) + { + $output = array(); + $len = \strlen($sequence); + ++$i; + + // [foo, bar, ...] + while ($i < $len) { + switch ($sequence[$i]) { + case '[': + // nested sequence + $output[] = self::parseSequence($sequence, $i, $references); + break; + case '{': + // nested mapping + $output[] = self::parseMapping($sequence, $i, $references); + break; + case ']': + return $output; + case ',': + case ' ': + break; + default: + $isQuoted = \in_array($sequence[$i], array('"', "'")); + $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i, true, $references); + + // the value can be an array if a reference has been resolved to an array var + if (!\is_array($value) && !$isQuoted && false !== strpos($value, ': ')) { + // embedded mapping? + try { + $pos = 0; + $value = self::parseMapping('{'.$value.'}', $pos, $references); + } catch (\InvalidArgumentException $e) { + // no, it's not + } + } + + $output[] = $value; + + --$i; + } + + ++$i; + } + + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $sequence)); + } + + /** + * Parses a YAML mapping. + * + * @param string $mapping + * @param int &$i + * @param array $references + * + * @return array|\stdClass + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseMapping($mapping, &$i = 0, $references = array()) + { + $output = array(); + $len = \strlen($mapping); + ++$i; + $allowOverwrite = false; + + // {foo: bar, bar:foo, ...} + while ($i < $len) { + switch ($mapping[$i]) { + case ' ': + case ',': + ++$i; + continue 2; + case '}': + if (self::$objectForMap) { + return (object) $output; + } + + return $output; + } + + // key + $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false); + + if ('<<' === $key) { + $allowOverwrite = true; + } + + // value + $done = false; + + while ($i < $len) { + switch ($mapping[$i]) { + case '[': + // nested sequence + $value = self::parseSequence($mapping, $i, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + // But overwriting is allowed when a merge node is used in current block. + if ('<<' === $key) { + foreach ($value as $parsedValue) { + $output += $parsedValue; + } + } elseif ($allowOverwrite || !isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + break; + case '{': + // nested mapping + $value = self::parseMapping($mapping, $i, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + // But overwriting is allowed when a merge node is used in current block. + if ('<<' === $key) { + $output += $value; + } elseif ($allowOverwrite || !isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + break; + case ':': + case ' ': + break; + default: + $value = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i, true, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + // But overwriting is allowed when a merge node is used in current block. + if ('<<' === $key) { + $output += $value; + } elseif ($allowOverwrite || !isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + --$i; + } + + ++$i; + + if ($done) { + continue 2; + } + } + } + + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $mapping)); + } + + /** + * Evaluates scalars and replaces magic values. + * + * @param string $scalar + * @param array $references + * + * @return mixed The evaluated YAML string + * + * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved + */ + private static function evaluateScalar($scalar, $references = array()) + { + $scalar = trim($scalar); + $scalarLower = strtolower($scalar); + + if (0 === strpos($scalar, '*')) { + if (false !== $pos = strpos($scalar, '#')) { + $value = substr($scalar, 1, $pos - 2); + } else { + $value = substr($scalar, 1); + } + + // an unquoted * + if (false === $value || '' === $value) { + throw new ParseException('A reference must contain at least one character.'); + } + + if (!array_key_exists($value, $references)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $value)); + } + + return $references[$value]; + } + + switch (true) { + case 'null' === $scalarLower: + case '' === $scalar: + case '~' === $scalar: + return; + case 'true' === $scalarLower: + return true; + case 'false' === $scalarLower: + return false; + // Optimise for returning strings. + case '+' === $scalar[0] || '-' === $scalar[0] || '.' === $scalar[0] || '!' === $scalar[0] || is_numeric($scalar[0]): + switch (true) { + case 0 === strpos($scalar, '!str'): + return (string) substr($scalar, 5); + case 0 === strpos($scalar, '! '): + return (int) self::parseScalar(substr($scalar, 2)); + case 0 === strpos($scalar, '!php/object:'): + if (self::$objectSupport) { + return unserialize(substr($scalar, 12)); + } + + if (self::$exceptionOnInvalidType) { + throw new ParseException('Object support when parsing a YAML file has been disabled.'); + } + + return; + case 0 === strpos($scalar, '!!php/object:'): + if (self::$objectSupport) { + return unserialize(substr($scalar, 13)); + } + + if (self::$exceptionOnInvalidType) { + throw new ParseException('Object support when parsing a YAML file has been disabled.'); + } + + return; + case 0 === strpos($scalar, '!!float '): + return (float) substr($scalar, 8); + case ctype_digit($scalar): + $raw = $scalar; + $cast = (int) $scalar; + + return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); + case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)): + $raw = $scalar; + $cast = (int) $scalar; + + return '0' == $scalar[1] ? octdec($scalar) : (((string) $raw === (string) $cast) ? $cast : $raw); + case is_numeric($scalar): + case Parser::preg_match(self::getHexRegex(), $scalar): + return '0x' === $scalar[0].$scalar[1] ? hexdec($scalar) : (float) $scalar; + case '.inf' === $scalarLower: + case '.nan' === $scalarLower: + return -log(0); + case '-.inf' === $scalarLower: + return log(0); + case Parser::preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar): + return (float) str_replace(',', '', $scalar); + case Parser::preg_match(self::getTimestampRegex(), $scalar): + $timeZone = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $time = strtotime($scalar); + date_default_timezone_set($timeZone); + + return $time; + } + // no break + default: + return (string) $scalar; + } + } + + /** + * Gets a regex that matches a YAML date. + * + * @return string The regular expression + * + * @see http://www.yaml.org/spec/1.2/spec.html#id2761573 + */ + private static function getTimestampRegex() + { + return <<[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)? + $~x +EOF; + } + + /** + * Gets a regex that matches a YAML number in hexadecimal notation. + * + * @return string + */ + private static function getHexRegex() + { + return '~^0x[0-9a-f]++$~i'; + } +} diff --git a/vendor/symfony/yaml/LICENSE b/vendor/symfony/yaml/LICENSE new file mode 100644 index 0000000..21d7fb9 --- /dev/null +++ b/vendor/symfony/yaml/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-2018 Fabien Potencier + +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/symfony/yaml/Parser.php b/vendor/symfony/yaml/Parser.php new file mode 100644 index 0000000..cb0d8f1 --- /dev/null +++ b/vendor/symfony/yaml/Parser.php @@ -0,0 +1,852 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\ParseException; + +/** + * Parser parses YAML strings to convert them to PHP arrays. + * + * @author Fabien Potencier + */ +class Parser +{ + const BLOCK_SCALAR_HEADER_PATTERN = '(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?'; + // BC - wrongly named + const FOLDED_SCALAR_PATTERN = self::BLOCK_SCALAR_HEADER_PATTERN; + + private $offset = 0; + private $totalNumberOfLines; + private $lines = array(); + private $currentLineNb = -1; + private $currentLine = ''; + private $refs = array(); + private $skippedLineNumbers = array(); + private $locallySkippedLineNumbers = array(); + + /** + * @param int $offset The offset of YAML document (used for line numbers in error messages) + * @param int|null $totalNumberOfLines The overall number of lines being parsed + * @param int[] $skippedLineNumbers Number of comment lines that have been skipped by the parser + */ + public function __construct($offset = 0, $totalNumberOfLines = null, array $skippedLineNumbers = array()) + { + $this->offset = $offset; + $this->totalNumberOfLines = $totalNumberOfLines; + $this->skippedLineNumbers = $skippedLineNumbers; + } + + /** + * Parses a YAML string to a PHP value. + * + * @param string $value A YAML string + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap True if maps should return a stdClass instead of array() + * + * @return mixed A PHP value + * + * @throws ParseException If the YAML is not valid + */ + public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) + { + if (false === preg_match('//u', $value)) { + throw new ParseException('The YAML value does not appear to be valid UTF-8.'); + } + + $this->refs = array(); + + $mbEncoding = null; + $e = null; + $data = null; + + if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('UTF-8'); + } + + try { + $data = $this->doParse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } catch (\Exception $e) { + } catch (\Throwable $e) { + } + + if (null !== $mbEncoding) { + mb_internal_encoding($mbEncoding); + } + + $this->lines = array(); + $this->currentLine = ''; + $this->refs = array(); + $this->skippedLineNumbers = array(); + $this->locallySkippedLineNumbers = array(); + + if (null !== $e) { + throw $e; + } + + return $data; + } + + private function doParse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) + { + $this->currentLineNb = -1; + $this->currentLine = ''; + $value = $this->cleanup($value); + $this->lines = explode("\n", $value); + $this->locallySkippedLineNumbers = array(); + + if (null === $this->totalNumberOfLines) { + $this->totalNumberOfLines = \count($this->lines); + } + + $data = array(); + $context = null; + $allowOverwrite = false; + + while ($this->moveToNextLine()) { + if ($this->isCurrentLineEmpty()) { + continue; + } + + // tab? + if ("\t" === $this->currentLine[0]) { + throw new ParseException('A YAML file cannot contain tabs as indentation.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $isRef = $mergeNode = false; + if (self::preg_match('#^\-((?P\s+)(?P.+))?$#u', rtrim($this->currentLine), $values)) { + if ($context && 'mapping' == $context) { + throw new ParseException('You cannot define a sequence item when in a mapping', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + $context = 'sequence'; + + if (isset($values['value']) && self::preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + // array + if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) { + $data[] = $this->parseBlock($this->getRealCurrentLineNb() + 1, $this->getNextEmbedBlock(null, true), $exceptionOnInvalidType, $objectSupport, $objectForMap); + } else { + if (isset($values['leadspaces']) + && self::preg_match('#^(?P'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\{\[].*?) *\:(\s+(?P.+))?$#u', rtrim($values['value']), $matches) + ) { + // this is a compact notation element, add to next block and parse + $block = $values['value']; + if ($this->isNextLineIndented()) { + $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + \strlen($values['leadspaces']) + 1); + } + + $data[] = $this->parseBlock($this->getRealCurrentLineNb(), $block, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } else { + $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context); + } + } + if ($isRef) { + $this->refs[$isRef] = end($data); + } + } elseif ( + self::preg_match('#^(?P'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P.+))?$#u', rtrim($this->currentLine), $values) + && (false === strpos($values['key'], ' #') || \in_array($values['key'][0], array('"', "'"))) + ) { + if ($context && 'sequence' == $context) { + throw new ParseException('You cannot define a mapping item when in a sequence', $this->currentLineNb + 1, $this->currentLine); + } + $context = 'mapping'; + + // force correct settings + Inline::parse(null, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + try { + $key = Inline::parseScalar($values['key']); + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + + // Convert float keys to strings, to avoid being converted to integers by PHP + if (\is_float($key)) { + $key = (string) $key; + } + + if ('<<' === $key && (!isset($values['value']) || !self::preg_match('#^&(?P[^ ]+)#u', $values['value'], $refMatches))) { + $mergeNode = true; + $allowOverwrite = true; + if (isset($values['value']) && 0 === strpos($values['value'], '*')) { + $refName = substr($values['value'], 1); + if (!array_key_exists($refName, $this->refs)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $refName), $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $refValue = $this->refs[$refName]; + + if (!\is_array($refValue)) { + throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $data += $refValue; // array union + } else { + if (isset($values['value']) && '' !== $values['value']) { + $value = $values['value']; + } else { + $value = $this->getNextEmbedBlock(); + } + $parsed = $this->parseBlock($this->getRealCurrentLineNb() + 1, $value, $exceptionOnInvalidType, $objectSupport, $objectForMap); + + if (!\is_array($parsed)) { + throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + if (isset($parsed[0])) { + // If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes + // and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier + // in the sequence override keys specified in later mapping nodes. + foreach ($parsed as $parsedItem) { + if (!\is_array($parsedItem)) { + throw new ParseException('Merge items must be arrays.', $this->getRealCurrentLineNb() + 1, $parsedItem); + } + + $data += $parsedItem; // array union + } + } else { + // If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the + // current mapping, unless the key already exists in it. + $data += $parsed; // array union + } + } + } elseif ('<<' !== $key && isset($values['value']) && self::preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + if ($mergeNode) { + // Merge keys + } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#') || '<<' === $key) { + // hash + // if next line is less indented or equal, then it means that the current value is null + if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) { + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + if ($allowOverwrite || !isset($data[$key])) { + $data[$key] = null; + } + } else { + $value = $this->parseBlock($this->getRealCurrentLineNb() + 1, $this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport, $objectForMap); + + if ('<<' === $key) { + $this->refs[$refMatches['ref']] = $value; + $data += $value; + } elseif ($allowOverwrite || !isset($data[$key])) { + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + $data[$key] = $value; + } + } + } else { + $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context); + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + if ($allowOverwrite || !isset($data[$key])) { + $data[$key] = $value; + } + } + if ($isRef) { + $this->refs[$isRef] = $data[$key]; + } + } else { + // multiple documents are not supported + if ('---' === $this->currentLine) { + throw new ParseException('Multiple documents are not supported.', $this->currentLineNb + 1, $this->currentLine); + } + + // 1-liner optionally followed by newline(s) + if (\is_string($value) && $this->lines[0] === trim($value)) { + try { + $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + + return $value; + } + + throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } + + if ($objectForMap && !\is_object($data) && 'mapping' === $context) { + $object = new \stdClass(); + + foreach ($data as $key => $value) { + $object->$key = $value; + } + + $data = $object; + } + + return empty($data) ? null : $data; + } + + private function parseBlock($offset, $yaml, $exceptionOnInvalidType, $objectSupport, $objectForMap) + { + $skippedLineNumbers = $this->skippedLineNumbers; + + foreach ($this->locallySkippedLineNumbers as $lineNumber) { + if ($lineNumber < $offset) { + continue; + } + + $skippedLineNumbers[] = $lineNumber; + } + + $parser = new self($offset, $this->totalNumberOfLines, $skippedLineNumbers); + $parser->refs = &$this->refs; + + return $parser->doParse($yaml, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } + + /** + * Returns the current line number (takes the offset into account). + * + * @return int The current line number + */ + private function getRealCurrentLineNb() + { + $realCurrentLineNumber = $this->currentLineNb + $this->offset; + + foreach ($this->skippedLineNumbers as $skippedLineNumber) { + if ($skippedLineNumber > $realCurrentLineNumber) { + break; + } + + ++$realCurrentLineNumber; + } + + return $realCurrentLineNumber; + } + + /** + * Returns the current line indentation. + * + * @return int The current line indentation + */ + private function getCurrentLineIndentation() + { + return \strlen($this->currentLine) - \strlen(ltrim($this->currentLine, ' ')); + } + + /** + * Returns the next embed block of YAML. + * + * @param int $indentation The indent level at which the block is to be read, or null for default + * @param bool $inSequence True if the enclosing data structure is a sequence + * + * @return string A YAML string + * + * @throws ParseException When indentation problem are detected + */ + private function getNextEmbedBlock($indentation = null, $inSequence = false) + { + $oldLineIndentation = $this->getCurrentLineIndentation(); + $blockScalarIndentations = array(); + + if ($this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + if (!$this->moveToNextLine()) { + return; + } + + if (null === $indentation) { + $newIndent = $this->getCurrentLineIndentation(); + + $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem(); + + if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) { + throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } else { + $newIndent = $indentation; + } + + $data = array(); + if ($this->getCurrentLineIndentation() >= $newIndent) { + $data[] = substr($this->currentLine, $newIndent); + } else { + $this->moveToPreviousLine(); + + return; + } + + if ($inSequence && $oldLineIndentation === $newIndent && isset($data[0][0]) && '-' === $data[0][0]) { + // the previous line contained a dash but no item content, this line is a sequence item with the same indentation + // and therefore no nested list or mapping + $this->moveToPreviousLine(); + + return; + } + + $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem(); + + if (empty($blockScalarIndentations) && $this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + $previousLineIndentation = $this->getCurrentLineIndentation(); + + while ($this->moveToNextLine()) { + $indent = $this->getCurrentLineIndentation(); + + // terminate all block scalars that are more indented than the current line + if (!empty($blockScalarIndentations) && $indent < $previousLineIndentation && '' !== trim($this->currentLine)) { + foreach ($blockScalarIndentations as $key => $blockScalarIndentation) { + if ($blockScalarIndentation >= $this->getCurrentLineIndentation()) { + unset($blockScalarIndentations[$key]); + } + } + } + + if (empty($blockScalarIndentations) && !$this->isCurrentLineComment() && $this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + $previousLineIndentation = $indent; + + if ($isItUnindentedCollection && !$this->isCurrentLineEmpty() && !$this->isStringUnIndentedCollectionItem() && $newIndent === $indent) { + $this->moveToPreviousLine(); + break; + } + + if ($this->isCurrentLineBlank()) { + $data[] = substr($this->currentLine, $newIndent); + continue; + } + + // we ignore "comment" lines only when we are not inside a scalar block + if (empty($blockScalarIndentations) && $this->isCurrentLineComment()) { + // remember ignored comment lines (they are used later in nested + // parser calls to determine real line numbers) + // + // CAUTION: beware to not populate the global property here as it + // will otherwise influence the getRealCurrentLineNb() call here + // for consecutive comment lines and subsequent embedded blocks + $this->locallySkippedLineNumbers[] = $this->getRealCurrentLineNb(); + + continue; + } + + if ($indent >= $newIndent) { + $data[] = substr($this->currentLine, $newIndent); + } elseif (0 == $indent) { + $this->moveToPreviousLine(); + + break; + } else { + throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } + + return implode("\n", $data); + } + + /** + * Moves the parser to the next line. + * + * @return bool + */ + private function moveToNextLine() + { + if ($this->currentLineNb >= \count($this->lines) - 1) { + return false; + } + + $this->currentLine = $this->lines[++$this->currentLineNb]; + + return true; + } + + /** + * Moves the parser to the previous line. + * + * @return bool + */ + private function moveToPreviousLine() + { + if ($this->currentLineNb < 1) { + return false; + } + + $this->currentLine = $this->lines[--$this->currentLineNb]; + + return true; + } + + /** + * Parses a YAML value. + * + * @param string $value A YAML value + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap True if maps should return a stdClass instead of array() + * @param string $context The parser context (either sequence or mapping) + * + * @return mixed A PHP value + * + * @throws ParseException When reference does not exist + */ + private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $context) + { + if (0 === strpos($value, '*')) { + if (false !== $pos = strpos($value, '#')) { + $value = substr($value, 1, $pos - 2); + } else { + $value = substr($value, 1); + } + + if (!array_key_exists($value, $this->refs)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $value), $this->currentLineNb + 1, $this->currentLine); + } + + return $this->refs[$value]; + } + + if (self::preg_match('/^'.self::BLOCK_SCALAR_HEADER_PATTERN.'$/', $value, $matches)) { + $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : ''; + + return $this->parseBlockScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), (int) abs($modifiers)); + } + + try { + $parsedValue = Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + + if ('mapping' === $context && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && false !== strpos($parsedValue, ': ')) { + @trigger_error(sprintf('Using a colon in the unquoted mapping value "%s" in line %d is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $value, $this->getRealCurrentLineNb() + 1), E_USER_DEPRECATED); + + // to be thrown in 3.0 + // throw new ParseException('A colon cannot be used in an unquoted mapping value.'); + } + + return $parsedValue; + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + } + + /** + * Parses a block scalar. + * + * @param string $style The style indicator that was used to begin this block scalar (| or >) + * @param string $chomping The chomping indicator that was used to begin this block scalar (+ or -) + * @param int $indentation The indentation indicator that was used to begin this block scalar + * + * @return string The text value + */ + private function parseBlockScalar($style, $chomping = '', $indentation = 0) + { + $notEOF = $this->moveToNextLine(); + if (!$notEOF) { + return ''; + } + + $isCurrentLineBlank = $this->isCurrentLineBlank(); + $blockLines = array(); + + // leading blank lines are consumed before determining indentation + while ($notEOF && $isCurrentLineBlank) { + // newline only if not EOF + if ($notEOF = $this->moveToNextLine()) { + $blockLines[] = ''; + $isCurrentLineBlank = $this->isCurrentLineBlank(); + } + } + + // determine indentation if not specified + if (0 === $indentation) { + if (self::preg_match('/^ +/', $this->currentLine, $matches)) { + $indentation = \strlen($matches[0]); + } + } + + if ($indentation > 0) { + $pattern = sprintf('/^ {%d}(.*)$/', $indentation); + + while ( + $notEOF && ( + $isCurrentLineBlank || + self::preg_match($pattern, $this->currentLine, $matches) + ) + ) { + if ($isCurrentLineBlank && \strlen($this->currentLine) > $indentation) { + $blockLines[] = substr($this->currentLine, $indentation); + } elseif ($isCurrentLineBlank) { + $blockLines[] = ''; + } else { + $blockLines[] = $matches[1]; + } + + // newline only if not EOF + if ($notEOF = $this->moveToNextLine()) { + $isCurrentLineBlank = $this->isCurrentLineBlank(); + } + } + } elseif ($notEOF) { + $blockLines[] = ''; + } + + if ($notEOF) { + $blockLines[] = ''; + $this->moveToPreviousLine(); + } elseif (!$notEOF && !$this->isCurrentLineLastLineInDocument()) { + $blockLines[] = ''; + } + + // folded style + if ('>' === $style) { + $text = ''; + $previousLineIndented = false; + $previousLineBlank = false; + + for ($i = 0, $blockLinesCount = \count($blockLines); $i < $blockLinesCount; ++$i) { + if ('' === $blockLines[$i]) { + $text .= "\n"; + $previousLineIndented = false; + $previousLineBlank = true; + } elseif (' ' === $blockLines[$i][0]) { + $text .= "\n".$blockLines[$i]; + $previousLineIndented = true; + $previousLineBlank = false; + } elseif ($previousLineIndented) { + $text .= "\n".$blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } elseif ($previousLineBlank || 0 === $i) { + $text .= $blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } else { + $text .= ' '.$blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } + } + } else { + $text = implode("\n", $blockLines); + } + + // deal with trailing newlines + if ('' === $chomping) { + $text = preg_replace('/\n+$/', "\n", $text); + } elseif ('-' === $chomping) { + $text = preg_replace('/\n+$/', '', $text); + } + + return $text; + } + + /** + * Returns true if the next line is indented. + * + * @return bool Returns true if the next line is indented, false otherwise + */ + private function isNextLineIndented() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $EOF = !$this->moveToNextLine(); + + while (!$EOF && $this->isCurrentLineEmpty()) { + $EOF = !$this->moveToNextLine(); + } + + if ($EOF) { + return false; + } + + $ret = $this->getCurrentLineIndentation() > $currentIndentation; + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the current line is blank or if it is a comment line. + * + * @return bool Returns true if the current line is empty or if it is a comment line, false otherwise + */ + private function isCurrentLineEmpty() + { + return $this->isCurrentLineBlank() || $this->isCurrentLineComment(); + } + + /** + * Returns true if the current line is blank. + * + * @return bool Returns true if the current line is blank, false otherwise + */ + private function isCurrentLineBlank() + { + return '' == trim($this->currentLine, ' '); + } + + /** + * Returns true if the current line is a comment line. + * + * @return bool Returns true if the current line is a comment line, false otherwise + */ + private function isCurrentLineComment() + { + //checking explicitly the first char of the trim is faster than loops or strpos + $ltrimmedLine = ltrim($this->currentLine, ' '); + + return '' !== $ltrimmedLine && '#' === $ltrimmedLine[0]; + } + + private function isCurrentLineLastLineInDocument() + { + return ($this->offset + $this->currentLineNb) >= ($this->totalNumberOfLines - 1); + } + + /** + * Cleanups a YAML string to be parsed. + * + * @param string $value The input YAML string + * + * @return string A cleaned up YAML string + */ + private function cleanup($value) + { + $value = str_replace(array("\r\n", "\r"), "\n", $value); + + // strip YAML header + $count = 0; + $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count); + $this->offset += $count; + + // remove leading comments + $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count); + if (1 == $count) { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + } + + // remove start of the document marker (---) + $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count); + if (1 == $count) { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + + // remove end of the document marker (...) + $value = preg_replace('#\.\.\.\s*$#', '', $value); + } + + return $value; + } + + /** + * Returns true if the next line starts unindented collection. + * + * @return bool Returns true if the next line starts unindented collection, false otherwise + */ + private function isNextLineUnIndentedCollection() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineEmpty()) { + $notEOF = $this->moveToNextLine(); + } + + if (false === $notEOF) { + return false; + } + + $ret = $this->getCurrentLineIndentation() === $currentIndentation && $this->isStringUnIndentedCollectionItem(); + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the string is un-indented collection item. + * + * @return bool Returns true if the string is un-indented collection item, false otherwise + */ + private function isStringUnIndentedCollectionItem() + { + return '-' === rtrim($this->currentLine) || 0 === strpos($this->currentLine, '- '); + } + + /** + * Tests whether or not the current line is the header of a block scalar. + * + * @return bool + */ + private function isBlockScalarHeader() + { + return (bool) self::preg_match('~'.self::BLOCK_SCALAR_HEADER_PATTERN.'$~', $this->currentLine); + } + + /** + * A local wrapper for `preg_match` which will throw a ParseException if there + * is an internal error in the PCRE engine. + * + * This avoids us needing to check for "false" every time PCRE is used + * in the YAML engine + * + * @throws ParseException on a PCRE internal error + * + * @see preg_last_error() + * + * @internal + */ + public static function preg_match($pattern, $subject, &$matches = null, $flags = 0, $offset = 0) + { + if (false === $ret = preg_match($pattern, $subject, $matches, $flags, $offset)) { + switch (preg_last_error()) { + case PREG_INTERNAL_ERROR: + $error = 'Internal PCRE error.'; + break; + case PREG_BACKTRACK_LIMIT_ERROR: + $error = 'pcre.backtrack_limit reached.'; + break; + case PREG_RECURSION_LIMIT_ERROR: + $error = 'pcre.recursion_limit reached.'; + break; + case PREG_BAD_UTF8_ERROR: + $error = 'Malformed UTF-8 data.'; + break; + case PREG_BAD_UTF8_OFFSET_ERROR: + $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point.'; + break; + default: + $error = 'Error.'; + } + + throw new ParseException($error); + } + + return $ret; + } +} diff --git a/vendor/symfony/yaml/README.md b/vendor/symfony/yaml/README.md new file mode 100644 index 0000000..0d32488 --- /dev/null +++ b/vendor/symfony/yaml/README.md @@ -0,0 +1,13 @@ +Yaml Component +============== + +The Yaml component loads and dumps YAML files. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/yaml/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/vendor/symfony/yaml/Tests/DumperTest.php b/vendor/symfony/yaml/Tests/DumperTest.php new file mode 100644 index 0000000..6bac6da --- /dev/null +++ b/vendor/symfony/yaml/Tests/DumperTest.php @@ -0,0 +1,257 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Dumper; +use Symfony\Component\Yaml\Parser; + +class DumperTest extends TestCase +{ + protected $parser; + protected $dumper; + protected $path; + + protected $array = array( + '' => 'bar', + 'foo' => '#bar', + 'foo\'bar' => array(), + 'bar' => array(1, 'foo'), + 'foobar' => array( + 'foo' => 'bar', + 'bar' => array(1, 'foo'), + 'foobar' => array( + 'foo' => 'bar', + 'bar' => array(1, 'foo'), + ), + ), + ); + + protected function setUp() + { + $this->parser = new Parser(); + $this->dumper = new Dumper(); + $this->path = __DIR__.'/Fixtures'; + } + + protected function tearDown() + { + $this->parser = null; + $this->dumper = null; + $this->path = null; + $this->array = null; + } + + public function testSetIndentation() + { + $this->dumper->setIndentation(7); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: + - 1 + - foo + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 4, 0)); + } + + public function testSpecifications() + { + $files = $this->parser->parse(file_get_contents($this->path.'/index.yml')); + foreach ($files as $file) { + $yamls = file_get_contents($this->path.'/'.$file.'.yml'); + + // split YAMLs documents + foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) { + if (!$yaml) { + continue; + } + + $test = $this->parser->parse($yaml); + if (isset($test['dump_skip']) && $test['dump_skip']) { + continue; + } elseif (isset($test['todo']) && $test['todo']) { + // TODO + } else { + eval('$expected = '.trim($test['php']).';'); + $this->assertSame($expected, $this->parser->parse($this->dumper->dump($expected, 10)), $test['test']); + } + } + } + } + + public function testInlineLevel() + { + $expected = <<<'EOF' +{ '': bar, foo: '#bar', 'foo''bar': { }, bar: [1, foo], foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } } +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, -10), '->dump() takes an inline level argument'); + $this->assertEquals($expected, $this->dumper->dump($this->array, 0), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: [1, foo] +foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 1), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: [1, foo] + foobar: { foo: bar, bar: [1, foo] } + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 2), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: [1, foo] + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 3), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: + - 1 + - foo + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 4), '->dump() takes an inline level argument'); + $this->assertEquals($expected, $this->dumper->dump($this->array, 10), '->dump() takes an inline level argument'); + } + + public function testObjectSupportEnabled() + { + $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true); + + $this->assertEquals('{ foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects'); + } + + public function testObjectSupportDisabledButNoExceptions() + { + $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1)); + + $this->assertEquals('{ foo: null, bar: 1 }', $dump, '->dump() does not dump objects when disabled'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\DumpException + */ + public function testObjectSupportDisabledWithExceptions() + { + $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true, false); + } + + /** + * @dataProvider getEscapeSequences + */ + public function testEscapedEscapeSequencesInQuotedScalar($input, $expected) + { + $this->assertEquals($expected, $this->dumper->dump($input)); + } + + public function getEscapeSequences() + { + return array( + 'empty string' => array('', "''"), + 'null' => array("\x0", '"\\0"'), + 'bell' => array("\x7", '"\\a"'), + 'backspace' => array("\x8", '"\\b"'), + 'horizontal-tab' => array("\t", '"\\t"'), + 'line-feed' => array("\n", '"\\n"'), + 'vertical-tab' => array("\v", '"\\v"'), + 'form-feed' => array("\xC", '"\\f"'), + 'carriage-return' => array("\r", '"\\r"'), + 'escape' => array("\x1B", '"\\e"'), + 'space' => array(' ', "' '"), + 'double-quote' => array('"', "'\"'"), + 'slash' => array('/', '/'), + 'backslash' => array('\\', '\\'), + 'next-line' => array("\xC2\x85", '"\\N"'), + 'non-breaking-space' => array("\xc2\xa0", '"\\_"'), + 'line-separator' => array("\xE2\x80\xA8", '"\\L"'), + 'paragraph-separator' => array("\xE2\x80\xA9", '"\\P"'), + 'colon' => array(':', "':'"), + ); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testZeroIndentationThrowsException() + { + $this->dumper->setIndentation(0); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testNegativeIndentationThrowsException() + { + $this->dumper->setIndentation(-4); + } +} + +class A +{ + public $a = 'foo'; +} diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml new file mode 100644 index 0000000..5f9c942 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml @@ -0,0 +1,31 @@ +--- %YAML:1.0 +test: Simple Alias Example +brief: > + If you need to refer to the same item of data twice, + you can give that item an alias. The alias is a plain + string, starting with an ampersand. The item may then + be referred to by the alias throughout your document + by using an asterisk before the name of the alias. + This is called an anchor. +yaml: | + - &showell Steve + - Clark + - Brian + - Oren + - *showell +php: | + array('Steve', 'Clark', 'Brian', 'Oren', 'Steve') + +--- +test: Alias of a Mapping +brief: > + An alias can be used on any item of data, including + sequences, mappings, and other complex data types. +yaml: | + - &hello + Meat: pork + Starch: potato + - banana + - *hello +php: | + array(array('Meat'=>'pork', 'Starch'=>'potato'), 'banana', array('Meat'=>'pork', 'Starch'=>'potato')) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml new file mode 100644 index 0000000..dfd9302 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml @@ -0,0 +1,202 @@ +--- %YAML:1.0 +test: Simple Sequence +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - banana + - carrot +php: | + array('apple', 'banana', 'carrot') +--- +test: Sequence With Item Being Null In The Middle +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - + - carrot +php: | + array('apple', null, 'carrot') +--- +test: Sequence With Last Item Being Null +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - banana + - +php: | + array('apple', 'banana', null) +--- +test: Nested Sequences +brief: | + You can include a sequence within another + sequence by giving the sequence an empty + dash, followed by an indented list. +yaml: | + - + - foo + - bar + - baz +php: | + array(array('foo', 'bar', 'baz')) +--- +test: Mixed Sequences +brief: | + Sequences can contain any YAML data, + including strings and other sequences. +yaml: | + - apple + - + - foo + - bar + - x123 + - banana + - carrot +php: | + array('apple', array('foo', 'bar', 'x123'), 'banana', 'carrot') +--- +test: Deeply Nested Sequences +brief: | + Sequences can be nested even deeper, with each + level of indentation representing a level of + depth. +yaml: | + - + - + - uno + - dos +php: | + array(array(array('uno', 'dos'))) +--- +test: Simple Mapping +brief: | + You can add a keyed list (also known as a dictionary or + hash) to your document by placing each member of the + list on a new line, with a colon separating the key + from its value. In YAML, this type of list is called + a mapping. +yaml: | + foo: whatever + bar: stuff +php: | + array('foo' => 'whatever', 'bar' => 'stuff') +--- +test: Sequence in a Mapping +brief: | + A value in a mapping can be a sequence. +yaml: | + foo: whatever + bar: + - uno + - dos +php: | + array('foo' => 'whatever', 'bar' => array('uno', 'dos')) +--- +test: Nested Mappings +brief: | + A value in a mapping can be another mapping. +yaml: | + foo: whatever + bar: + fruit: apple + name: steve + sport: baseball +php: | + array( + 'foo' => 'whatever', + 'bar' => array( + 'fruit' => 'apple', + 'name' => 'steve', + 'sport' => 'baseball' + ) + ) +--- +test: Mixed Mapping +brief: | + A mapping can contain any assortment + of mappings and sequences as values. +yaml: | + foo: whatever + bar: + - + fruit: apple + name: steve + sport: baseball + - more + - + python: rocks + perl: papers + ruby: scissorses +php: | + array( + 'foo' => 'whatever', + 'bar' => array( + array( + 'fruit' => 'apple', + 'name' => 'steve', + 'sport' => 'baseball' + ), + 'more', + array( + 'python' => 'rocks', + 'perl' => 'papers', + 'ruby' => 'scissorses' + ) + ) + ) +--- +test: Mapping-in-Sequence Shortcut +todo: true +brief: | + If you are adding a mapping to a sequence, you + can place the mapping on the same line as the + dash as a shortcut. +yaml: | + - work on YAML.py: + - work on Store +php: | + array(array('work on YAML.py' => array('work on Store'))) +--- +test: Sequence-in-Mapping Shortcut +todo: true +brief: | + The dash in a sequence counts as indentation, so + you can add a sequence inside of a mapping without + needing spaces as indentation. +yaml: | + allow: + - 'localhost' + - '%.sourceforge.net' + - '%.freepan.org' +php: | + array('allow' => array('localhost', '%.sourceforge.net', '%.freepan.org')) +--- +todo: true +test: Merge key +brief: | + A merge key ('<<') can be used in a mapping to insert other mappings. If + the value associated with the merge key is a mapping, each of its key/value + pairs is inserted into the current mapping. +yaml: | + mapping: + name: Joe + job: Accountant + <<: + age: 38 +php: | + array( + 'mapping' => + array( + 'name' => 'Joe', + 'job' => 'Accountant', + 'age' => 38 + ) + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml new file mode 100644 index 0000000..f7ca469 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml @@ -0,0 +1,51 @@ +--- +test: One Element Mapping +brief: | + A mapping with one key/value pair +yaml: | + foo: bar +php: | + array('foo' => 'bar') +--- +test: Multi Element Mapping +brief: | + More than one key/value pair +yaml: | + red: baron + white: walls + blue: berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) +--- +test: Values aligned +brief: | + Often times human editors of documents will align the values even + though YAML emitters generally don't. +yaml: | + red: baron + white: walls + blue: berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) +--- +test: Colons aligned +brief: | + Spaces can come before the ': ' key/value separator. +yaml: | + red : baron + white : walls + blue : berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml new file mode 100644 index 0000000..d988102 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml @@ -0,0 +1,85 @@ +--- %YAML:1.0 +test: Trailing Document Separator +todo: true +brief: > + You can separate YAML documents + with a string of three dashes. +yaml: | + - foo: 1 + bar: 2 + --- + more: stuff +python: | + [ + [ { 'foo': 1, 'bar': 2 } ], + { 'more': 'stuff' } + ] +ruby: | + [ { 'foo' => 1, 'bar' => 2 } ] + +--- +test: Leading Document Separator +todo: true +brief: > + You can explicitly give an opening + document separator to your YAML stream. +yaml: | + --- + - foo: 1 + bar: 2 + --- + more: stuff +python: | + [ + [ {'foo': 1, 'bar': 2}], + {'more': 'stuff'} + ] +ruby: | + [ { 'foo' => 1, 'bar' => 2 } ] + +--- +test: YAML Header +todo: true +brief: > + The opening separator can contain directives + to the YAML parser, such as the version + number. +yaml: | + --- %YAML:1.0 + foo: 1 + bar: 2 +php: | + array('foo' => 1, 'bar' => 2) +documents: 1 + +--- +test: Red Herring Document Separator +brief: > + Separators included in blocks or strings + are treated as blocks or strings, as the + document separator should have no indentation + preceding it. +yaml: | + foo: | + --- +php: | + array('foo' => "---\n") + +--- +test: Multiple Document Separators in Block +brief: > + This technique allows you to embed other YAML + documents within literal blocks. +yaml: | + foo: | + --- + foo: bar + --- + yo: baz + bar: | + fooness +php: | + array( + 'foo' => "---\nfoo: bar\n---\nyo: baz\n", + 'bar' => "fooness\n" + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml new file mode 100644 index 0000000..e8506fc --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml @@ -0,0 +1,25 @@ +--- +test: Missing value for hash item +todo: true +brief: | + Third item in this hash doesn't have a value +yaml: | + okay: value + also okay: ~ + causes error because no value specified + last key: value okay here too +python-error: causes error because no value specified + +--- +test: Not indenting enough +brief: | + There was a bug in PyYaml where it was off by one + in the indentation check. It was allowing the YAML + below. +# This is actually valid YAML now. Someone should tell showell. +yaml: | + foo: + firstline: 1 + secondline: 2 +php: | + array('foo' => null, 'firstline' => 1, 'secondline' => 2) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml new file mode 100644 index 0000000..03090e4 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml @@ -0,0 +1,60 @@ +--- +test: Simple Inline Array +brief: > + Sequences can be contained on a + single line, using the inline syntax. + Separate each entry with commas and + enclose in square brackets. +yaml: | + seq: [ a, b, c ] +php: | + array('seq' => array('a', 'b', 'c')) +--- +test: Simple Inline Hash +brief: > + Mapping can also be contained on + a single line, using the inline + syntax. Each key-value pair is + separated by a colon, with a comma + between each entry in the mapping. + Enclose with curly braces. +yaml: | + hash: { name: Steve, foo: bar } +php: | + array('hash' => array('name' => 'Steve', 'foo' => 'bar')) +--- +test: Multi-line Inline Collections +todo: true +brief: > + Both inline sequences and inline mappings + can span multiple lines, provided that you + indent the additional lines. +yaml: | + languages: [ Ruby, + Perl, + Python ] + websites: { YAML: yaml.org, + Ruby: ruby-lang.org, + Python: python.org, + Perl: use.perl.org } +php: | + array( + 'languages' => array('Ruby', 'Perl', 'Python'), + 'websites' => array( + 'YAML' => 'yaml.org', + 'Ruby' => 'ruby-lang.org', + 'Python' => 'python.org', + 'Perl' => 'use.perl.org' + ) + ) +--- +test: Commas in Values (not in the spec!) +todo: true +brief: > + List items in collections are delimited by commas, but + there must be a space after each comma. This allows you + to add numbers without quoting. +yaml: | + attendances: [ 45,123, 70,000, 17,222 ] +php: | + array('attendances' => array(45123, 70000, 17222)) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml new file mode 100644 index 0000000..a14735a --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml @@ -0,0 +1,176 @@ +--- %YAML:1.0 +test: Single ending newline +brief: > + A pipe character, followed by an indented + block of text is treated as a literal + block, in which newlines are preserved + throughout the block, including the final + newline. +yaml: | + --- + this: | + Foo + Bar +php: | + array('this' => "Foo\nBar\n") +--- +test: The '+' indicator +brief: > + The '+' indicator says to keep newlines at the end of text + blocks. +yaml: | + normal: | + extra new lines not kept + + preserving: |+ + extra new lines are kept + + + dummy: value +php: | + array( + 'normal' => "extra new lines not kept\n", + 'preserving' => "extra new lines are kept\n\n\n", + 'dummy' => 'value' + ) +--- +test: Three trailing newlines in literals +brief: > + To give you more control over how space + is preserved in text blocks, YAML has + the keep '+' and chomp '-' indicators. + The keep indicator will preserve all + ending newlines, while the chomp indicator + will strip all ending newlines. +yaml: | + clipped: | + This has one newline. + + + + same as "clipped" above: "This has one newline.\n" + + stripped: |- + This has no newline. + + + + same as "stripped" above: "This has no newline." + + kept: |+ + This has four newlines. + + + + same as "kept" above: "This has four newlines.\n\n\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has four newlines.\n\n\n\n", + 'same as "kept" above' => "This has four newlines.\n\n\n\n" + ) +--- +test: Extra trailing newlines with spaces +todo: true +brief: > + Normally, only a single newline is kept + from the end of a literal block, unless the + keep '+' character is used in combination + with the pipe. The following example + will preserve all ending whitespace + since the last line of both literal blocks + contains spaces which extend past the indentation + level. +yaml: | + --- + this: | + Foo + + + kept: |+ + Foo + + +php: | + array('this' => "Foo\n\n \n", + 'kept' => "Foo\n\n \n" ) + +--- +test: Folded Block in a Sequence +brief: > + A greater-then character, followed by an indented + block of text is treated as a folded block, in + which lines of text separated by a single newline + are concatenated as a single line. +yaml: | + --- + - apple + - banana + - > + can't you see + the beauty of yaml? + hmm + - dog +php: | + array( + 'apple', + 'banana', + "can't you see the beauty of yaml? hmm\n", + 'dog' + ) +--- +test: Folded Block as a Mapping Value +brief: > + Both literal and folded blocks can be + used in collections, as values in a + sequence or a mapping. +yaml: | + --- + quote: > + Mark McGwire's + year was crippled + by a knee injury. + source: espn +php: | + array( + 'quote' => "Mark McGwire's year was crippled by a knee injury.\n", + 'source' => 'espn' + ) +--- +test: Three trailing newlines in folded blocks +brief: > + The keep and chomp indicators can also + be applied to folded blocks. +yaml: | + clipped: > + This has one newline. + + + + same as "clipped" above: "This has one newline.\n" + + stripped: >- + This has no newline. + + + + same as "stripped" above: "This has no newline." + + kept: >+ + This has four newlines. + + + + same as "kept" above: "This has four newlines.\n\n\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has four newlines.\n\n\n\n", + 'same as "kept" above' => "This has four newlines.\n\n\n\n" + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml new file mode 100644 index 0000000..9a5300f --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml @@ -0,0 +1,45 @@ +--- %YAML:1.0 +test: Empty Sequence +brief: > + You can represent the empty sequence + with an empty inline sequence. +yaml: | + empty: [] +php: | + array('empty' => array()) +--- +test: Empty Mapping +brief: > + You can represent the empty mapping + with an empty inline mapping. +yaml: | + empty: {} +php: | + array('empty' => array()) +--- +test: Empty Sequence as Entire Document +yaml: | + [] +php: | + array() +--- +test: Empty Mapping as Entire Document +yaml: | + {} +php: | + array() +--- +test: Null as Document +yaml: | + ~ +php: | + null +--- +test: Empty String +brief: > + You can represent an empty string + with a pair of quotes. +yaml: | + '' +php: | + '' diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml new file mode 100644 index 0000000..ec1c4c3 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml @@ -0,0 +1,1697 @@ +--- %YAML:1.0 +test: Sequence of scalars +spec: 2.1 +yaml: | + - Mark McGwire + - Sammy Sosa + - Ken Griffey +php: | + array('Mark McGwire', 'Sammy Sosa', 'Ken Griffey') +--- +test: Mapping of scalars to scalars +spec: 2.2 +yaml: | + hr: 65 + avg: 0.278 + rbi: 147 +php: | + array('hr' => 65, 'avg' => 0.278, 'rbi' => 147) +--- +test: Mapping of scalars to sequences +spec: 2.3 +yaml: | + american: + - Boston Red Sox + - Detroit Tigers + - New York Yankees + national: + - New York Mets + - Chicago Cubs + - Atlanta Braves +php: | + array('american' => + array( 'Boston Red Sox', 'Detroit Tigers', + 'New York Yankees' ), + 'national' => + array( 'New York Mets', 'Chicago Cubs', + 'Atlanta Braves' ) + ) +--- +test: Sequence of mappings +spec: 2.4 +yaml: | + - + name: Mark McGwire + hr: 65 + avg: 0.278 + - + name: Sammy Sosa + hr: 63 + avg: 0.288 +php: | + array( + array('name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278), + array('name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288) + ) +--- +test: Legacy A5 +todo: true +spec: legacy_A5 +yaml: | + ? + - New York Yankees + - Atlanta Braves + : + - 2001-07-02 + - 2001-08-12 + - 2001-08-14 + ? + - Detroit Tigers + - Chicago Cubs + : + - 2001-07-23 +perl-busted: > + YAML.pm will be able to emulate this behavior soon. In this regard + it may be somewhat more correct than Python's native behaviour which + can only use tuples as mapping keys. PyYAML will also need to figure + out some clever way to roundtrip structured keys. +python: | + [ + { + ('New York Yankees', 'Atlanta Braves'): + [yaml.timestamp('2001-07-02'), + yaml.timestamp('2001-08-12'), + yaml.timestamp('2001-08-14')], + ('Detroit Tigers', 'Chicago Cubs'): + [yaml.timestamp('2001-07-23')] + } + ] +ruby: | + { + [ 'New York Yankees', 'Atlanta Braves' ] => + [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ], + [ 'Detroit Tigers', 'Chicago Cubs' ] => + [ Date.new( 2001, 7, 23 ) ] + } +syck: | + struct test_node seq1[] = { + { T_STR, 0, "New York Yankees" }, + { T_STR, 0, "Atlanta Braves" }, + end_node + }; + struct test_node seq2[] = { + { T_STR, 0, "2001-07-02" }, + { T_STR, 0, "2001-08-12" }, + { T_STR, 0, "2001-08-14" }, + end_node + }; + struct test_node seq3[] = { + { T_STR, 0, "Detroit Tigers" }, + { T_STR, 0, "Chicago Cubs" }, + end_node + }; + struct test_node seq4[] = { + { T_STR, 0, "2001-07-23" }, + end_node + }; + struct test_node map[] = { + { T_SEQ, 0, 0, seq1 }, + { T_SEQ, 0, 0, seq2 }, + { T_SEQ, 0, 0, seq3 }, + { T_SEQ, 0, 0, seq4 }, + end_node + }; + struct test_node stream[] = { + { T_MAP, 0, 0, map }, + end_node + }; + +--- +test: Sequence of sequences +spec: 2.5 +yaml: | + - [ name , hr , avg ] + - [ Mark McGwire , 65 , 0.278 ] + - [ Sammy Sosa , 63 , 0.288 ] +php: | + array( + array( 'name', 'hr', 'avg' ), + array( 'Mark McGwire', 65, 0.278 ), + array( 'Sammy Sosa', 63, 0.288 ) + ) +--- +test: Mapping of mappings +todo: true +spec: 2.6 +yaml: | + Mark McGwire: {hr: 65, avg: 0.278} + Sammy Sosa: { + hr: 63, + avg: 0.288 + } +php: | + array( + 'Mark McGwire' => + array( 'hr' => 65, 'avg' => 0.278 ), + 'Sammy Sosa' => + array( 'hr' => 63, 'avg' => 0.288 ) + ) +--- +test: Two documents in a stream each with a leading comment +todo: true +spec: 2.7 +yaml: | + # Ranking of 1998 home runs + --- + - Mark McGwire + - Sammy Sosa + - Ken Griffey + + # Team ranking + --- + - Chicago Cubs + - St Louis Cardinals +ruby: | + y = YAML::Stream.new + y.add( [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] ) + y.add( [ 'Chicago Cubs', 'St Louis Cardinals' ] ) +documents: 2 + +--- +test: Play by play feed from a game +todo: true +spec: 2.8 +yaml: | + --- + time: 20:03:20 + player: Sammy Sosa + action: strike (miss) + ... + --- + time: 20:03:47 + player: Sammy Sosa + action: grand slam + ... +perl: | + [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] +documents: 2 + +--- +test: Single document with two comments +spec: 2.9 +yaml: | + hr: # 1998 hr ranking + - Mark McGwire + - Sammy Sosa + rbi: + # 1998 rbi ranking + - Sammy Sosa + - Ken Griffey +php: | + array( + 'hr' => array( 'Mark McGwire', 'Sammy Sosa' ), + 'rbi' => array( 'Sammy Sosa', 'Ken Griffey' ) + ) +--- +test: Node for Sammy Sosa appears twice in this document +spec: 2.10 +yaml: | + --- + hr: + - Mark McGwire + # Following node labeled SS + - &SS Sammy Sosa + rbi: + - *SS # Subsequent occurrence + - Ken Griffey +php: | + array( + 'hr' => + array('Mark McGwire', 'Sammy Sosa'), + 'rbi' => + array('Sammy Sosa', 'Ken Griffey') + ) +--- +test: Mapping between sequences +todo: true +spec: 2.11 +yaml: | + ? # PLAY SCHEDULE + - Detroit Tigers + - Chicago Cubs + : + - 2001-07-23 + + ? [ New York Yankees, + Atlanta Braves ] + : [ 2001-07-02, 2001-08-12, + 2001-08-14 ] +ruby: | + { + [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ], + [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ] + } +syck: | + struct test_node seq1[] = { + { T_STR, 0, "New York Yankees" }, + { T_STR, 0, "Atlanta Braves" }, + end_node + }; + struct test_node seq2[] = { + { T_STR, 0, "2001-07-02" }, + { T_STR, 0, "2001-08-12" }, + { T_STR, 0, "2001-08-14" }, + end_node + }; + struct test_node seq3[] = { + { T_STR, 0, "Detroit Tigers" }, + { T_STR, 0, "Chicago Cubs" }, + end_node + }; + struct test_node seq4[] = { + { T_STR, 0, "2001-07-23" }, + end_node + }; + struct test_node map[] = { + { T_SEQ, 0, 0, seq3 }, + { T_SEQ, 0, 0, seq4 }, + { T_SEQ, 0, 0, seq1 }, + { T_SEQ, 0, 0, seq2 }, + end_node + }; + struct test_node stream[] = { + { T_MAP, 0, 0, map }, + end_node + }; + +--- +test: Sequence key shortcut +spec: 2.12 +yaml: | + --- + # products purchased + - item : Super Hoop + quantity: 1 + - item : Basketball + quantity: 4 + - item : Big Shoes + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'item' => 'Basketball', + 'quantity' => 4, + ), + array ( + 'item' => 'Big Shoes', + 'quantity' => 1, + ) + ) +perl: | + [ + { item => 'Super Hoop', quantity => 1 }, + { item => 'Basketball', quantity => 4 }, + { item => 'Big Shoes', quantity => 1 } + ] + +ruby: | + [ + { 'item' => 'Super Hoop', 'quantity' => 1 }, + { 'item' => 'Basketball', 'quantity' => 4 }, + { 'item' => 'Big Shoes', 'quantity' => 1 } + ] +python: | + [ + { 'item': 'Super Hoop', 'quantity': 1 }, + { 'item': 'Basketball', 'quantity': 4 }, + { 'item': 'Big Shoes', 'quantity': 1 } + ] +syck: | + struct test_node map1[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Super Hoop" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "1" }, + end_node + }; + struct test_node map2[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Basketball" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "4" }, + end_node + }; + struct test_node map3[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Big Shoes" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "1" }, + end_node + }; + struct test_node seq[] = { + { T_MAP, 0, 0, map1 }, + { T_MAP, 0, 0, map2 }, + { T_MAP, 0, 0, map3 }, + end_node + }; + struct test_node stream[] = { + { T_SEQ, 0, 0, seq }, + end_node + }; + + +--- +test: Literal perserves newlines +todo: true +spec: 2.13 +yaml: | + # ASCII Art + --- | + \//||\/|| + // || ||_ +perl: | + "\\//||\\/||\n// || ||_\n" +ruby: | + "\\//||\\/||\n// || ||_\n" +python: | + [ + flushLeft( + """ + \//||\/|| + // || ||_ + """ + ) + ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "\\//||\\/||\n// || ||_\n" }, + end_node + }; + +--- +test: Folded treats newlines as a space +todo: true +spec: 2.14 +yaml: | + --- + Mark McGwire's + year was crippled + by a knee injury. +perl: | + "Mark McGwire's year was crippled by a knee injury." +ruby: | + "Mark McGwire's year was crippled by a knee injury." +python: | + [ "Mark McGwire's year was crippled by a knee injury." ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "Mark McGwire's year was crippled by a knee injury." }, + end_node + }; + +--- +test: Newlines preserved for indented and blank lines +todo: true +spec: 2.15 +yaml: | + --- > + Sammy Sosa completed another + fine season with great stats. + + 63 Home Runs + 0.288 Batting Average + + What a year! +perl: | + "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" +ruby: | + "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" +python: | + [ + flushLeft( + """ + Sammy Sosa completed another fine season with great stats. + + 63 Home Runs + 0.288 Batting Average + + What a year! + """ + ) + ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" }, + end_node + }; + + +--- +test: Indentation determines scope +spec: 2.16 +yaml: | + name: Mark McGwire + accomplishment: > + Mark set a major league + home run record in 1998. + stats: | + 65 Home Runs + 0.278 Batting Average +php: | + array( + 'name' => 'Mark McGwire', + 'accomplishment' => "Mark set a major league home run record in 1998.\n", + 'stats' => "65 Home Runs\n0.278 Batting Average\n" + ) +--- +test: Quoted scalars +todo: true +spec: 2.17 +yaml: | + unicode: "Sosa did fine.\u263A" + control: "\b1998\t1999\t2000\n" + hexesc: "\x0D\x0A is \r\n" + + single: '"Howdy!" he cried.' + quoted: ' # not a ''comment''.' + tie-fighter: '|\-*-/|' +ruby: | + { + "tie-fighter" => "|\\-*-/|", + "control"=>"\0101998\t1999\t2000\n", + "unicode"=>"Sosa did fine." + ["263A".hex ].pack('U*'), + "quoted"=>" # not a 'comment'.", + "single"=>"\"Howdy!\" he cried.", + "hexesc"=>"\r\n is \r\n" + } +--- +test: Multiline flow scalars +todo: true +spec: 2.18 +yaml: | + plain: + This unquoted scalar + spans many lines. + + quoted: "So does this + quoted scalar.\n" +ruby: | + { + 'plain' => 'This unquoted scalar spans many lines.', + 'quoted' => "So does this quoted scalar.\n" + } +--- +test: Integers +spec: 2.19 +yaml: | + canonical: 12345 + decimal: +12,345 + octal: 014 + hexadecimal: 0xC +php: | + array( + 'canonical' => 12345, + 'decimal' => 12345.0, + 'octal' => 014, + 'hexadecimal' => 0xC + ) +--- +# FIX: spec shows parens around -inf and NaN +test: Floating point +spec: 2.20 +yaml: | + canonical: 1.23015e+3 + exponential: 12.3015e+02 + fixed: 1,230.15 + negative infinity: -.inf + not a number: .NaN + float as whole number: !!float 1 +php: | + array( + 'canonical' => 1230.15, + 'exponential' => 1230.15, + 'fixed' => 1230.15, + 'negative infinity' => log(0), + 'not a number' => -log(0), + 'float as whole number' => (float) 1 + ) +--- +test: Miscellaneous +spec: 2.21 +yaml: | + null: ~ + true: true + false: false + string: '12345' +php: | + array( + '' => null, + 1 => true, + 0 => false, + 'string' => '12345' + ) +--- +test: Timestamps +todo: true +spec: 2.22 +yaml: | + canonical: 2001-12-15T02:59:43.1Z + iso8601: 2001-12-14t21:59:43.10-05:00 + spaced: 2001-12-14 21:59:43.10 -05:00 + date: 2002-12-14 # Time is noon UTC +php: | + array( + 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ), + 'iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'date' => Date.new( 2002, 12, 14 ) + ) +--- +test: legacy Timestamps test +todo: true +spec: legacy D4 +yaml: | + canonical: 2001-12-15T02:59:43.00Z + iso8601: 2001-02-28t21:59:43.00-05:00 + spaced: 2001-12-14 21:59:43.00 -05:00 + date: 2002-12-14 +php: | + array( + 'canonical' => Time::utc( 2001, 12, 15, 2, 59, 43, 0 ), + 'iso8601' => YAML::mktime( 2001, 2, 28, 21, 59, 43, 0, "-05:00" ), + 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0, "-05:00" ), + 'date' => Date.new( 2002, 12, 14 ) + ) +--- +test: Various explicit families +todo: true +spec: 2.23 +yaml: | + not-date: !str 2002-04-28 + picture: !binary | + R0lGODlhDAAMAIQAAP//9/X + 17unp5WZmZgAAAOfn515eXv + Pz7Y6OjuDg4J+fn5OTk6enp + 56enmleECcgggoBADs= + + application specific tag: !!something | + The semantics of the tag + above may be different for + different documents. + +ruby-setup: | + YAML.add_private_type( "something" ) do |type, val| + "SOMETHING: #{val}" + end +ruby: | + { + 'not-date' => '2002-04-28', + 'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;", + 'application specific tag' => "SOMETHING: The semantics of the tag\nabove may be different for\ndifferent documents.\n" + } +--- +test: Application specific family +todo: true +spec: 2.24 +yaml: | + # Establish a tag prefix + --- !clarkevans.com,2002/graph/^shape + # Use the prefix: shorthand for + # !clarkevans.com,2002/graph/circle + - !^circle + center: &ORIGIN {x: 73, 'y': 129} + radius: 7 + - !^line # !clarkevans.com,2002/graph/line + start: *ORIGIN + finish: { x: 89, 'y': 102 } + - !^label + start: *ORIGIN + color: 0xFFEEBB + value: Pretty vector drawing. +ruby-setup: | + YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val| + if Array === val + val << "Shape Container" + val + else + raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect + end + } + one_shape_proc = Proc.new { |type, val| + scheme, domain, type = type.split( /:/, 3 ) + if val.is_a? ::Hash + val['TYPE'] = "Shape: #{type}" + val + else + raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect + end + } + YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc ) + YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc ) + YAML.add_domain_type( "clarkevans.com,2002", 'graph/label', &one_shape_proc ) +ruby: | + [ + { + "radius" => 7, + "center"=> + { + "x" => 73, + "y" => 129 + }, + "TYPE" => "Shape: graph/circle" + }, { + "finish" => + { + "x" => 89, + "y" => 102 + }, + "TYPE" => "Shape: graph/line", + "start" => + { + "x" => 73, + "y" => 129 + } + }, { + "TYPE" => "Shape: graph/label", + "value" => "Pretty vector drawing.", + "start" => + { + "x" => 73, + "y" => 129 + }, + "color" => 16772795 + }, + "Shape Container" + ] +# --- +# test: Unordered set +# spec: 2.25 +# yaml: | +# # sets are represented as a +# # mapping where each key is +# # associated with the empty string +# --- !set +# ? Mark McGwire +# ? Sammy Sosa +# ? Ken Griff +--- +test: Ordered mappings +todo: true +spec: 2.26 +yaml: | + # ordered maps are represented as + # a sequence of mappings, with + # each mapping having one key + --- !omap + - Mark McGwire: 65 + - Sammy Sosa: 63 + - Ken Griffy: 58 +ruby: | + YAML::Omap[ + 'Mark McGwire', 65, + 'Sammy Sosa', 63, + 'Ken Griffy', 58 + ] +--- +test: Invoice +dump_skip: true +spec: 2.27 +yaml: | + --- !clarkevans.com,2002/^invoice + invoice: 34843 + date : 2001-01-23 + bill-to: &id001 + given : Chris + family : Dumars + address: + lines: | + 458 Walkman Dr. + Suite #292 + city : Royal Oak + state : MI + postal : 48046 + ship-to: *id001 + product: + - + sku : BL394D + quantity : 4 + description : Basketball + price : 450.00 + - + sku : BL4438H + quantity : 1 + description : Super Hoop + price : 2392.00 + tax : 251.42 + total: 4443.52 + comments: > + Late afternoon is best. + Backup contact is Nancy + Billsmer @ 338-4338. +php: | + array( + 'invoice' => 34843, 'date' => gmmktime(0, 0, 0, 1, 23, 2001), + 'bill-to' => + array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) ) + , 'ship-to' => + array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) ) + , 'product' => + array( + array( 'sku' => 'BL394D', 'quantity' => 4, 'description' => 'Basketball', 'price' => 450.00 ), + array( 'sku' => 'BL4438H', 'quantity' => 1, 'description' => 'Super Hoop', 'price' => 2392.00 ) + ), + 'tax' => 251.42, 'total' => 4443.52, + 'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n" + ) +--- +test: Log file +todo: true +spec: 2.28 +yaml: | + --- + Time: 2001-11-23 15:01:42 -05:00 + User: ed + Warning: > + This is an error message + for the log file + --- + Time: 2001-11-23 15:02:31 -05:00 + User: ed + Warning: > + A slightly different error + message. + --- + Date: 2001-11-23 15:03:17 -05:00 + User: ed + Fatal: > + Unknown variable "bar" + Stack: + - file: TopClass.py + line: 23 + code: | + x = MoreObject("345\n") + - file: MoreClass.py + line: 58 + code: |- + foo = bar +ruby: | + y = YAML::Stream.new + y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ), + 'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } ) + y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ), + 'User' => 'ed', 'Warning' => "A slightly different error message.\n" } ) + y.add( { 'Date' => YAML::mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ), + 'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n", + 'Stack' => [ + { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" }, + { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } ) +documents: 3 + +--- +test: Throwaway comments +yaml: | + ### These are four throwaway comment ### + + ### lines (the second line is empty). ### + this: | # Comments may trail lines. + contains three lines of text. + The third one starts with a + # character. This isn't a comment. + + # These are three throwaway comment + # lines (the first line is empty). +php: | + array( + 'this' => "contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n" + ) +--- +test: Document with a single value +todo: true +yaml: | + --- > + This YAML stream contains a single text value. + The next stream is a log file - a sequence of + log entries. Adding an entry to the log is a + simple matter of appending it at the end. +ruby: | + "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n" +--- +test: Document stream +todo: true +yaml: | + --- + at: 2001-08-12 09:25:00.00 Z + type: GET + HTTP: '1.0' + url: '/index.html' + --- + at: 2001-08-12 09:25:10.00 Z + type: GET + HTTP: '1.0' + url: '/toc.html' +ruby: | + y = YAML::Stream.new + y.add( { + 'at' => Time::utc( 2001, 8, 12, 9, 25, 00 ), + 'type' => 'GET', + 'HTTP' => '1.0', + 'url' => '/index.html' + } ) + y.add( { + 'at' => Time::utc( 2001, 8, 12, 9, 25, 10 ), + 'type' => 'GET', + 'HTTP' => '1.0', + 'url' => '/toc.html' + } ) +documents: 2 + +--- +test: Top level mapping +yaml: | + # This stream is an example of a top-level mapping. + invoice : 34843 + date : 2001-01-23 + total : 4443.52 +php: | + array( + 'invoice' => 34843, + 'date' => gmmktime(0, 0, 0, 1, 23, 2001), + 'total' => 4443.52 + ) +--- +test: Single-line documents +todo: true +yaml: | + # The following is a sequence of three documents. + # The first contains an empty mapping, the second + # an empty sequence, and the last an empty string. + --- {} + --- [ ] + --- '' +ruby: | + y = YAML::Stream.new + y.add( {} ) + y.add( [] ) + y.add( '' ) +documents: 3 + +--- +test: Document with pause +todo: true +yaml: | + # A communication channel based on a YAML stream. + --- + sent at: 2002-06-06 11:46:25.10 Z + payload: Whatever + # Receiver can process this as soon as the following is sent: + ... + # Even if the next message is sent long after: + --- + sent at: 2002-06-06 12:05:53.47 Z + payload: Whatever + ... +ruby: | + y = YAML::Stream.new + y.add( + { 'sent at' => YAML::mktime( 2002, 6, 6, 11, 46, 25, 0.10 ), + 'payload' => 'Whatever' } + ) + y.add( + { "payload" => "Whatever", "sent at" => YAML::mktime( 2002, 6, 6, 12, 5, 53, 0.47 ) } + ) +documents: 2 + +--- +test: Explicit typing +yaml: | + integer: 12 + also int: ! "12" + string: !str 12 +php: | + array( 'integer' => 12, 'also int' => 12, 'string' => '12' ) +--- +test: Private types +todo: true +yaml: | + # Both examples below make use of the 'x-private:ball' + # type family URI, but with different semantics. + --- + pool: !!ball + number: 8 + color: black + --- + bearing: !!ball + material: steel +ruby: | + y = YAML::Stream.new + y.add( { 'pool' => + YAML::PrivateType.new( 'ball', + { 'number' => 8, 'color' => 'black' } ) } + ) + y.add( { 'bearing' => + YAML::PrivateType.new( 'ball', + { 'material' => 'steel' } ) } + ) +documents: 2 + +--- +test: Type family under yaml.org +yaml: | + # The URI is 'tag:yaml.org,2002:str' + - !str a Unicode string +php: | + array( 'a Unicode string' ) +--- +test: Type family under perl.yaml.org +todo: true +yaml: | + # The URI is 'tag:perl.yaml.org,2002:Text::Tabs' + - !perl/Text::Tabs {} +ruby: | + [ YAML::DomainType.new( 'perl.yaml.org,2002', 'Text::Tabs', {} ) ] +--- +test: Type family under clarkevans.com +todo: true +yaml: | + # The URI is 'tag:clarkevans.com,2003-02:timesheet' + - !clarkevans.com,2003-02/timesheet {} +ruby: | + [ YAML::DomainType.new( 'clarkevans.com,2003-02', 'timesheet', {} ) ] +--- +test: URI Escaping +todo: true +yaml: | + same: + - !domain.tld,2002/type\x30 value + - !domain.tld,2002/type0 value + different: # As far as the YAML parser is concerned + - !domain.tld,2002/type%30 value + - !domain.tld,2002/type0 value +ruby-setup: | + YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val| + "ONE: #{val}" + } + YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val| + "TWO: #{val}" + } +ruby: | + { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value', 'ONE: value' ] } +--- +test: URI Prefixing +todo: true +yaml: | + # 'tag:domain.tld,2002:invoice' is some type family. + invoice: !domain.tld,2002/^invoice + # 'seq' is shorthand for 'tag:yaml.org,2002:seq'. + # This does not effect '^customer' below + # because it is does not specify a prefix. + customers: !seq + # '^customer' is shorthand for the full + # notation 'tag:domain.tld,2002:customer'. + - !^customer + given : Chris + family : Dumars +ruby-setup: | + YAML.add_domain_type( "domain.tld,2002", /(invoice|customer)/ ) { |type, val| + if val.is_a? ::Hash + scheme, domain, type = type.split( /:/, 3 ) + val['type'] = "domain #{type}" + val + else + raise YAML::Error, "Not a Hash in domain.tld/invoice: " + val.inspect + end + } +ruby: | + { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } } + +--- +test: Overriding anchors +yaml: | + anchor : &A001 This scalar has an anchor. + override : &A001 > + The alias node below is a + repeated use of this value. + alias : *A001 +php: | + array( 'anchor' => 'This scalar has an anchor.', + 'override' => "The alias node below is a repeated use of this value.\n", + 'alias' => "The alias node below is a repeated use of this value.\n" ) +--- +test: Flow and block formatting +todo: true +yaml: | + empty: [] + flow: [ one, two, three # May span lines, + , four, # indentation is + five ] # mostly ignored. + block: + - First item in top sequence + - + - Subordinate sequence entry + - > + A folded sequence entry + - Sixth item in top sequence +ruby: | + { 'empty' => [], 'flow' => [ 'one', 'two', 'three', 'four', 'five' ], + 'block' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ], + "A folded sequence entry\n", 'Sixth item in top sequence' ] } +--- +test: Complete mapping test +todo: true +yaml: | + empty: {} + flow: { one: 1, two: 2 } + spanning: { one: 1, + two: 2 } + block: + first : First entry + second: + key: Subordinate mapping + third: + - Subordinate sequence + - { } + - Previous mapping is empty. + - A key: value pair in a sequence. + A second: key:value pair. + - The previous entry is equal to the following one. + - + A key: value pair in a sequence. + A second: key:value pair. + !float 12 : This key is a float. + ? > + ? + : This key had to be protected. + "\a" : This key had to be escaped. + ? > + This is a + multi-line + folded key + : Whose value is + also multi-line. + ? this also works as a key + : with a value at the next line. + ? + - This key + - is a sequence + : + - With a sequence value. + ? + This: key + is a: mapping + : + with a: mapping value. +ruby: | + { 'empty' => {}, 'flow' => { 'one' => 1, 'two' => 2 }, + 'spanning' => { 'one' => 1, 'two' => 2 }, + 'block' => { 'first' => 'First entry', 'second' => + { 'key' => 'Subordinate mapping' }, 'third' => + [ 'Subordinate sequence', {}, 'Previous mapping is empty.', + { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' }, + 'The previous entry is equal to the following one.', + { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ], + 12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.', + "\a" => 'This key had to be escaped.', + "This is a multi-line folded key\n" => "Whose value is also multi-line.", + 'this also works as a key' => 'with a value at the next line.', + [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } } + # Couldn't recreate map exactly, so we'll do a detailed check to be sure it's entact + obj_y['block'].keys.each { |k| + if Hash === k + v = obj_y['block'][k] + if k['This'] == 'key' and k['is a'] == 'mapping' and v['with a'] == 'mapping value.' + obj_r['block'][k] = v + end + end + } +--- +test: Literal explicit indentation +yaml: | + # Explicit indentation must + # be given in all the three + # following cases. + leading spaces: |2 + This value starts with four spaces. + + leading line break: |2 + + This value starts with a line break. + + leading comment indicator: |2 + # first line starts with a + # character. + + # Explicit indentation may + # also be given when it is + # not required. + redundant: |2 + This value is indented 2 spaces. +php: | + array( + 'leading spaces' => " This value starts with four spaces.\n", + 'leading line break' => "\nThis value starts with a line break.\n", + 'leading comment indicator' => "# first line starts with a\n# character.\n", + 'redundant' => "This value is indented 2 spaces.\n" + ) +--- +test: Chomping and keep modifiers +yaml: | + clipped: | + This has one newline. + + same as "clipped" above: "This has one newline.\n" + + stripped: |- + This has no newline. + + same as "stripped" above: "This has no newline." + + kept: |+ + This has two newlines. + + same as "kept" above: "This has two newlines.\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has two newlines.\n\n", + 'same as "kept" above' => "This has two newlines.\n\n" + ) +--- +test: Literal combinations +todo: true +yaml: | + empty: | + + literal: | + The \ ' " characters may be + freely used. Leading white + space is significant. + + Line breaks are significant. + Thus this value contains one + empty line and ends with a + single line break, but does + not start with one. + + is equal to: "The \\ ' \" characters may \ + be\nfreely used. Leading white\n space \ + is significant.\n\nLine breaks are \ + significant.\nThus this value contains \ + one\nempty line and ends with a\nsingle \ + line break, but does\nnot start with one.\n" + + # Comments may follow a block + # scalar value. They must be + # less indented. + + # Modifiers may be combined in any order. + indented and chomped: |2- + This has no newline. + + also written as: |-2 + This has no newline. + + both are equal to: " This has no newline." +php: | + array( + 'empty' => '', + 'literal' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " + + "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" + + "empty line and ends with a\nsingle line break, but does\nnot start with one.\n", + 'is equal to' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " + + "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" + + "empty line and ends with a\nsingle line break, but does\nnot start with one.\n", + 'indented and chomped' => ' This has no newline.', + 'also written as' => ' This has no newline.', + 'both are equal to' => ' This has no newline.' + ) +--- +test: Folded combinations +todo: true +yaml: | + empty: > + + one paragraph: > + Line feeds are converted + to spaces, so this value + contains no line breaks + except for the final one. + + multiple paragraphs: >2 + + An empty line, either + at the start or in + the value: + + Is interpreted as a + line break. Thus this + value contains three + line breaks. + + indented text: > + This is a folded + paragraph followed + by a list: + * first entry + * second entry + Followed by another + folded paragraph, + another list: + + * first entry + + * second entry + + And a final folded + paragraph. + + above is equal to: | + This is a folded paragraph followed by a list: + * first entry + * second entry + Followed by another folded paragraph, another list: + + * first entry + + * second entry + + And a final folded paragraph. + + # Explicit comments may follow + # but must be less indented. +php: | + array( + 'empty' => '', + 'one paragraph' => 'Line feeds are converted to spaces, so this value'. + " contains no line breaks except for the final one.\n", + 'multiple paragraphs' => "\nAn empty line, either at the start or in the value:\n". + "Is interpreted as a line break. Thus this value contains three line breaks.\n", + 'indented text' => "This is a folded paragraph followed by a list:\n". + " * first entry\n * second entry\nFollowed by another folded paragraph, ". + "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n", + 'above is equal to' => "This is a folded paragraph followed by a list:\n". + " * first entry\n * second entry\nFollowed by another folded paragraph, ". + "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n" + ) +--- +test: Single quotes +todo: true +yaml: | + empty: '' + second: '! : \ etc. can be used freely.' + third: 'a single quote '' must be escaped.' + span: 'this contains + six spaces + + and one + line break' + is same as: "this contains six spaces\nand one line break" +php: | + array( + 'empty' => '', + 'second' => '! : \\ etc. can be used freely.', + 'third' => "a single quote ' must be escaped.", + 'span' => "this contains six spaces\nand one line break", + 'is same as' => "this contains six spaces\nand one line break" + ) +--- +test: Double quotes +todo: true +yaml: | + empty: "" + second: "! : etc. can be used freely." + third: "a \" or a \\ must be escaped." + fourth: "this value ends with an LF.\n" + span: "this contains + four \ + spaces" + is equal to: "this contains four spaces" +php: | + array( + 'empty' => '', + 'second' => '! : etc. can be used freely.', + 'third' => 'a " or a \\ must be escaped.', + 'fourth' => "this value ends with an LF.\n", + 'span' => "this contains four spaces", + 'is equal to' => "this contains four spaces" + ) +--- +test: Unquoted strings +todo: true +yaml: | + first: There is no unquoted empty string. + + second: 12 ## This is an integer. + + third: !str 12 ## This is a string. + + span: this contains + six spaces + + and one + line break + + indicators: this has no comments. + #:foo and bar# are + both text. + + flow: [ can span + lines, # comment + like + this ] + + note: { one-line keys: but multi-line values } + +php: | + array( + 'first' => 'There is no unquoted empty string.', + 'second' => 12, + 'third' => '12', + 'span' => "this contains six spaces\nand one line break", + 'indicators' => "this has no comments. #:foo and bar# are both text.", + 'flow' => [ 'can span lines', 'like this' ], + 'note' => { 'one-line keys' => 'but multi-line values' } + ) +--- +test: Spanning sequences +todo: true +yaml: | + # The following are equal seqs + # with different identities. + flow: [ one, two ] + spanning: [ one, + two ] + block: + - one + - two +php: | + array( + 'flow' => [ 'one', 'two' ], + 'spanning' => [ 'one', 'two' ], + 'block' => [ 'one', 'two' ] + ) +--- +test: Flow mappings +yaml: | + # The following are equal maps + # with different identities. + flow: { one: 1, two: 2 } + block: + one: 1 + two: 2 +php: | + array( + 'flow' => array( 'one' => 1, 'two' => 2 ), + 'block' => array( 'one' => 1, 'two' => 2 ) + ) +--- +test: Representations of 12 +todo: true +yaml: | + - 12 # An integer + # The following scalars + # are loaded to the + # string value '1' '2'. + - !str 12 + - '12' + - "12" + - "\ + 1\ + 2\ + " + # Strings containing paths and regexps can be unquoted: + - /foo/bar + - d:/foo/bar + - foo/bar + - /a.*b/ +php: | + array( 12, '12', '12', '12', '12', '/foo/bar', 'd:/foo/bar', 'foo/bar', '/a.*b/' ) +--- +test: "Null" +todo: true +yaml: | + canonical: ~ + + english: null + + # This sequence has five + # entries, two with values. + sparse: + - ~ + - 2nd entry + - Null + - 4th entry + - + + four: This mapping has five keys, + only two with values. + +php: | + array ( + 'canonical' => null, + 'english' => null, + 'sparse' => array( null, '2nd entry', null, '4th entry', null ]), + 'four' => 'This mapping has five keys, only two with values.' + ) +--- +test: Omap +todo: true +yaml: | + # Explicitly typed dictionary. + Bestiary: !omap + - aardvark: African pig-like ant eater. Ugly. + - anteater: South-American ant eater. Two species. + - anaconda: South-American constrictor snake. Scary. + # Etc. +ruby: | + { + 'Bestiary' => YAML::Omap[ + 'aardvark', 'African pig-like ant eater. Ugly.', + 'anteater', 'South-American ant eater. Two species.', + 'anaconda', 'South-American constrictor snake. Scary.' + ] + } + +--- +test: Pairs +todo: true +yaml: | + # Explicitly typed pairs. + tasks: !pairs + - meeting: with team. + - meeting: with boss. + - break: lunch. + - meeting: with client. +ruby: | + { + 'tasks' => YAML::Pairs[ + 'meeting', 'with team.', + 'meeting', 'with boss.', + 'break', 'lunch.', + 'meeting', 'with client.' + ] + } + +--- +test: Set +todo: true +yaml: | + # Explicitly typed set. + baseball players: !set + Mark McGwire: + Sammy Sosa: + Ken Griffey: +ruby: | + { + 'baseball players' => YAML::Set[ + 'Mark McGwire', nil, + 'Sammy Sosa', nil, + 'Ken Griffey', nil + ] + } + +--- +test: Boolean +yaml: | + false: used as key + logical: true + answer: false +php: | + array( + false => 'used as key', + 'logical' => true, + 'answer' => false + ) +--- +test: Integer +yaml: | + canonical: 12345 + decimal: +12,345 + octal: 014 + hexadecimal: 0xC +php: | + array( + 'canonical' => 12345, + 'decimal' => 12345.0, + 'octal' => 12, + 'hexadecimal' => 12 + ) +--- +test: Float +yaml: | + canonical: 1.23015e+3 + exponential: 12.3015e+02 + fixed: 1,230.15 + negative infinity: -.inf + not a number: .NaN +php: | + array( + 'canonical' => 1230.15, + 'exponential' => 1230.15, + 'fixed' => 1230.15, + 'negative infinity' => log(0), + 'not a number' => -log(0) + ) +--- +test: Timestamp +todo: true +yaml: | + canonical: 2001-12-15T02:59:43.1Z + valid iso8601: 2001-12-14t21:59:43.10-05:00 + space separated: 2001-12-14 21:59:43.10 -05:00 + date (noon UTC): 2002-12-14 +ruby: | + array( + 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ), + 'valid iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'space separated' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'date (noon UTC)' => Date.new( 2002, 12, 14 ) + ) +--- +test: Binary +todo: true +yaml: | + canonical: !binary "\ + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" + base64: !binary | + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= + description: > + The binary value above is a tiny arrow + encoded as a gif image. +ruby-setup: | + arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005, \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;" +ruby: | + { + 'canonical' => arrow_gif, + 'base64' => arrow_gif, + 'description' => "The binary value above is a tiny arrow encoded as a gif image.\n" + } + +--- +test: Merge key +todo: true +yaml: | + --- + - &CENTER { x: 1, y: 2 } + - &LEFT { x: 0, y: 2 } + - &BIG { r: 10 } + - &SMALL { r: 1 } + + # All the following maps are equal: + + - # Explicit keys + x: 1 + y: 2 + r: 10 + label: center/big + + - # Merge one map + << : *CENTER + r: 10 + label: center/big + + - # Merge multiple maps + << : [ *CENTER, *BIG ] + label: center/big + + - # Override + << : [ *BIG, *LEFT, *SMALL ] + x: 1 + label: center/big + +ruby-setup: | + center = { 'x' => 1, 'y' => 2 } + left = { 'x' => 0, 'y' => 2 } + big = { 'r' => 10 } + small = { 'r' => 1 } + node1 = { 'x' => 1, 'y' => 2, 'r' => 10, 'label' => 'center/big' } + node2 = center.dup + node2.update( { 'r' => 10, 'label' => 'center/big' } ) + node3 = big.dup + node3.update( center ) + node3.update( { 'label' => 'center/big' } ) + node4 = small.dup + node4.update( left ) + node4.update( big ) + node4.update( { 'x' => 1, 'label' => 'center/big' } ) + +ruby: | + [ + center, left, big, small, node1, node2, node3, node4 + ] + +--- +test: Default key +todo: true +yaml: | + --- # Old schema + link with: + - library1.dll + - library2.dll + --- # New schema + link with: + - = : library1.dll + version: 1.2 + - = : library2.dll + version: 2.3 +ruby: | + y = YAML::Stream.new + y.add( { 'link with' => [ 'library1.dll', 'library2.dll' ] } ) + obj_h = Hash[ 'version' => 1.2 ] + obj_h.default = 'library1.dll' + obj_h2 = Hash[ 'version' => 2.3 ] + obj_h2.default = 'library2.dll' + y.add( { 'link with' => [ obj_h, obj_h2 ] } ) +documents: 2 + +--- +test: Special keys +todo: true +yaml: | + "!": These three keys + "&": had to be quoted + "=": and are normal strings. + # NOTE: the following node should NOT be serialized this way. + encoded node : + !special '!' : '!type' + !special|canonical '&' : 12 + = : value + # The proper way to serialize the above node is as follows: + node : !!type &12 value +ruby: | + { '!' => 'These three keys', '&' => 'had to be quoted', + '=' => 'and are normal strings.', + 'encoded node' => YAML::PrivateType.new( 'type', 'value' ), + 'node' => YAML::PrivateType.new( 'type', 'value' ) } diff --git a/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml b/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml new file mode 100644 index 0000000..46c8d4a --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml @@ -0,0 +1,244 @@ +--- %YAML:1.0 +test: Strings +brief: > + Any group of characters beginning with an + alphabetic or numeric character is a string, + unless it belongs to one of the groups below + (such as an Integer or Time). +yaml: | + String +php: | + 'String' +--- +test: String characters +brief: > + A string can contain any alphabetic or + numeric character, along with many + punctuation characters, including the + period, dash, space, quotes, exclamation, and + question mark. +yaml: | + - What's Yaml? + - It's for writing data structures in plain text. + - And? + - And what? That's not good enough for you? + - No, I mean, "And what about Yaml?" + - Oh, oh yeah. Uh.. Yaml for Ruby. +php: | + array( + "What's Yaml?", + "It's for writing data structures in plain text.", + "And?", + "And what? That's not good enough for you?", + "No, I mean, \"And what about Yaml?\"", + "Oh, oh yeah. Uh.. Yaml for Ruby." + ) +--- +test: Indicators in Strings +brief: > + Be careful using indicators in strings. In particular, + the comma, colon, and pound sign must be used carefully. +yaml: | + the colon followed by space is an indicator: but is a string:right here + same for the pound sign: here we have it#in a string + the comma can, honestly, be used in most cases: [ but not in, inline collections ] +php: | + array( + 'the colon followed by space is an indicator' => 'but is a string:right here', + 'same for the pound sign' => 'here we have it#in a string', + 'the comma can, honestly, be used in most cases' => array('but not in', 'inline collections') + ) +--- +test: Forcing Strings +brief: > + Any YAML type can be forced into a string using the + explicit !str method. +yaml: | + date string: !str 2001-08-01 + number string: !str 192 +php: | + array( + 'date string' => '2001-08-01', + 'number string' => '192' + ) +--- +test: Single-quoted Strings +brief: > + You can also enclose your strings within single quotes, + which allows use of slashes, colons, and other indicators + freely. Inside single quotes, you can represent a single + quote in your string by using two single quotes next to + each other. +yaml: | + all my favorite symbols: '#:!/%.)' + a few i hate: '&(*' + why do i hate them?: 'it''s very hard to explain' + entities: '£ me' +php: | + array( + 'all my favorite symbols' => '#:!/%.)', + 'a few i hate' => '&(*', + 'why do i hate them?' => 'it\'s very hard to explain', + 'entities' => '£ me' + ) +--- +test: Double-quoted Strings +brief: > + Enclosing strings in double quotes allows you + to use escapings to represent ASCII and + Unicode characters. +yaml: | + i know where i want my line breaks: "one here\nand another here\n" +php: | + array( + 'i know where i want my line breaks' => "one here\nand another here\n" + ) +--- +test: Multi-line Quoted Strings +todo: true +brief: > + Both single- and double-quoted strings may be + carried on to new lines in your YAML document. + They must be indented a step and indentation + is interpreted as a single space. +yaml: | + i want a long string: "so i'm going to + let it go on and on to other lines + until i end it with a quote." +php: | + array('i want a long string' => "so i'm going to ". + "let it go on and on to other lines ". + "until i end it with a quote." + ) + +--- +test: Plain scalars +todo: true +brief: > + Unquoted strings may also span multiple lines, if they + are free of YAML space indicators and indented. +yaml: | + - My little toe is broken in two places; + - I'm crazy to have skied this way; + - I'm not the craziest he's seen, since there was always the German guy + who skied for 3 hours on a broken shin bone (just below the kneecap); + - Nevertheless, second place is respectable, and he doesn't + recommend going for the record; + - He's going to put my foot in plaster for a month; + - This would impair my skiing ability somewhat for the + duration, as can be imagined. +php: | + array( + "My little toe is broken in two places;", + "I'm crazy to have skied this way;", + "I'm not the craziest he's seen, since there was always ". + "the German guy who skied for 3 hours on a broken shin ". + "bone (just below the kneecap);", + "Nevertheless, second place is respectable, and he doesn't ". + "recommend going for the record;", + "He's going to put my foot in plaster for a month;", + "This would impair my skiing ability somewhat for the duration, ". + "as can be imagined." + ) +--- +test: 'Null' +brief: > + You can use the tilde '~' character for a null value. +yaml: | + name: Mr. Show + hosted by: Bob and David + date of next season: ~ +php: | + array( + 'name' => 'Mr. Show', + 'hosted by' => 'Bob and David', + 'date of next season' => null + ) +--- +test: Boolean +brief: > + You can use 'true' and 'false' for Boolean values. +yaml: | + Is Gus a Liar?: true + Do I rely on Gus for Sustenance?: false +php: | + array( + 'Is Gus a Liar?' => true, + 'Do I rely on Gus for Sustenance?' => false + ) +--- +test: Integers +dump_skip: true +brief: > + An integer is a series of numbers, optionally + starting with a positive or negative sign. Integers + may also contain commas for readability. +yaml: | + zero: 0 + simple: 12 + one-thousand: 1,000 + negative one-thousand: -1,000 +php: | + array( + 'zero' => 0, + 'simple' => 12, + 'one-thousand' => 1000.0, + 'negative one-thousand' => -1000.0 + ) +--- +test: Integers as Map Keys +brief: > + An integer can be used a dictionary key. +yaml: | + 1: one + 2: two + 3: three +php: | + array( + 1 => 'one', + 2 => 'two', + 3 => 'three' + ) +--- +test: Floats +dump_skip: true +brief: > + Floats are represented by numbers with decimals, + allowing for scientific notation, as well as + positive and negative infinity and "not a number." +yaml: | + a simple float: 2.00 + larger float: 1,000.09 + scientific notation: 1.00009e+3 +php: | + array( + 'a simple float' => 2.0, + 'larger float' => 1000.09, + 'scientific notation' => 1000.09 + ) +--- +test: Time +todo: true +brief: > + You can represent timestamps by using + ISO8601 format, or a variation which + allows spaces between the date, time and + time zone. +yaml: | + iso8601: 2001-12-14t21:59:43.10-05:00 + space separated: 2001-12-14 21:59:43.10 -05:00 +php: | + array( + 'iso8601' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'space separated' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ) + ) +--- +test: Date +todo: true +brief: > + A date can be represented by its year, + month and day in ISO8601 order. +yaml: | + 1976-07-31 +php: | + date( 1976, 7, 31 ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml b/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml new file mode 100644 index 0000000..ec456ed --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml @@ -0,0 +1 @@ +value: diff --git a/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml b/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml new file mode 100644 index 0000000..6ca044c --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml @@ -0,0 +1,155 @@ +test: outside double quotes +yaml: | + \0 \ \a \b \n +php: | + "\\0 \\ \\a \\b \\n" +--- +test: null +yaml: | + "\0" +php: | + "\x00" +--- +test: bell +yaml: | + "\a" +php: | + "\x07" +--- +test: backspace +yaml: | + "\b" +php: | + "\x08" +--- +test: horizontal tab (1) +yaml: | + "\t" +php: | + "\x09" +--- +test: horizontal tab (2) +yaml: | + "\ " +php: | + "\x09" +--- +test: line feed +yaml: | + "\n" +php: | + "\x0a" +--- +test: vertical tab +yaml: | + "\v" +php: | + "\x0b" +--- +test: form feed +yaml: | + "\f" +php: | + "\x0c" +--- +test: carriage return +yaml: | + "\r" +php: | + "\x0d" +--- +test: escape +yaml: | + "\e" +php: | + "\x1b" +--- +test: space +yaml: | + "\ " +php: | + "\x20" +--- +test: slash +yaml: | + "\/" +php: | + "\x2f" +--- +test: backslash +yaml: | + "\\" +php: | + "\\" +--- +test: Unicode next line +yaml: | + "\N" +php: | + "\xc2\x85" +--- +test: Unicode non-breaking space +yaml: | + "\_" +php: | + "\xc2\xa0" +--- +test: Unicode line separator +yaml: | + "\L" +php: | + "\xe2\x80\xa8" +--- +test: Unicode paragraph separator +yaml: | + "\P" +php: | + "\xe2\x80\xa9" +--- +test: Escaped 8-bit Unicode +yaml: | + "\x42" +php: | + "B" +--- +test: Escaped 16-bit Unicode +yaml: | + "\u20ac" +php: | + "\xe2\x82\xac" +--- +test: Escaped 32-bit Unicode +yaml: | + "\U00000043" +php: | + "C" +--- +test: Example 5.13 Escaped Characters +note: | + Currently throws an error parsing first line. Maybe Symfony Yaml doesn't support + continuation of string across multiple lines? Keeping test here but disabled. +todo: true +yaml: | + "Fun with \\ + \" \a \b \e \f \ + \n \r \t \v \0 \ + \ \_ \N \L \P \ + \x41 \u0041 \U00000041" +php: | + "Fun with \x5C\n\x22 \x07 \x08 \x1B \x0C\n\x0A \x0D \x09 \x0B \x00\n\x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9\nA A A" +--- +test: Double quotes with a line feed +yaml: | + { double: "some value\n \"some quoted string\" and 'some single quotes one'" } +php: | + array( + 'double' => "some value\n \"some quoted string\" and 'some single quotes one'" + ) +--- +test: Backslashes +yaml: | + { single: 'foo\Var', no-quotes: foo\Var, double: "foo\\Var" } +php: | + array( + 'single' => 'foo\Var', 'no-quotes' => 'foo\Var', 'double' => 'foo\Var' + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/index.yml b/vendor/symfony/yaml/Tests/Fixtures/index.yml new file mode 100644 index 0000000..3216a89 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/index.yml @@ -0,0 +1,18 @@ +- escapedCharacters +- sfComments +- sfCompact +- sfTests +- sfObjects +- sfMergeKey +- sfQuotes +- YtsAnchorAlias +- YtsBasicTests +- YtsBlockMapping +- YtsDocumentSeparator +- YtsErrorTests +- YtsFlowCollections +- YtsFoldedScalars +- YtsNullsAndEmpties +- YtsSpecificationExamples +- YtsTypeTransfers +- unindentedCollections diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml b/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml new file mode 100644 index 0000000..b72a9b6 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml @@ -0,0 +1,76 @@ +--- %YAML:1.0 +test: Comments at the end of a line +brief: > + Comments at the end of a line +yaml: | + ex1: "foo # bar" + ex2: "foo # bar" # comment + ex3: 'foo # bar' # comment + ex4: foo # comment + ex5: foo # comment with tab before + ex6: foo#foo # comment here + ex7: foo # ignore me # and me +php: | + array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo', 'ex5' => 'foo', 'ex6' => 'foo#foo', 'ex7' => 'foo') +--- +test: Comments in the middle +brief: > + Comments in the middle +yaml: | + foo: + # some comment + # some comment + bar: foo + # some comment + # some comment +php: | + array('foo' => array('bar' => 'foo')) +--- +test: Comments on a hash line +brief: > + Comments on a hash line +yaml: | + foo: # a comment + foo: bar # a comment +php: | + array('foo' => array('foo' => 'bar')) +--- +test: 'Value starting with a #' +brief: > + 'Value starting with a #' +yaml: | + foo: '#bar' +php: | + array('foo' => '#bar') +--- +test: Document starting with a comment and a separator +brief: > + Commenting before document start is allowed +yaml: | + # document comment + --- + foo: bar # a comment +php: | + array('foo' => 'bar') +--- +test: Comment containing a colon on a hash line +brief: > + Comment containing a colon on a scalar line +yaml: 'foo # comment: this is also part of the comment' +php: | + 'foo' +--- +test: 'Hash key containing a #' +brief: > + 'Hash key containing a #' +yaml: 'foo#bar: baz' +php: | + array('foo#bar' => 'baz') +--- +test: 'Hash key ending with a space and a #' +brief: > + 'Hash key ending with a space and a #' +yaml: | + 'foo #': baz +php: | + array('foo #' => 'baz') diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml b/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml new file mode 100644 index 0000000..1339d23 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml @@ -0,0 +1,159 @@ +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml b/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml new file mode 100644 index 0000000..499446c --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml @@ -0,0 +1,66 @@ +--- %YAML:1.0 +test: Simple In Place Substitution +brief: > + If you want to reuse an entire alias, only overwriting what is different + you can use a << in place substitution. This is not part of the official + YAML spec, but a widely implemented extension. See the following URL for + details: http://yaml.org/type/merge.html +yaml: | + foo: &foo + a: Steve + b: Clark + c: Brian + e: notnull + bar: + a: before + d: other + e: ~ + <<: *foo + b: new + x: Oren + c: + foo: bar + foo: ignore + bar: foo + bar_inline: {a: before, d: other, <<: *foo, b: new, x: Oren, c: { foo: bar, foo: ignore, bar: foo}} + duplicate: + foo: bar + foo: ignore + foo2: &foo2 + a: Ballmer + ding: &dong [ fi, fei, fo, fam] + check: + <<: + - *foo + - *dong + isit: tested + head: + <<: [ *foo , *dong , *foo2 ] + taz: &taz + a: Steve + w: + p: 1234 + nested: + <<: *taz + d: Doug + w: &nestedref + p: 12345 + z: + <<: *nestedref + head_inline: &head_inline { <<: [ *foo , *dong , *foo2 ] } + recursive_inline: { <<: *head_inline, c: { <<: *foo2 } } +php: | + array( + 'foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull'), + 'bar' => array('a' => 'before', 'd' => 'other', 'e' => null, 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'x' => 'Oren'), + 'bar_inline' => array('a' => 'before', 'd' => 'other', 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'e' => 'notnull', 'x' => 'Oren'), + 'duplicate' => array('foo' => 'bar'), + 'foo2' => array('a' => 'Ballmer'), + 'ding' => array('fi', 'fei', 'fo', 'fam'), + 'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'), + 'head' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'), + 'taz' => array('a' => 'Steve', 'w' => array('p' => 1234)), + 'nested' => array('a' => 'Steve', 'w' => array('p' => 12345), 'd' => 'Doug', 'z' => array('p' => 12345)), + 'head_inline' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'), + 'recursive_inline' => array('a' => 'Steve', 'b' => 'Clark', 'c' => array('a' => 'Ballmer'), 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'), + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml b/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml new file mode 100644 index 0000000..ee124b2 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml @@ -0,0 +1,11 @@ +--- %YAML:1.0 +test: Objects +brief: > + Comments at the end of a line +yaml: | + ex1: "foo # bar" + ex2: "foo # bar" # comment + ex3: 'foo # bar' # comment + ex4: foo # comment +php: | + array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo') diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml b/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml new file mode 100644 index 0000000..7c60bae --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml @@ -0,0 +1,33 @@ +--- %YAML:1.0 +test: Some characters at the beginning of a string must be escaped +brief: > + Some characters at the beginning of a string must be escaped +yaml: | + foo: '| bar' +php: | + array('foo' => '| bar') +--- +test: A key can be a quoted string +brief: > + A key can be a quoted string +yaml: | + "foo1": bar + 'foo2': bar + "foo \" bar": bar + 'foo '' bar': bar + 'foo3: ': bar + "foo4: ": bar + foo5: { "foo \" bar: ": bar, 'foo '' bar: ': bar } +php: | + array( + 'foo1' => 'bar', + 'foo2' => 'bar', + 'foo " bar' => 'bar', + 'foo \' bar' => 'bar', + 'foo3: ' => 'bar', + 'foo4: ' => 'bar', + 'foo5' => array( + 'foo " bar: ' => 'bar', + 'foo \' bar: ' => 'bar', + ), + ) diff --git a/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml b/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml new file mode 100644 index 0000000..a427be1 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml @@ -0,0 +1,149 @@ +--- %YAML:1.0 +test: Multiple quoted string on one line +brief: > + Multiple quoted string on one line +yaml: | + stripped_title: { name: "foo bar", help: "bar foo" } +php: | + array('stripped_title' => array('name' => 'foo bar', 'help' => 'bar foo')) +--- +test: Empty sequence +yaml: | + foo: [ ] +php: | + array('foo' => array()) +--- +test: Empty value +yaml: | + foo: +php: | + array('foo' => null) +--- +test: Inline string parsing +brief: > + Inline string parsing +yaml: | + test: ['complex: string', 'another [string]'] +php: | + array('test' => array('complex: string', 'another [string]')) +--- +test: Boolean +brief: > + Boolean +yaml: | + - false + - true + - null + - ~ + - 'false' + - 'true' + - 'null' + - '~' +php: | + array( + false, + true, + null, + null, + 'false', + 'true', + 'null', + '~', + ) +--- +test: Empty lines in literal blocks +brief: > + Empty lines in literal blocks +yaml: | + foo: + bar: | + foo + + + + bar +php: | + array('foo' => array('bar' => "foo\n\n\n \nbar\n")) +--- +test: Empty lines in folded blocks +brief: > + Empty lines in folded blocks +yaml: | + foo: + bar: > + + foo + + + bar +php: | + array('foo' => array('bar' => "\nfoo\n\nbar\n")) +--- +test: IP addresses +brief: > + IP addresses +yaml: | + foo: 10.0.0.2 +php: | + array('foo' => '10.0.0.2') +--- +test: A sequence with an embedded mapping +brief: > + A sequence with an embedded mapping +yaml: | + - foo + - bar: { bar: foo } +php: | + array('foo', array('bar' => array('bar' => 'foo'))) +--- +test: A sequence with an unordered array +brief: > + A sequence with an unordered array +yaml: | + 1: foo + 0: bar +php: | + array(1 => 'foo', 0 => 'bar') +--- +test: Octal +brief: as in spec example 2.19, octal value is converted +yaml: | + foo: 0123 +php: | + array('foo' => 83) +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: "0123" +php: | + array('foo' => '0123') +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: '0123' +php: | + array('foo' => '0123') +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: | + 0123 +php: | + array('foo' => "0123\n") +--- +test: Document as a simple hash +brief: Document as a simple hash +yaml: | + { foo: bar } +php: | + array('foo' => 'bar') +--- +test: Document as a simple array +brief: Document as a simple array +yaml: | + [ foo, bar ] +php: | + array('foo', 'bar') diff --git a/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml b/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml new file mode 100644 index 0000000..0c96108 --- /dev/null +++ b/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml @@ -0,0 +1,82 @@ +--- %YAML:1.0 +test: Unindented collection +brief: > + Unindented collection +yaml: | + collection: + - item1 + - item2 + - item3 +php: | + array('collection' => array('item1', 'item2', 'item3')) +--- +test: Nested unindented collection (two levels) +brief: > + Nested unindented collection +yaml: | + collection: + key: + - a + - b + - c +php: | + array('collection' => array('key' => array('a', 'b', 'c'))) +--- +test: Nested unindented collection (three levels) +brief: > + Nested unindented collection +yaml: | + collection: + key: + subkey: + - one + - two + - three +php: | + array('collection' => array('key' => array('subkey' => array('one', 'two', 'three')))) +--- +test: Key/value after unindented collection (1) +brief: > + Key/value after unindented collection (1) +yaml: | + collection: + key: + - a + - b + - c + foo: bar +php: | + array('collection' => array('key' => array('a', 'b', 'c')), 'foo' => 'bar') +--- +test: Key/value after unindented collection (at the same level) +brief: > + Key/value after unindented collection +yaml: | + collection: + key: + - a + - b + - c + foo: bar +php: | + array('collection' => array('key' => array('a', 'b', 'c'), 'foo' => 'bar')) +--- +test: Shortcut Key after unindented collection +brief: > + Key/value after unindented collection +yaml: | + collection: + - key: foo + foo: bar +php: | + array('collection' => array(array('key' => 'foo', 'foo' => 'bar'))) +--- +test: Shortcut Key after unindented collection with custom spaces +brief: > + Key/value after unindented collection +yaml: | + collection: + - key: foo + foo: bar +php: | + array('collection' => array(array('key' => 'foo', 'foo' => 'bar'))) diff --git a/vendor/symfony/yaml/Tests/InlineTest.php b/vendor/symfony/yaml/Tests/InlineTest.php new file mode 100644 index 0000000..66ef701 --- /dev/null +++ b/vendor/symfony/yaml/Tests/InlineTest.php @@ -0,0 +1,506 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Inline; + +class InlineTest extends TestCase +{ + /** + * @dataProvider getTestsForParse + */ + public function testParse($yaml, $value) + { + $this->assertSame($value, Inline::parse($yaml), sprintf('::parse() converts an inline YAML to a PHP structure (%s)', $yaml)); + } + + /** + * @dataProvider getTestsForParseWithMapObjects + */ + public function testParseWithMapObjects($yaml, $value) + { + $actual = Inline::parse($yaml, false, false, true); + + $this->assertSame(serialize($value), serialize($actual)); + } + + /** + * @dataProvider getTestsForDump + */ + public function testDump($yaml, $value) + { + $this->assertEquals($yaml, Inline::dump($value), sprintf('::dump() converts a PHP structure to an inline YAML (%s)', $yaml)); + + $this->assertSame($value, Inline::parse(Inline::dump($value)), 'check consistency'); + } + + public function testDumpNumericValueWithLocale() + { + $locale = setlocale(LC_NUMERIC, 0); + if (false === $locale) { + $this->markTestSkipped('Your platform does not support locales.'); + } + + try { + $requiredLocales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252'); + if (false === setlocale(LC_NUMERIC, $requiredLocales)) { + $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $requiredLocales)); + } + + $this->assertEquals('1.2', Inline::dump(1.2)); + $this->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0))); + setlocale(LC_NUMERIC, $locale); + } catch (\Exception $e) { + setlocale(LC_NUMERIC, $locale); + throw $e; + } + } + + public function testHashStringsResemblingExponentialNumericsShouldNotBeChangedToINF() + { + $value = '686e444'; + + $this->assertSame($value, Inline::parse(Inline::dump($value))); + } + + /** + * @group legacy + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseScalarWithNonEscapedBlackslashShouldThrowException() + { + $this->assertSame('Foo\Var', Inline::parse('"Foo\Var"')); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithNonEscapedBlackslashAtTheEndShouldThrowException() + { + Inline::parse('"Foo\\"'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithIncorrectlyQuotedStringShouldThrowException() + { + $value = "'don't do somthin' like that'"; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithIncorrectlyDoubleQuotedStringShouldThrowException() + { + $value = '"don"t do somthin" like that"'; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidMappingKeyShouldThrowException() + { + $value = '{ "foo " bar": "bar" }'; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidMappingShouldThrowException() + { + Inline::parse('[foo] bar'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidSequenceShouldThrowException() + { + Inline::parse('{ foo: bar } bar'); + } + + public function testParseScalarWithCorrectlyQuotedStringShouldReturnString() + { + $value = "'don''t do somthin'' like that'"; + $expect = "don't do somthin' like that"; + + $this->assertSame($expect, Inline::parseScalar($value)); + } + + /** + * @dataProvider getDataForParseReferences + */ + public function testParseReferences($yaml, $expected) + { + $this->assertSame($expected, Inline::parse($yaml, false, false, false, array('var' => 'var-value'))); + } + + public function getDataForParseReferences() + { + return array( + 'scalar' => array('*var', 'var-value'), + 'list' => array('[ *var ]', array('var-value')), + 'list-in-list' => array('[[ *var ]]', array(array('var-value'))), + 'map-in-list' => array('[ { key: *var } ]', array(array('key' => 'var-value'))), + 'embedded-mapping-in-list' => array('[ key: *var ]', array(array('key' => 'var-value'))), + 'map' => array('{ key: *var }', array('key' => 'var-value')), + 'list-in-map' => array('{ key: [*var] }', array('key' => array('var-value'))), + 'map-in-map' => array('{ foo: { bar: *var } }', array('foo' => array('bar' => 'var-value'))), + ); + } + + public function testParseMapReferenceInSequence() + { + $foo = array( + 'a' => 'Steve', + 'b' => 'Clark', + 'c' => 'Brian', + ); + $this->assertSame(array($foo), Inline::parse('[*foo]', false, false, false, array('foo' => $foo))); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage A reference must contain at least one character. + */ + public function testParseUnquotedAsterisk() + { + Inline::parse('{ foo: * }'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage A reference must contain at least one character. + */ + public function testParseUnquotedAsteriskFollowedByAComment() + { + Inline::parse('{ foo: * #foo }'); + } + + /** + * @group legacy + * @expectedDeprecation Not quoting the scalar "@foo " starting with "@" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithReservedAtIndicator() + { + Inline::parse('{ foo: @foo }'); + } + + /** + * @group legacy + * @expectedDeprecation Not quoting the scalar "`foo " starting with "`" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithReservedBacktickIndicator() + { + Inline::parse('{ foo: `foo }'); + } + + /** + * @group legacy + * @expectedDeprecation Not quoting the scalar "|foo " starting with "|" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithLiteralStyleIndicator() + { + Inline::parse('{ foo: |foo }'); + } + + /** + * @group legacy + * @expectedDeprecation Not quoting the scalar ">foo " starting with ">" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithFoldedStyleIndicator() + { + Inline::parse('{ foo: >foo }'); + } + + public function getScalarIndicators() + { + return array(array('|'), array('>')); + } + + /** + * @dataProvider getDataForIsHash + */ + public function testIsHash($array, $expected) + { + $this->assertSame($expected, Inline::isHash($array)); + } + + public function getDataForIsHash() + { + return array( + array(array(), false), + array(array(1, 2, 3), false), + array(array(2 => 1, 1 => 2, 0 => 3), true), + array(array('foo' => 1, 'bar' => 2), true), + ); + } + + public function getTestsForParse() + { + return array( + array('', ''), + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array('-12', -12), + array('"quoted string"', 'quoted string'), + array("'quoted string'", 'quoted string'), + array('12.30e+02', 12.30e+02), + array('0x4D2', 0x4D2), + array('02333', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('686e444', 646e444), + array('123456789123456789123456789123456789', '123456789123456789123456789123456789'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + array('::form_base.html.twig', '::form_base.html.twig'), + + // Pre-YAML-1.2 booleans + array("'y'", 'y'), + array("'n'", 'n'), + array("'yes'", 'yes'), + array("'no'", 'no'), + array("'on'", 'on'), + array("'off'", 'off'), + + array('2007-10-30', gmmktime(0, 0, 0, 10, 30, 2007)), + array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)), + array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)), + + array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''), + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + // sequences + // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon + array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)), + array('[ foo , bar , false , null , 12 ]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{foo:bar,bar:foo,false:false,null:null,integer:12}', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo : bar, bar : foo, false : false, null : null, integer : 12 }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{foo: \'bar\', bar: \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', array('foo\'' => 'bar', 'bar"' => 'foo: bar')), + array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', array('foo: ' => 'bar', 'bar: ' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + array('[foo, {bar: foo}]', array('foo', array('bar' => 'foo'))), + array('{ foo: {bar: foo} }', array('foo' => array('bar' => 'foo'))), + array('{ foo: [bar, foo] }', array('foo' => array('bar', 'foo'))), + + array('[ foo, [ bar, foo ] ]', array('foo', array('bar', 'foo'))), + + array('[{ foo: {bar: foo} }]', array(array('foo' => array('bar' => 'foo')))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))), + + array('[foo, bar: { foo: bar }]', array('foo', '1' => array('bar' => array('foo' => 'bar')))), + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + ); + } + + public function getTestsForParseWithMapObjects() + { + return array( + array('', ''), + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array('-12', -12), + array('"quoted string"', 'quoted string'), + array("'quoted string'", 'quoted string'), + array('12.30e+02', 12.30e+02), + array('0x4D2', 0x4D2), + array('02333', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('686e444', 646e444), + array('123456789123456789123456789123456789', '123456789123456789123456789123456789'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + array('::form_base.html.twig', '::form_base.html.twig'), + + array('2007-10-30', gmmktime(0, 0, 0, 10, 30, 2007)), + array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)), + array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)), + + array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''), + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + // sequences + // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon + array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)), + array('[ foo , bar , false , null , 12 ]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{foo:bar,bar:foo,false:false,null:null,integer:12}', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo : bar, bar : foo, false : false, null : null, integer : 12 }', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{foo: \'bar\', bar: \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', (object) array('foo\'' => 'bar', 'bar"' => 'foo: bar')), + array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', (object) array('foo: ' => 'bar', 'bar: ' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + array('[foo, {bar: foo}]', array('foo', (object) array('bar' => 'foo'))), + array('{ foo: {bar: foo} }', (object) array('foo' => (object) array('bar' => 'foo'))), + array('{ foo: [bar, foo] }', (object) array('foo' => array('bar', 'foo'))), + + array('[ foo, [ bar, foo ] ]', array('foo', array('bar', 'foo'))), + + array('[{ foo: {bar: foo} }]', array((object) array('foo' => (object) array('bar' => 'foo')))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', (object) array('bar' => 'foo', 'foo' => array('foo', (object) array('bar' => 'foo'))), array('foo', (object) array('bar' => 'foo')))), + + array('[foo, bar: { foo: bar }]', array('foo', '1' => (object) array('bar' => (object) array('foo' => 'bar')))), + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', (object) array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + + array('{}', new \stdClass()), + array('{ foo : bar, bar : {} }', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{ foo : [], bar : {} }', (object) array('foo' => array(), 'bar' => new \stdClass())), + array('{foo: \'bar\', bar: {} }', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{\'foo\': \'bar\', "bar": {}}', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{\'foo\': \'bar\', "bar": \'{}\'}', (object) array('foo' => 'bar', 'bar' => '{}')), + + array('[foo, [{}, {}]]', array('foo', array(new \stdClass(), new \stdClass()))), + array('[foo, [[], {}]]', array('foo', array(array(), new \stdClass()))), + array('[foo, [[{}, {}], {}]]', array('foo', array(array(new \stdClass(), new \stdClass()), new \stdClass()))), + array('[foo, {bar: {}}]', array('foo', '1' => (object) array('bar' => new \stdClass()))), + ); + } + + public function getTestsForDump() + { + return array( + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array("'quoted string'", 'quoted string'), + array('!!float 1230', 12.30e+02), + array('1234', 0x4D2), + array('1243', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + array("'-dash'", '-dash'), + array("'-'", '-'), + + // Pre-YAML-1.2 booleans + array("'y'", 'y'), + array("'n'", 'n'), + array("'yes'", 'yes'), + array("'no'", 'no'), + array("'on'", 'on'), + array("'off'", 'off'), + + // sequences + array('[foo, bar, false, null, 12]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{ foo: bar, bar: foo, \'false\': false, \'null\': null, integer: 12 }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo: bar, bar: \'foo: bar\' }', array('foo' => 'bar', 'bar' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('{ foo: { bar: foo } }', array('foo' => array('bar' => 'foo'))), + + array('[foo, { bar: foo }]', array('foo', array('bar' => 'foo'))), + + array('[foo, { bar: foo, foo: [foo, { bar: foo }] }, [foo, { bar: foo }]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))), + + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + + array('{ foo: { bar: { 1: 2, baz: 3 } } }', array('foo' => array('bar' => array(1 => 2, 'baz' => 3)))), + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage Malformed inline YAML string: {this, is not, supported}. + */ + public function testNotSupportedMissingValue() + { + Inline::parse('{this, is not, supported}'); + } + + public function testVeryLongQuotedStrings() + { + $longStringWithQuotes = str_repeat("x\r\n\\\"x\"x", 1000); + + $yamlString = Inline::dump(array('longStringWithQuotes' => $longStringWithQuotes)); + $arrayFromYaml = Inline::parse($yamlString); + + $this->assertEquals($longStringWithQuotes, $arrayFromYaml['longStringWithQuotes']); + } + + public function testBooleanMappingKeysAreConvertedToStrings() + { + $this->assertSame(array('false' => 'foo'), Inline::parse('{false: foo}')); + $this->assertSame(array('true' => 'foo'), Inline::parse('{true: foo}')); + } + + public function testTheEmptyStringIsAValidMappingKey() + { + $this->assertSame(array('' => 'foo'), Inline::parse('{ "": foo }')); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage Unexpected end of line, expected one of ",}". + */ + public function testUnfinishedInlineMap() + { + Inline::parse("{abc: 'def'"); + } +} diff --git a/vendor/symfony/yaml/Tests/ParseExceptionTest.php b/vendor/symfony/yaml/Tests/ParseExceptionTest.php new file mode 100644 index 0000000..b7797fb --- /dev/null +++ b/vendor/symfony/yaml/Tests/ParseExceptionTest.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Exception\ParseException; + +class ParseExceptionTest extends TestCase +{ + public function testGetMessage() + { + $exception = new ParseException('Error message', 42, 'foo: bar', '/var/www/app/config.yml'); + if (\PHP_VERSION_ID >= 50400) { + $message = 'Error message in "/var/www/app/config.yml" at line 42 (near "foo: bar")'; + } else { + $message = 'Error message in "\\/var\\/www\\/app\\/config.yml" at line 42 (near "foo: bar")'; + } + + $this->assertEquals($message, $exception->getMessage()); + } + + public function testGetMessageWithUnicodeInFilename() + { + $exception = new ParseException('Error message', 42, 'foo: bar', 'äöü.yml'); + if (\PHP_VERSION_ID >= 50400) { + $message = 'Error message in "äöü.yml" at line 42 (near "foo: bar")'; + } else { + $message = 'Error message in "\u00e4\u00f6\u00fc.yml" at line 42 (near "foo: bar")'; + } + + $this->assertEquals($message, $exception->getMessage()); + } +} diff --git a/vendor/symfony/yaml/Tests/ParserTest.php b/vendor/symfony/yaml/Tests/ParserTest.php new file mode 100644 index 0000000..0cf9bd4 --- /dev/null +++ b/vendor/symfony/yaml/Tests/ParserTest.php @@ -0,0 +1,1300 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Parser; +use Symfony\Component\Yaml\Yaml; + +class ParserTest extends TestCase +{ + /** @var Parser */ + protected $parser; + + protected function setUp() + { + $this->parser = new Parser(); + } + + protected function tearDown() + { + $this->parser = null; + } + + /** + * @dataProvider getDataFormSpecifications + */ + public function testSpecifications($file, $expected, $yaml, $comment) + { + $this->assertEquals($expected, var_export($this->parser->parse($yaml), true), $comment); + } + + public function getDataFormSpecifications() + { + $parser = new Parser(); + $path = __DIR__.'/Fixtures'; + + $tests = array(); + $files = $parser->parse(file_get_contents($path.'/index.yml')); + foreach ($files as $file) { + $yamls = file_get_contents($path.'/'.$file.'.yml'); + + // split YAMLs documents + foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) { + if (!$yaml) { + continue; + } + + $test = $parser->parse($yaml); + if (isset($test['todo']) && $test['todo']) { + // TODO + } else { + eval('$expected = '.trim($test['php']).';'); + + $tests[] = array($file, var_export($expected, true), $test['yaml'], $test['test']); + } + } + } + + return $tests; + } + + public function testTabsInYaml() + { + // test tabs in YAML + $yamls = array( + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", + ); + + foreach ($yamls as $yaml) { + try { + $content = $this->parser->parse($yaml); + + $this->fail('YAML files must not contain tabs'); + } catch (\Exception $e) { + $this->assertInstanceOf('\Exception', $e, 'YAML files must not contain tabs'); + $this->assertEquals('A YAML file cannot contain tabs as indentation at line 2 (near "'.strpbrk($yaml, "\t").'").', $e->getMessage(), 'YAML files must not contain tabs'); + } + } + } + + public function testEndOfTheDocumentMarker() + { + $yaml = <<<'EOF' +--- %YAML:1.0 +foo +... +EOF; + + $this->assertEquals('foo', $this->parser->parse($yaml)); + } + + public function getBlockChompingTests() + { + $tests = array(); + + $yaml = <<<'EOF' +foo: |- + one + two +bar: |- + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |- + one + two + +bar: |- + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +{} + + +EOF; + $expected = array(); + $tests['Literal block chomping strip with multiple trailing newlines after a 1-liner'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |- + one + two +bar: |- + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two +bar: | + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping clip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two + +bar: | + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping clip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: +- bar: | + one + + two +EOF; + $expected = array( + 'foo' => array( + array( + 'bar' => "one\n\ntwo", + ), + ), + ); + $tests['Literal block chomping clip with embedded blank line inside unindented collection'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two +bar: | + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping clip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two +bar: |+ + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping keep with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two + +bar: |+ + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo\n\n", + 'bar' => "one\ntwo\n\n", + ); + $tests['Literal block chomping keep with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two +bar: |+ + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping keep without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two +bar: >- + one + two + +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two + +bar: >- + one + two + + +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two +bar: >- + one + two +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two +bar: > + one + two + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping clip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two + +bar: > + one + two + + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping clip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two +bar: > + one + two +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => 'one two', + ); + $tests['Folded block chomping clip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two +bar: >+ + one + two + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping keep with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two + +bar: >+ + one + two + + +EOF; + $expected = array( + 'foo' => "one two\n\n", + 'bar' => "one two\n\n", + ); + $tests['Folded block chomping keep with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two +bar: >+ + one + two +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => 'one two', + ); + $tests['Folded block chomping keep without trailing newline'] = array($expected, $yaml); + + return $tests; + } + + /** + * @dataProvider getBlockChompingTests + */ + public function testBlockChomping($expected, $yaml) + { + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + /** + * Regression test for issue #7989. + * + * @see https://github.com/symfony/symfony/issues/7989 + */ + public function testBlockLiteralWithLeadingNewlines() + { + $yaml = <<<'EOF' +foo: |- + + + bar + +EOF; + $expected = array( + 'foo' => "\n\nbar", + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + public function testObjectSupportEnabled() + { + $input = <<<'EOF' +foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects'); + + $input = <<<'EOF' +foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects'); + } + + /** + * @dataProvider invalidDumpedObjectProvider + */ + public function testObjectSupportDisabledButNoExceptions($input) + { + $this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects'); + } + + /** + * @dataProvider getObjectForMapTests + */ + public function testObjectForMap($yaml, $expected) + { + $this->assertEquals($expected, $this->parser->parse($yaml, false, false, true)); + } + + public function getObjectForMapTests() + { + $tests = array(); + + $yaml = <<<'EOF' +foo: + fiz: [cat] +EOF; + $expected = new \stdClass(); + $expected->foo = new \stdClass(); + $expected->foo->fiz = array('cat'); + $tests['mapping'] = array($yaml, $expected); + + $yaml = '{ "foo": "bar", "fiz": "cat" }'; + $expected = new \stdClass(); + $expected->foo = 'bar'; + $expected->fiz = 'cat'; + $tests['inline-mapping'] = array($yaml, $expected); + + $yaml = "foo: bar\nbaz: foobar"; + $expected = new \stdClass(); + $expected->foo = 'bar'; + $expected->baz = 'foobar'; + $tests['object-for-map-is-applied-after-parsing'] = array($yaml, $expected); + + $yaml = <<<'EOT' +array: + - key: one + - key: two +EOT; + $expected = new \stdClass(); + $expected->array = array(); + $expected->array[0] = new \stdClass(); + $expected->array[0]->key = 'one'; + $expected->array[1] = new \stdClass(); + $expected->array[1]->key = 'two'; + $tests['nest-map-and-sequence'] = array($yaml, $expected); + + $yaml = <<<'YAML' +map: + 1: one + 2: two +YAML; + $expected = new \stdClass(); + $expected->map = new \stdClass(); + $expected->map->{1} = 'one'; + $expected->map->{2} = 'two'; + $tests['numeric-keys'] = array($yaml, $expected); + + $yaml = <<<'YAML' +map: + 0: one + 1: two +YAML; + $expected = new \stdClass(); + $expected->map = new \stdClass(); + $expected->map->{0} = 'one'; + $expected->map->{1} = 'two'; + $tests['zero-indexed-numeric-keys'] = array($yaml, $expected); + + return $tests; + } + + /** + * @dataProvider invalidDumpedObjectProvider + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testObjectsSupportDisabledWithExceptions($yaml) + { + $this->parser->parse($yaml, true, false); + } + + public function invalidDumpedObjectProvider() + { + $yamlTag = <<<'EOF' +foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $localTag = <<<'EOF' +foo: !php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + + return array( + 'yaml-tag' => array($yamlTag), + 'local-tag' => array($localTag), + ); + } + + /** + * @requires extension iconv + */ + public function testNonUtf8Exception() + { + $yamls = array( + iconv('UTF-8', 'ISO-8859-1', "foo: 'äöüß'"), + iconv('UTF-8', 'ISO-8859-15', "euro: '€'"), + iconv('UTF-8', 'CP1252', "cp1252: '©ÉÇáñ'"), + ); + + foreach ($yamls as $yaml) { + try { + $this->parser->parse($yaml); + + $this->fail('charsets other than UTF-8 are rejected.'); + } catch (\Exception $e) { + $this->assertInstanceOf('Symfony\Component\Yaml\Exception\ParseException', $e, 'charsets other than UTF-8 are rejected.'); + } + } + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testUnindentedCollectionException() + { + $yaml = <<<'EOF' + +collection: +-item1 +-item2 +-item3 + +EOF; + + $this->parser->parse($yaml); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testShortcutKeyUnindentedCollectionException() + { + $yaml = <<<'EOF' + +collection: +- key: foo + foo: bar + +EOF; + + $this->parser->parse($yaml); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessageRegExp /^Multiple documents are not supported.+/ + */ + public function testMultipleDocumentsNotSupportedException() + { + Yaml::parse(<<<'EOL' +# Ranking of 1998 home runs +--- +- Mark McGwire +- Sammy Sosa +- Ken Griffey + +# Team ranking +--- +- Chicago Cubs +- St Louis Cardinals +EOL + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testSequenceInAMapping() + { + Yaml::parse(<<<'EOF' +yaml: + hash: me + - array stuff +EOF + ); + } + + public function testSequenceInMappingStartedBySingleDashLine() + { + $yaml = <<<'EOT' +a: +- + b: + - + bar: baz +- foo +d: e +EOT; + $expected = array( + 'a' => array( + array( + 'b' => array( + array( + 'bar' => 'baz', + ), + ), + ), + 'foo', + ), + 'd' => 'e', + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + public function testSequenceFollowedByCommentEmbeddedInMapping() + { + $yaml = <<<'EOT' +a: + b: + - c +# comment + d: e +EOT; + $expected = array( + 'a' => array( + 'b' => array('c'), + 'd' => 'e', + ), + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testMappingInASequence() + { + Yaml::parse(<<<'EOF' +yaml: + - array stuff + hash: me +EOF + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage missing colon + */ + public function testScalarInSequence() + { + Yaml::parse(<<<'EOF' +foo: + - bar +"missing colon" + foo: bar +EOF + ); + } + + /** + * > It is an error for two equal keys to appear in the same mapping node. + * > In such a case the YAML processor may continue, ignoring the second + * > `key: value` pair and issuing an appropriate warning. This strategy + * > preserves a consistent information model for one-pass and random access + * > applications. + * + * @see http://yaml.org/spec/1.2/spec.html#id2759572 + * @see http://yaml.org/spec/1.1/#id932806 + */ + public function testMappingDuplicateKeyBlock() + { + $input = <<<'EOD' +parent: + child: first + child: duplicate +parent: + child: duplicate + child: duplicate +EOD; + $expected = array( + 'parent' => array( + 'child' => 'first', + ), + ); + $this->assertSame($expected, Yaml::parse($input)); + } + + public function testMappingDuplicateKeyFlow() + { + $input = <<<'EOD' +parent: { child: first, child: duplicate } +parent: { child: duplicate, child: duplicate } +EOD; + $expected = array( + 'parent' => array( + 'child' => 'first', + ), + ); + $this->assertSame($expected, Yaml::parse($input)); + } + + public function testEmptyValue() + { + $input = <<<'EOF' +hash: +EOF; + + $this->assertEquals(array('hash' => null), Yaml::parse($input)); + } + + public function testCommentAtTheRootIndent() + { + $this->assertEquals(array( + 'services' => array( + 'app.foo_service' => array( + 'class' => 'Foo', + ), + 'app/bar_service' => array( + 'class' => 'Bar', + ), + ), + ), Yaml::parse(<<<'EOF' +# comment 1 +services: +# comment 2 + # comment 3 + app.foo_service: + class: Foo +# comment 4 + # comment 5 + app/bar_service: + class: Bar +EOF + )); + } + + public function testStringBlockWithComments() + { + $this->assertEquals(array('content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

title

+ + +footer # comment3 +EOT + ), Yaml::parse(<<<'EOF' +content: | + # comment 1 + header + + # comment 2 + +

title

+ + + footer # comment3 +EOF + )); + } + + public function testFoldedStringBlockWithComments() + { + $this->assertEquals(array(array('content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

title

+ + +footer # comment3 +EOT + )), Yaml::parse(<<<'EOF' +- + content: | + # comment 1 + header + + # comment 2 + +

title

+ + + footer # comment3 +EOF + )); + } + + public function testNestedFoldedStringBlockWithComments() + { + $this->assertEquals(array(array( + 'title' => 'some title', + 'content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

title

+ + +footer # comment3 +EOT + )), Yaml::parse(<<<'EOF' +- + title: some title + content: | + # comment 1 + header + + # comment 2 + +

title

+ + + footer # comment3 +EOF + )); + } + + public function testReferenceResolvingInInlineStrings() + { + $this->assertEquals(array( + 'var' => 'var-value', + 'scalar' => 'var-value', + 'list' => array('var-value'), + 'list_in_list' => array(array('var-value')), + 'map_in_list' => array(array('key' => 'var-value')), + 'embedded_mapping' => array(array('key' => 'var-value')), + 'map' => array('key' => 'var-value'), + 'list_in_map' => array('key' => array('var-value')), + 'map_in_map' => array('foo' => array('bar' => 'var-value')), + ), Yaml::parse(<<<'EOF' +var: &var var-value +scalar: *var +list: [ *var ] +list_in_list: [[ *var ]] +map_in_list: [ { key: *var } ] +embedded_mapping: [ key: *var ] +map: { key: *var } +list_in_map: { key: [*var] } +map_in_map: { foo: { bar: *var } } +EOF + )); + } + + public function testYamlDirective() + { + $yaml = <<<'EOF' +%YAML 1.2 +--- +foo: 1 +bar: 2 +EOF; + $this->assertEquals(array('foo' => 1, 'bar' => 2), $this->parser->parse($yaml)); + } + + public function testFloatKeys() + { + $yaml = <<<'EOF' +foo: + 1.2: "bar" + 1.3: "baz" +EOF; + + $expected = array( + 'foo' => array( + '1.2' => 'bar', + '1.3' => 'baz', + ), + ); + + $this->assertEquals($expected, $this->parser->parse($yaml)); + } + + /** + * @group legacy + * @expectedDeprecation Using a colon in the unquoted mapping value "bar: baz" in line 1 is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throw ParseException in Symfony 3.0 + */ + public function testColonInMappingValueException() + { + $yaml = <<<'EOF' +foo: bar: baz +EOF; + + $this->parser->parse($yaml); + } + + public function testColonInMappingValueExceptionNotTriggeredByColonInComment() + { + $yaml = <<<'EOT' +foo: + bar: foobar # Note: a comment after a colon +EOT; + + $this->assertSame(array('foo' => array('bar' => 'foobar')), $this->parser->parse($yaml)); + } + + /** + * @dataProvider getCommentLikeStringInScalarBlockData + */ + public function testCommentLikeStringsAreNotStrippedInBlockScalars($yaml, $expectedParserResult) + { + $this->assertSame($expectedParserResult, $this->parser->parse($yaml)); + } + + public function getCommentLikeStringInScalarBlockData() + { + $tests = array(); + + $yaml = <<<'EOT' +pages: + - + title: some title + content: | + # comment 1 + header + + # comment 2 + +

title

+ + + footer # comment3 +EOT; + $expected = array( + 'pages' => array( + array( + 'title' => 'some title', + 'content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

title

+ + +footer # comment3 +EOT + , + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +test: | + foo + # bar + baz +collection: + - one: | + foo + # bar + baz + - two: | + foo + # bar + baz +EOT; + $expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT + , + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + , + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + , + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +foo: + bar: + scalar-block: > + line1 + line2> + baz: +# comment + foobar: ~ +EOT; + $expected = array( + 'foo' => array( + 'bar' => array( + 'scalar-block' => "line1 line2>\n", + ), + 'baz' => array( + 'foobar' => null, + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +a: + b: hello +# c: | +# first row +# second row + d: hello +EOT; + $expected = array( + 'a' => array( + 'b' => 'hello', + 'd' => 'hello', + ), + ); + $tests[] = array($yaml, $expected); + + return $tests; + } + + public function testBlankLinesAreParsedAsNewLinesInFoldedBlocks() + { + $yaml = <<<'EOT' +test: > +

A heading

+ +
    +
  • a list
  • +
  • may be a good example
  • +
+EOT; + + $this->assertSame( + array( + 'test' => <<<'EOT' +

A heading

+
  • a list
  • may be a good example
+EOT + , + ), + $this->parser->parse($yaml) + ); + } + + public function testAdditionallyIndentedLinesAreParsedAsNewLinesInFoldedBlocks() + { + $yaml = <<<'EOT' +test: > +

A heading

+ +
    +
  • a list
  • +
  • may be a good example
  • +
+EOT; + + $this->assertSame( + array( + 'test' => <<<'EOT' +

A heading

+
    +
  • a list
  • +
  • may be a good example
  • +
+EOT + , + ), + $this->parser->parse($yaml) + ); + } + + /** + * @param $lineNumber + * @param $yaml + * @dataProvider parserThrowsExceptionWithCorrectLineNumberProvider + */ + public function testParserThrowsExceptionWithCorrectLineNumber($lineNumber, $yaml) + { + if (method_exists($this, 'expectException')) { + $this->expectException('\Symfony\Component\Yaml\Exception\ParseException'); + $this->expectExceptionMessage(sprintf('Unexpected characters near "," at line %d (near "bar: "123",").', $lineNumber)); + } else { + $this->setExpectedException('\Symfony\Component\Yaml\Exception\ParseException', sprintf('Unexpected characters near "," at line %d (near "bar: "123",").', $lineNumber)); + } + + $this->parser->parse($yaml); + } + + public function parserThrowsExceptionWithCorrectLineNumberProvider() + { + return array( + array( + 4, + <<<'YAML' +foo: + - + # bar + bar: "123", +YAML + ), + array( + 5, + <<<'YAML' +foo: + - + # bar + # bar + bar: "123", +YAML + ), + array( + 8, + <<<'YAML' +foo: + - + # foobar + baz: 123 +bar: + - + # bar + bar: "123", +YAML + ), + array( + 10, + <<<'YAML' +foo: + - + # foobar + # foobar + baz: 123 +bar: + - + # bar + # bar + bar: "123", +YAML + ), + ); + } + + public function testCanParseVeryLongValue() + { + $longStringWithSpaces = str_repeat('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ', 20000); + $trickyVal = array('x' => $longStringWithSpaces); + + $yamlString = Yaml::dump($trickyVal); + $arrayFromYaml = $this->parser->parse($yamlString); + + $this->assertEquals($trickyVal, $arrayFromYaml); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage Reference "foo" does not exist at line 2 + */ + public function testParserCleansUpReferencesBetweenRuns() + { + $yaml = <<parser->parse($yaml); + + $yaml = <<parser->parse($yaml); + } + + public function testParseReferencesOnMergeKeys() + { + $yaml = << array( + 'a' => 'foo', + 'b' => 'bar', + 'c' => 'baz', + ), + 'mergekeyderef' => array( + 'd' => 'quux', + 'b' => 'bar', + 'c' => 'baz', + ), + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage Reference "foo" does not exist + */ + public function testEvalRefException() + { + $yaml = <<parser->parse($yaml); + } +} + +class B +{ + public $b = 'foo'; +} diff --git a/vendor/symfony/yaml/Tests/YamlTest.php b/vendor/symfony/yaml/Tests/YamlTest.php new file mode 100644 index 0000000..9e776ca --- /dev/null +++ b/vendor/symfony/yaml/Tests/YamlTest.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Yaml; + +class YamlTest extends TestCase +{ + public function testParseAndDump() + { + $data = array('lorem' => 'ipsum', 'dolor' => 'sit'); + $yml = Yaml::dump($data); + $parsed = Yaml::parse($yml); + $this->assertEquals($data, $parsed); + } + + /** + * @group legacy + */ + public function testLegacyParseFromFile() + { + $filename = __DIR__.'/Fixtures/index.yml'; + $contents = file_get_contents($filename); + $parsedByFilename = Yaml::parse($filename); + $parsedByContents = Yaml::parse($contents); + $this->assertEquals($parsedByFilename, $parsedByContents); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testZeroIndentationThrowsException() + { + Yaml::dump(array('lorem' => 'ipsum', 'dolor' => 'sit'), 2, 0); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testNegativeIndentationThrowsException() + { + Yaml::dump(array('lorem' => 'ipsum', 'dolor' => 'sit'), 2, -4); + } +} diff --git a/vendor/symfony/yaml/Unescaper.php b/vendor/symfony/yaml/Unescaper.php new file mode 100644 index 0000000..d0dbcfa --- /dev/null +++ b/vendor/symfony/yaml/Unescaper.php @@ -0,0 +1,156 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Unescaper encapsulates unescaping rules for single and double-quoted + * YAML strings. + * + * @author Matthew Lewinski + * + * @internal + */ +class Unescaper +{ + /** + * Parser and Inline assume UTF-8 encoding, so escaped Unicode characters + * must be converted to that encoding. + * + * @deprecated since version 2.5, to be removed in 3.0 + * + * @internal + */ + const ENCODING = 'UTF-8'; + + /** + * Regex fragment that matches an escaped character in a double quoted string. + */ + const REGEX_ESCAPED_CHARACTER = '\\\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.)'; + + /** + * Unescapes a single quoted string. + * + * @param string $value A single quoted string + * + * @return string The unescaped string + */ + public function unescapeSingleQuotedString($value) + { + return str_replace('\'\'', '\'', $value); + } + + /** + * Unescapes a double quoted string. + * + * @param string $value A double quoted string + * + * @return string The unescaped string + */ + public function unescapeDoubleQuotedString($value) + { + $self = $this; + $callback = function ($match) use ($self) { + return $self->unescapeCharacter($match[0]); + }; + + // evaluate the string + return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value); + } + + /** + * Unescapes a character that was found in a double-quoted string. + * + * @param string $value An escaped character + * + * @return string The unescaped character + * + * @internal This method is public to be usable as callback. It should not + * be used in user code. Should be changed in 3.0. + */ + public function unescapeCharacter($value) + { + switch ($value[1]) { + case '0': + return "\x0"; + case 'a': + return "\x7"; + case 'b': + return "\x8"; + case 't': + return "\t"; + case "\t": + return "\t"; + case 'n': + return "\n"; + case 'v': + return "\xB"; + case 'f': + return "\xC"; + case 'r': + return "\r"; + case 'e': + return "\x1B"; + case ' ': + return ' '; + case '"': + return '"'; + case '/': + return '/'; + case '\\': + return '\\'; + case 'N': + // U+0085 NEXT LINE + return "\xC2\x85"; + case '_': + // U+00A0 NO-BREAK SPACE + return "\xC2\xA0"; + case 'L': + // U+2028 LINE SEPARATOR + return "\xE2\x80\xA8"; + case 'P': + // U+2029 PARAGRAPH SEPARATOR + return "\xE2\x80\xA9"; + case 'x': + return self::utf8chr(hexdec(substr($value, 2, 2))); + case 'u': + return self::utf8chr(hexdec(substr($value, 2, 4))); + case 'U': + return self::utf8chr(hexdec(substr($value, 2, 8))); + default: + @trigger_error('Not escaping a backslash in a double-quoted string is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', E_USER_DEPRECATED); + + return $value; + } + } + + /** + * Get the UTF-8 character for the given code point. + * + * @param int $c The unicode code point + * + * @return string The corresponding UTF-8 character + */ + private static function utf8chr($c) + { + if (0x80 > $c %= 0x200000) { + return \chr($c); + } + if (0x800 > $c) { + return \chr(0xC0 | $c >> 6).\chr(0x80 | $c & 0x3F); + } + if (0x10000 > $c) { + return \chr(0xE0 | $c >> 12).\chr(0x80 | $c >> 6 & 0x3F).\chr(0x80 | $c & 0x3F); + } + + return \chr(0xF0 | $c >> 18).\chr(0x80 | $c >> 12 & 0x3F).\chr(0x80 | $c >> 6 & 0x3F).\chr(0x80 | $c & 0x3F); + } +} diff --git a/vendor/symfony/yaml/Yaml.php b/vendor/symfony/yaml/Yaml.php new file mode 100644 index 0000000..3f93cba --- /dev/null +++ b/vendor/symfony/yaml/Yaml.php @@ -0,0 +1,99 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\ParseException; + +/** + * Yaml offers convenience methods to load and dump YAML. + * + * @author Fabien Potencier + */ +class Yaml +{ + /** + * Parses YAML into a PHP value. + * + * Usage: + * + * $array = Yaml::parse(file_get_contents('config.yml')); + * print_r($array); + * + * As this method accepts both plain strings and file names as an input, + * you must validate the input before calling this method. Passing a file + * as an input is a deprecated feature and will be removed in 3.0. + * + * Note: the ability to pass file names to the Yaml::parse method is deprecated since Symfony 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead. + * + * @param string $input Path to a YAML file or a string containing YAML + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap True if maps should return a stdClass instead of array() + * + * @return mixed The YAML converted to a PHP value + * + * @throws ParseException If the YAML is not valid + */ + public static function parse($input, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) + { + // if input is a file, process it + $file = ''; + if (false === strpos($input, "\n") && is_file($input)) { + @trigger_error('The ability to pass file names to the '.__METHOD__.' method is deprecated since Symfony 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.', E_USER_DEPRECATED); + + if (false === is_readable($input)) { + throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input)); + } + + $file = $input; + $input = file_get_contents($file); + } + + $yaml = new Parser(); + + try { + return $yaml->parse($input, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } catch (ParseException $e) { + if ($file) { + $e->setParsedFile($file); + } + + throw $e; + } + } + + /** + * Dumps a PHP value to a YAML string. + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. + * + * @param mixed $input The PHP value + * @param int $inline The level where you switch to inline YAML + * @param int $indent The amount of spaces to use for indentation of nested nodes + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * + * @return string A YAML string representing the original PHP value + */ + public static function dump($input, $inline = 2, $indent = 4, $exceptionOnInvalidType = false, $objectSupport = false) + { + if ($indent < 1) { + throw new \InvalidArgumentException('The indentation must be greater than zero.'); + } + + $yaml = new Dumper(); + $yaml->setIndentation($indent); + + return $yaml->dump($input, $inline, 0, $exceptionOnInvalidType, $objectSupport); + } +} diff --git a/vendor/symfony/yaml/composer.json b/vendor/symfony/yaml/composer.json new file mode 100644 index 0000000..d073236 --- /dev/null +++ b/vendor/symfony/yaml/composer.json @@ -0,0 +1,34 @@ +{ + "name": "symfony/yaml", + "type": "library", + "description": "Symfony Yaml Component", + "keywords": [], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "autoload": { + "psr-4": { "Symfony\\Component\\Yaml\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + } +} diff --git a/vendor/symfony/yaml/phpunit.xml.dist b/vendor/symfony/yaml/phpunit.xml.dist new file mode 100644 index 0000000..b5d4d91 --- /dev/null +++ b/vendor/symfony/yaml/phpunit.xml.dist @@ -0,0 +1,30 @@ + + + + + + + + + + ./Tests/ + + + + + + ./ + + ./Tests + ./vendor + + + +

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 x)>~B@;Jq@x0490}#{370-T33lVN* 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ͭ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≦>he9FIye)d^U$j1d;X}K}d_uhb|#B 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 z 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