diff --git a/.gitignore b/.gitignore index 5770c8a67..aadbc43fb 100644 --- a/.gitignore +++ b/.gitignore @@ -118,13 +118,6 @@ sabre/http/examples scssphp/scssphp/example -swiftmailer/swiftmailer/doc/ -swiftmailer/swiftmailer/notes/ -swiftmailer/swiftmailer/.gitattributes -swiftmailer/swiftmailer/CHANGES -swiftmailer/swiftmailer/README -swiftmailer/swiftmailer/VERSION - symfony/*/Test symfony/debug/Tests diff --git a/composer.json b/composer.json index 8ff208a50..02ea91c98 100644 --- a/composer.json +++ b/composer.json @@ -49,7 +49,6 @@ "sabre/dav": "^4.4.0", "scssphp/scssphp": "^1.11", "stecman/symfony-console-completion": "^0.11.0", - "swiftmailer/swiftmailer": "^6.3.0", "symfony/console": "5.4.19", "symfony/event-dispatcher": "4.4.30", "symfony/event-dispatcher-contracts": "1.1.9", diff --git a/composer.lock b/composer.lock index abdc24a23..686be1f22 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "da1054812d0d125957e0611f6927eb1a", + "content-hash": "f5e1ea7b58f6fa436d7a21f2a3b0cc58", "packages": [ { "name": "aws/aws-crt-php", @@ -4511,82 +4511,6 @@ "description": "Automatic BASH completion for Symfony Console Component based applications.", "time": "2019-11-24T17:03:06+00:00" }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" - } - ], - "abandoned": "symfony/mailer", - "time": "2021-10-18T15:26:12+00:00" - }, { "name": "symfony/console", "version": "v5.4.19", @@ -5369,89 +5293,6 @@ ], "time": "2021-02-19T12:13:01+00:00" }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-iconv": "*" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.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" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.23.1", diff --git a/composer/autoload_classmap.php b/composer/autoload_classmap.php index 7189abcd1..a7b3b1c8a 100644 --- a/composer/autoload_classmap.php +++ b/composer/autoload_classmap.php @@ -3286,7 +3286,6 @@ 'Symfony\\Contracts\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation-contracts/TranslatorInterface.php', 'Symfony\\Contracts\\Translation\\TranslatorTrait' => $vendorDir . '/symfony/translation-contracts/TranslatorTrait.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => $vendorDir . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Iconv\\Iconv' => $vendorDir . '/symfony/polyfill-iconv/Iconv.php', 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => $vendorDir . '/symfony/polyfill-intl-grapheme/Grapheme.php', 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => $vendorDir . '/symfony/polyfill-intl-idn/Idn.php', 'Symfony\\Polyfill\\Intl\\Idn\\Info' => $vendorDir . '/symfony/polyfill-intl-idn/Info.php', diff --git a/composer/autoload_files.php b/composer/autoload_files.php index fa0221cb3..d1edfbfe9 100644 --- a/composer/autoload_files.php +++ b/composer/autoload_files.php @@ -7,15 +7,13 @@ return array( 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', 'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php', @@ -23,13 +21,14 @@ 'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php', '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php', '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php', + '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => $vendorDir . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'ebdb698ed4152ae445614b69b5e4bb6a' => $vendorDir . '/sabre/http/lib/functions.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => $vendorDir . '/symfony/string/Resources/functions.php', 'b067bc7112e384b61c701452d53a14a8' => $vendorDir . '/mtdowling/jmespath.php/src/JmesPath.php', 'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => $vendorDir . '/symfony/polyfill-iconv/bootstrap.php', '51fcf4e06c07cc00c920b44bcd900e7a' => $vendorDir . '/thecodingmachine/safe/deprecated/apc.php', '47f619d9197b36cf5ab70738d7743fe2' => $vendorDir . '/thecodingmachine/safe/deprecated/libevent.php', 'ea6bb8a12ef9b68f6ada99058e530760' => $vendorDir . '/thecodingmachine/safe/deprecated/mssql.php', @@ -122,5 +121,4 @@ '8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php', '538ca81a9a966a6716601ecf48f4eaef' => $vendorDir . '/opis/closure/functions.php', 'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php', - '2c102faa651ef8ea5874edb585946bce' => $vendorDir . '/swiftmailer/swiftmailer/lib/swift_required.php', ); diff --git a/composer/autoload_psr4.php b/composer/autoload_psr4.php index d2d45ce38..53438adcd 100644 --- a/composer/autoload_psr4.php +++ b/composer/autoload_psr4.php @@ -21,7 +21,6 @@ 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'), 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'), 'Symfony\\Polyfill\\Intl\\Grapheme\\' => array($vendorDir . '/symfony/polyfill-intl-grapheme'), - 'Symfony\\Polyfill\\Iconv\\' => array($vendorDir . '/symfony/polyfill-iconv'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'), diff --git a/composer/autoload_static.php b/composer/autoload_static.php index 01d9f2572..d2e819a87 100644 --- a/composer/autoload_static.php +++ b/composer/autoload_static.php @@ -8,15 +8,13 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', - '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', + '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php', - 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', + 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', - '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', - 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', 'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php', '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php', @@ -24,13 +22,14 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php', '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php', '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php', + '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', + 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', '8825ede83f2f289127722d4e842cf7e8' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/bootstrap.php', 'ebdb698ed4152ae445614b69b5e4bb6a' => __DIR__ . '/..' . '/sabre/http/lib/functions.php', '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', 'b6b991a57620e2fb6b2f66f03fe9ddc2' => __DIR__ . '/..' . '/symfony/string/Resources/functions.php', 'b067bc7112e384b61c701452d53a14a8' => __DIR__ . '/..' . '/mtdowling/jmespath.php/src/JmesPath.php', 'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php', - 'def43f6c87e4f8dfd0c9e1b1bab14fe8' => __DIR__ . '/..' . '/symfony/polyfill-iconv/bootstrap.php', '51fcf4e06c07cc00c920b44bcd900e7a' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/apc.php', '47f619d9197b36cf5ab70738d7743fe2' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/libevent.php', 'ea6bb8a12ef9b68f6ada99058e530760' => __DIR__ . '/..' . '/thecodingmachine/safe/deprecated/mssql.php', @@ -123,7 +122,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 '8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php', '538ca81a9a966a6716601ecf48f4eaef' => __DIR__ . '/..' . '/opis/closure/functions.php', 'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php', - '2c102faa651ef8ea5874edb585946bce' => __DIR__ . '/..' . '/swiftmailer/swiftmailer/lib/swift_required.php', ); public static $prefixLengthsPsr4 = array ( @@ -165,7 +163,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33, 'Symfony\\Polyfill\\Intl\\Idn\\' => 26, 'Symfony\\Polyfill\\Intl\\Grapheme\\' => 31, - 'Symfony\\Polyfill\\Iconv\\' => 23, 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Contracts\\Translation\\' => 30, 'Symfony\\Contracts\\Service\\' => 26, @@ -350,10 +347,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme', ), - 'Symfony\\Polyfill\\Iconv\\' => - array ( - 0 => __DIR__ . '/..' . '/symfony/polyfill-iconv', - ), 'Symfony\\Polyfill\\Ctype\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', @@ -3964,7 +3957,6 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 'Symfony\\Contracts\\Translation\\TranslatorInterface' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorInterface.php', 'Symfony\\Contracts\\Translation\\TranslatorTrait' => __DIR__ . '/..' . '/symfony/translation-contracts/TranslatorTrait.php', 'Symfony\\Polyfill\\Ctype\\Ctype' => __DIR__ . '/..' . '/symfony/polyfill-ctype/Ctype.php', - 'Symfony\\Polyfill\\Iconv\\Iconv' => __DIR__ . '/..' . '/symfony/polyfill-iconv/Iconv.php', 'Symfony\\Polyfill\\Intl\\Grapheme\\Grapheme' => __DIR__ . '/..' . '/symfony/polyfill-intl-grapheme/Grapheme.php', 'Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Idn.php', 'Symfony\\Polyfill\\Intl\\Idn\\Info' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/Info.php', diff --git a/composer/installed.json b/composer/installed.json index a2dd67123..9636b61aa 100644 --- a/composer/installed.json +++ b/composer/installed.json @@ -4712,85 +4712,6 @@ "description": "Automatic BASH completion for Symfony Console Component based applications.", "install-path": "../stecman/symfony-console-completion" }, - { - "name": "swiftmailer/swiftmailer", - "version": "v6.3.0", - "version_normalized": "6.3.0.0", - "source": { - "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8a5d5072dca8f48460fce2f4131fcc495eec654c", - "reference": "8a5d5072dca8f48460fce2f4131fcc495eec654c", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.0|^3.1", - "php": ">=7.0.0", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "symfony/phpunit-bridge": "^4.4|^5.4" - }, - "suggest": { - "ext-intl": "Needed to support internationalized email addresses" - }, - "time": "2021-10-18T15:26:12+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.2-dev" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "lib/swift_required.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Chris Corbyn" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "support": { - "issues": "https://github.com/swiftmailer/swiftmailer/issues", - "source": "https://github.com/swiftmailer/swiftmailer/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/swiftmailer/swiftmailer", - "type": "tidelift" - } - ], - "abandoned": "symfony/mailer", - "install-path": "../swiftmailer/swiftmailer" - }, { "name": "symfony/console", "version": "v5.4.19", @@ -5603,92 +5524,6 @@ ], "install-path": "../symfony/polyfill-ctype" }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.27.0", - "version_normalized": "1.27.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-iconv": "*" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "time": "2022-11-03T14:55:06+00:00", - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.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-iconv" - }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.23.1", diff --git a/composer/installed.php b/composer/installed.php index e9f1fc4b8..ace64fc27 100644 --- a/composer/installed.php +++ b/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'nextcloud/3rdparty', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '6c36449d6cea0a8b5eec3a3c7d1b40a137b689b7', + 'reference' => '7fd6d1dfb9ae44afeca60190a1f6deb0946ff0cc', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -328,7 +328,7 @@ 'nextcloud/3rdparty' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '6c36449d6cea0a8b5eec3a3c7d1b40a137b689b7', + 'reference' => '7fd6d1dfb9ae44afeca60190a1f6deb0946ff0cc', 'type' => 'library', 'install_path' => __DIR__ . '/../', 'aliases' => array(), @@ -706,15 +706,6 @@ 'aliases' => array(), 'dev_requirement' => false, ), - 'swiftmailer/swiftmailer' => array( - 'pretty_version' => 'v6.3.0', - 'version' => '6.3.0.0', - 'reference' => '8a5d5072dca8f48460fce2f4131fcc495eec654c', - 'type' => 'library', - 'install_path' => __DIR__ . '/../swiftmailer/swiftmailer', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'symfony/console' => array( 'pretty_version' => 'v5.4.19', 'version' => '5.4.19.0', @@ -811,15 +802,6 @@ 'aliases' => array(), 'dev_requirement' => false, ), - 'symfony/polyfill-iconv' => array( - 'pretty_version' => 'v1.27.0', - 'version' => '1.27.0.0', - 'reference' => '927013f3aac555983a5059aada98e1907d842695', - 'type' => 'library', - 'install_path' => __DIR__ . '/../symfony/polyfill-iconv', - 'aliases' => array(), - 'dev_requirement' => false, - ), 'symfony/polyfill-intl-grapheme' => array( 'pretty_version' => 'v1.23.1', 'version' => '1.23.1.0', diff --git a/swiftmailer/swiftmailer/LICENSE b/swiftmailer/swiftmailer/LICENSE deleted file mode 100644 index ab720772e..000000000 --- a/swiftmailer/swiftmailer/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2013-2021 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/swiftmailer/swiftmailer/lib/classes/Swift.php b/swiftmailer/swiftmailer/lib/classes/Swift.php deleted file mode 100644 index 51b19c9cb..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift.php +++ /dev/null @@ -1,78 +0,0 @@ -address = $address; - } - - public function getAddress(): string - { - return $this->address; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Attachment.php b/swiftmailer/swiftmailer/lib/classes/Swift/Attachment.php deleted file mode 100644 index 7a1420f79..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Attachment.php +++ /dev/null @@ -1,54 +0,0 @@ -createDependenciesFor('mime.attachment') - ); - - $this->setBody($data, $contentType); - $this->setFilename($filename); - } - - /** - * Create a new Attachment from a filesystem path. - * - * @param string $path - * @param string $contentType optional - * - * @return self - */ - public static function fromPath($path, $contentType = null) - { - return (new self())->setFile( - new Swift_ByteStream_FileByteStream($path), - $contentType - ); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php deleted file mode 100644 index 3a69c15f1..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/AbstractFilterableInputStream.php +++ /dev/null @@ -1,176 +0,0 @@ -filters[$key] = $filter; - } - - /** - * Remove an already present StreamFilter based on its $key. - * - * @param string $key - */ - public function removeFilter($key) - { - unset($this->filters[$key]); - } - - /** - * Writes $bytes to the end of the stream. - * - * @param string $bytes - * - * @throws Swift_IoException - * - * @return int - */ - public function write($bytes) - { - $this->writeBuffer .= $bytes; - foreach ($this->filters as $filter) { - if ($filter->shouldBuffer($this->writeBuffer)) { - return; - } - } - $this->doWrite($this->writeBuffer); - - return ++$this->sequence; - } - - /** - * For any bytes that are currently buffered inside the stream, force them - * off the buffer. - * - * @throws Swift_IoException - */ - public function commit() - { - $this->doWrite($this->writeBuffer); - } - - /** - * Attach $is to this stream. - * - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - */ - public function bind(Swift_InputByteStream $is) - { - $this->mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->mirrors as $k => $stream) { - if ($is === $stream) { - if ('' !== $this->writeBuffer) { - $stream->write($this->writeBuffer); - } - unset($this->mirrors[$k]); - } - } - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - * - * @throws Swift_IoException - */ - public function flushBuffers() - { - if ('' !== $this->writeBuffer) { - $this->doWrite($this->writeBuffer); - } - $this->flush(); - - foreach ($this->mirrors as $stream) { - $stream->flushBuffers(); - } - } - - /** Run $bytes through all filters */ - private function filter($bytes) - { - foreach ($this->filters as $filter) { - $bytes = $filter->filter($bytes); - } - - return $bytes; - } - - /** Just write the bytes to the stream */ - private function doWrite($bytes) - { - $this->doCommit($this->filter($bytes)); - - foreach ($this->mirrors as $stream) { - $stream->write($bytes); - } - - $this->writeBuffer = ''; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php deleted file mode 100644 index 4f3dcc377..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/ArrayByteStream.php +++ /dev/null @@ -1,178 +0,0 @@ -array = $stack; - $this->arraySize = \count($stack); - } elseif (\is_string($stack)) { - $this->write($stack); - } else { - $this->array = []; - } - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. - * - * If less bytes exist than are requested the - * remaining bytes are given instead. If no bytes are remaining at all, boolean - * false is returned. - * - * @param int $length - * - * @return string - */ - public function read($length) - { - if ($this->offset == $this->arraySize) { - return false; - } - - // Don't use array slice - $end = $length + $this->offset; - $end = $this->arraySize < $end ? $this->arraySize : $end; - $ret = ''; - for (; $this->offset < $end; ++$this->offset) { - $ret .= $this->array[$this->offset]; - } - - return $ret; - } - - /** - * Writes $bytes to the end of the stream. - * - * @param string $bytes - */ - public function write($bytes) - { - $to_add = str_split($bytes); - foreach ($to_add as $value) { - $this->array[] = $value; - } - $this->arraySize = \count($this->array); - - foreach ($this->mirrors as $stream) { - $stream->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Attach $is to this stream. - * - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - */ - public function bind(Swift_InputByteStream $is) - { - $this->mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->mirrors as $k => $stream) { - if ($is === $stream) { - unset($this->mirrors[$k]); - } - } - } - - /** - * Move the internal read pointer to $byteOffset in the stream. - * - * @param int $byteOffset - * - * @return bool - */ - public function setReadPointer($byteOffset) - { - if ($byteOffset > $this->arraySize) { - $byteOffset = $this->arraySize; - } elseif ($byteOffset < 0) { - $byteOffset = 0; - } - - $this->offset = $byteOffset; - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - */ - public function flushBuffers() - { - $this->offset = 0; - $this->array = []; - $this->arraySize = 0; - - foreach ($this->mirrors as $stream) { - $stream->flushBuffers(); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php deleted file mode 100644 index f6391219e..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/FileByteStream.php +++ /dev/null @@ -1,214 +0,0 @@ -path = $path; - $this->mode = $writable ? 'w+b' : 'rb'; - } - - /** - * Get the complete path to the file. - * - * @return string - */ - public function getPath() - { - return $this->path; - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. - * - * If less bytes exist than are requested the - * remaining bytes are given instead. If no bytes are remaining at all, boolean - * false is returned. - * - * @param int $length - * - * @return string|bool - * - * @throws Swift_IoException - */ - public function read($length) - { - $fp = $this->getReadHandle(); - if (!feof($fp)) { - $bytes = fread($fp, $length); - $this->offset = ftell($fp); - - // If we read one byte after reaching the end of the file - // feof() will return false and an empty string is returned - if ((false === $bytes || '' === $bytes) && feof($fp)) { - $this->resetReadHandle(); - - return false; - } - - return $bytes; - } - - $this->resetReadHandle(); - - return false; - } - - /** - * Move the internal read pointer to $byteOffset in the stream. - * - * @param int $byteOffset - * - * @return bool - */ - public function setReadPointer($byteOffset) - { - if (isset($this->reader)) { - $this->seekReadStreamToPosition($byteOffset); - } - $this->offset = $byteOffset; - } - - /** Just write the bytes to the file */ - protected function doCommit($bytes) - { - fwrite($this->getWriteHandle(), $bytes); - $this->resetReadHandle(); - } - - /** Not used */ - protected function flush() - { - } - - /** Get the resource for reading */ - private function getReadHandle() - { - if (!isset($this->reader)) { - $pointer = @fopen($this->path, 'rb'); - if (!$pointer) { - throw new Swift_IoException('Unable to open file for reading ['.$this->path.']'); - } - $this->reader = $pointer; - if (0 != $this->offset) { - $this->getReadStreamSeekableStatus(); - $this->seekReadStreamToPosition($this->offset); - } - } - - return $this->reader; - } - - /** Get the resource for writing */ - private function getWriteHandle() - { - if (!isset($this->writer)) { - if (!$this->writer = fopen($this->path, $this->mode)) { - throw new Swift_IoException('Unable to open file for writing ['.$this->path.']'); - } - } - - return $this->writer; - } - - /** Force a reload of the resource for reading */ - private function resetReadHandle() - { - if (isset($this->reader)) { - fclose($this->reader); - $this->reader = null; - } - } - - /** Check if ReadOnly Stream is seekable */ - private function getReadStreamSeekableStatus() - { - $metas = stream_get_meta_data($this->reader); - $this->seekable = $metas['seekable']; - } - - /** Streams in a readOnly stream ensuring copy if needed */ - private function seekReadStreamToPosition($offset) - { - if (null === $this->seekable) { - $this->getReadStreamSeekableStatus(); - } - if (false === $this->seekable) { - $currentPos = ftell($this->reader); - if ($currentPos < $offset) { - $toDiscard = $offset - $currentPos; - fread($this->reader, $toDiscard); - - return; - } - $this->copyReadStream(); - } - fseek($this->reader, $offset, SEEK_SET); - } - - /** Copy a readOnly Stream to ensure seekability */ - private function copyReadStream() - { - if ($tmpFile = fopen('php://temp/maxmemory:4096', 'w+b')) { - /* We have opened a php:// Stream Should work without problem */ - } elseif (\function_exists('sys_get_temp_dir') && is_writable(sys_get_temp_dir()) && ($tmpFile = tmpfile())) { - /* We have opened a tmpfile */ - } else { - throw new Swift_IoException('Unable to copy the file to make it seekable, sys_temp_dir is not writable, php://memory not available'); - } - $currentPos = ftell($this->reader); - fclose($this->reader); - $source = fopen($this->path, 'rb'); - if (!$source) { - throw new Swift_IoException('Unable to open file for copying ['.$this->path.']'); - } - fseek($tmpFile, 0, SEEK_SET); - while (!feof($source)) { - fwrite($tmpFile, fread($source, 4096)); - } - fseek($tmpFile, $currentPos, SEEK_SET); - fclose($source); - $this->reader = $tmpFile; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php deleted file mode 100644 index 0dc61909d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ByteStream/TemporaryFileByteStream.php +++ /dev/null @@ -1,52 +0,0 @@ -getPath()))) { - throw new Swift_IoException('Failed to get temporary file content.'); - } - - return $content; - } - - public function __destruct() - { - if (file_exists($this->getPath())) { - @unlink($this->getPath()); - } - } - - public function __sleep() - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - public function __wakeup() - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader.php deleted file mode 100644 index 4267adbc5..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader.php +++ /dev/null @@ -1,67 +0,0 @@ - - */ -interface Swift_CharacterReader -{ - const MAP_TYPE_INVALID = 0x01; - const MAP_TYPE_FIXED_LEN = 0x02; - const MAP_TYPE_POSITIONS = 0x03; - - /** - * Returns the complete character map. - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - * - * @return int - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars); - - /** - * Returns the mapType, see constants. - * - * @return int - */ - public function getMapType(); - - /** - * Returns an integer which specifies how many more bytes to read. - * - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * - * @param int[] $bytes - * @param int $size - * - * @return int - */ - public function validateByteSequence($bytes, $size); - - /** - * Returns the number of bytes which should be read to start each character. - * - * For fixed width character sets this should be the number of octets-per-character. - * For multibyte character sets this will probably be 1. - * - * @return int - */ - public function getInitialByteSize(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php deleted file mode 100644 index 3e055afd9..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/GenericFixedWidthReader.php +++ /dev/null @@ -1,97 +0,0 @@ - - */ -class Swift_CharacterReader_GenericFixedWidthReader implements Swift_CharacterReader -{ - /** - * The number of bytes in a single character. - * - * @var int - */ - private $width; - - /** - * Creates a new GenericFixedWidthReader using $width bytes per character. - * - * @param int $width - */ - public function __construct($width) - { - $this->width = $width; - } - - /** - * Returns the complete character map. - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - * - * @return int - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) - { - $strlen = \strlen($string); - // % and / are CPU intensive, so, maybe find a better way - $ignored = $strlen % $this->width; - $ignoredChars = $ignored ? substr($string, -$ignored) : ''; - $currentMap = $this->width; - - return ($strlen - $ignored) / $this->width; - } - - /** - * Returns the mapType. - * - * @return int - */ - public function getMapType() - { - return self::MAP_TYPE_FIXED_LEN; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * - * @param string $bytes - * @param int $size - * - * @return int - */ - public function validateByteSequence($bytes, $size) - { - $needed = $this->width - $size; - - return $needed > -1 ? $needed : -1; - } - - /** - * Returns the number of bytes which should be read to start each character. - * - * @return int - */ - public function getInitialByteSize() - { - return $this->width; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php deleted file mode 100644 index ffc05f716..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/UsAsciiReader.php +++ /dev/null @@ -1,84 +0,0 @@ - "\x07F") { - // Invalid char - $currentMap[$i + $startOffset] = $string[$i]; - } - } - - return $strlen; - } - - /** - * Returns mapType. - * - * @return int mapType - */ - public function getMapType() - { - return self::MAP_TYPE_INVALID; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * - * @param string $bytes - * @param int $size - * - * @return int - */ - public function validateByteSequence($bytes, $size) - { - $byte = reset($bytes); - if (1 == \count($bytes) && $byte >= 0x00 && $byte <= 0x7F) { - return 0; - } - - return -1; - } - - /** - * Returns the number of bytes which should be read to start each character. - * - * @return int - */ - public function getInitialByteSize() - { - return 1; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php deleted file mode 100644 index da37e0da9..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReader/Utf8Reader.php +++ /dev/null @@ -1,176 +0,0 @@ - - */ -class Swift_CharacterReader_Utf8Reader implements Swift_CharacterReader -{ - /** Pre-computed for optimization */ - private static $length_map = [ - // N=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x0N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x1N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x2N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x3N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x4N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x5N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x6N - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0x7N - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x8N - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0x9N - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xAN - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0xBN - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xCN - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // 0xDN - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 0xEN - 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 0, 0, // 0xFN - ]; - - private static $s_length_map = [ - "\x00" => 1, "\x01" => 1, "\x02" => 1, "\x03" => 1, "\x04" => 1, "\x05" => 1, "\x06" => 1, "\x07" => 1, - "\x08" => 1, "\x09" => 1, "\x0a" => 1, "\x0b" => 1, "\x0c" => 1, "\x0d" => 1, "\x0e" => 1, "\x0f" => 1, - "\x10" => 1, "\x11" => 1, "\x12" => 1, "\x13" => 1, "\x14" => 1, "\x15" => 1, "\x16" => 1, "\x17" => 1, - "\x18" => 1, "\x19" => 1, "\x1a" => 1, "\x1b" => 1, "\x1c" => 1, "\x1d" => 1, "\x1e" => 1, "\x1f" => 1, - "\x20" => 1, "\x21" => 1, "\x22" => 1, "\x23" => 1, "\x24" => 1, "\x25" => 1, "\x26" => 1, "\x27" => 1, - "\x28" => 1, "\x29" => 1, "\x2a" => 1, "\x2b" => 1, "\x2c" => 1, "\x2d" => 1, "\x2e" => 1, "\x2f" => 1, - "\x30" => 1, "\x31" => 1, "\x32" => 1, "\x33" => 1, "\x34" => 1, "\x35" => 1, "\x36" => 1, "\x37" => 1, - "\x38" => 1, "\x39" => 1, "\x3a" => 1, "\x3b" => 1, "\x3c" => 1, "\x3d" => 1, "\x3e" => 1, "\x3f" => 1, - "\x40" => 1, "\x41" => 1, "\x42" => 1, "\x43" => 1, "\x44" => 1, "\x45" => 1, "\x46" => 1, "\x47" => 1, - "\x48" => 1, "\x49" => 1, "\x4a" => 1, "\x4b" => 1, "\x4c" => 1, "\x4d" => 1, "\x4e" => 1, "\x4f" => 1, - "\x50" => 1, "\x51" => 1, "\x52" => 1, "\x53" => 1, "\x54" => 1, "\x55" => 1, "\x56" => 1, "\x57" => 1, - "\x58" => 1, "\x59" => 1, "\x5a" => 1, "\x5b" => 1, "\x5c" => 1, "\x5d" => 1, "\x5e" => 1, "\x5f" => 1, - "\x60" => 1, "\x61" => 1, "\x62" => 1, "\x63" => 1, "\x64" => 1, "\x65" => 1, "\x66" => 1, "\x67" => 1, - "\x68" => 1, "\x69" => 1, "\x6a" => 1, "\x6b" => 1, "\x6c" => 1, "\x6d" => 1, "\x6e" => 1, "\x6f" => 1, - "\x70" => 1, "\x71" => 1, "\x72" => 1, "\x73" => 1, "\x74" => 1, "\x75" => 1, "\x76" => 1, "\x77" => 1, - "\x78" => 1, "\x79" => 1, "\x7a" => 1, "\x7b" => 1, "\x7c" => 1, "\x7d" => 1, "\x7e" => 1, "\x7f" => 1, - "\x80" => 0, "\x81" => 0, "\x82" => 0, "\x83" => 0, "\x84" => 0, "\x85" => 0, "\x86" => 0, "\x87" => 0, - "\x88" => 0, "\x89" => 0, "\x8a" => 0, "\x8b" => 0, "\x8c" => 0, "\x8d" => 0, "\x8e" => 0, "\x8f" => 0, - "\x90" => 0, "\x91" => 0, "\x92" => 0, "\x93" => 0, "\x94" => 0, "\x95" => 0, "\x96" => 0, "\x97" => 0, - "\x98" => 0, "\x99" => 0, "\x9a" => 0, "\x9b" => 0, "\x9c" => 0, "\x9d" => 0, "\x9e" => 0, "\x9f" => 0, - "\xa0" => 0, "\xa1" => 0, "\xa2" => 0, "\xa3" => 0, "\xa4" => 0, "\xa5" => 0, "\xa6" => 0, "\xa7" => 0, - "\xa8" => 0, "\xa9" => 0, "\xaa" => 0, "\xab" => 0, "\xac" => 0, "\xad" => 0, "\xae" => 0, "\xaf" => 0, - "\xb0" => 0, "\xb1" => 0, "\xb2" => 0, "\xb3" => 0, "\xb4" => 0, "\xb5" => 0, "\xb6" => 0, "\xb7" => 0, - "\xb8" => 0, "\xb9" => 0, "\xba" => 0, "\xbb" => 0, "\xbc" => 0, "\xbd" => 0, "\xbe" => 0, "\xbf" => 0, - "\xc0" => 2, "\xc1" => 2, "\xc2" => 2, "\xc3" => 2, "\xc4" => 2, "\xc5" => 2, "\xc6" => 2, "\xc7" => 2, - "\xc8" => 2, "\xc9" => 2, "\xca" => 2, "\xcb" => 2, "\xcc" => 2, "\xcd" => 2, "\xce" => 2, "\xcf" => 2, - "\xd0" => 2, "\xd1" => 2, "\xd2" => 2, "\xd3" => 2, "\xd4" => 2, "\xd5" => 2, "\xd6" => 2, "\xd7" => 2, - "\xd8" => 2, "\xd9" => 2, "\xda" => 2, "\xdb" => 2, "\xdc" => 2, "\xdd" => 2, "\xde" => 2, "\xdf" => 2, - "\xe0" => 3, "\xe1" => 3, "\xe2" => 3, "\xe3" => 3, "\xe4" => 3, "\xe5" => 3, "\xe6" => 3, "\xe7" => 3, - "\xe8" => 3, "\xe9" => 3, "\xea" => 3, "\xeb" => 3, "\xec" => 3, "\xed" => 3, "\xee" => 3, "\xef" => 3, - "\xf0" => 4, "\xf1" => 4, "\xf2" => 4, "\xf3" => 4, "\xf4" => 4, "\xf5" => 4, "\xf6" => 4, "\xf7" => 4, - "\xf8" => 5, "\xf9" => 5, "\xfa" => 5, "\xfb" => 5, "\xfc" => 6, "\xfd" => 6, "\xfe" => 0, "\xff" => 0, - ]; - - /** - * Returns the complete character map. - * - * @param string $string - * @param int $startOffset - * @param array $currentMap - * @param mixed $ignoredChars - * - * @return int - */ - public function getCharPositions($string, $startOffset, &$currentMap, &$ignoredChars) - { - if (!isset($currentMap['i']) || !isset($currentMap['p'])) { - $currentMap['p'] = $currentMap['i'] = []; - } - - $strlen = \strlen($string); - $charPos = \count($currentMap['p']); - $foundChars = 0; - $invalid = false; - for ($i = 0; $i < $strlen; ++$i) { - $char = $string[$i]; - $size = self::$s_length_map[$char]; - if (0 == $size) { - /* char is invalid, we must wait for a resync */ - $invalid = true; - continue; - } else { - if (true === $invalid) { - /* We mark the chars as invalid and start a new char */ - $currentMap['p'][$charPos + $foundChars] = $startOffset + $i; - $currentMap['i'][$charPos + $foundChars] = true; - ++$foundChars; - $invalid = false; - } - if (($i + $size) > $strlen) { - $ignoredChars = substr($string, $i); - break; - } - for ($j = 1; $j < $size; ++$j) { - $char = $string[$i + $j]; - if ($char > "\x7F" && $char < "\xC0") { - // Valid - continue parsing - } else { - /* char is invalid, we must wait for a resync */ - $invalid = true; - continue 2; - } - } - /* Ok we got a complete char here */ - $currentMap['p'][$charPos + $foundChars] = $startOffset + $i + $size; - $i += $j - 1; - ++$foundChars; - } - } - - return $foundChars; - } - - /** - * Returns mapType. - * - * @return int mapType - */ - public function getMapType() - { - return self::MAP_TYPE_POSITIONS; - } - - /** - * Returns an integer which specifies how many more bytes to read. - * - * A positive integer indicates the number of more bytes to fetch before invoking - * this method again. - * A value of zero means this is already a valid character. - * A value of -1 means this cannot possibly be a valid character. - * - * @param string $bytes - * @param int $size - * - * @return int - */ - public function validateByteSequence($bytes, $size) - { - if ($size < 1) { - return -1; - } - $needed = self::$length_map[$bytes[0]] - $size; - - return $needed > -1 ? $needed : -1; - } - - /** - * Returns the number of bytes which should be read to start each character. - * - * @return int - */ - public function getInitialByteSize() - { - return 1; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php deleted file mode 100644 index 15b6c6920..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterReaderFactory.php +++ /dev/null @@ -1,26 +0,0 @@ -init(); - } - - public function __wakeup() - { - $this->init(); - } - - public function init() - { - if (\count(self::$map) > 0) { - return; - } - - $prefix = 'Swift_CharacterReader_'; - - $singleByte = [ - 'class' => $prefix.'GenericFixedWidthReader', - 'constructor' => [1], - ]; - - $doubleByte = [ - 'class' => $prefix.'GenericFixedWidthReader', - 'constructor' => [2], - ]; - - $fourBytes = [ - 'class' => $prefix.'GenericFixedWidthReader', - 'constructor' => [4], - ]; - - // Utf-8 - self::$map['utf-?8'] = [ - 'class' => $prefix.'Utf8Reader', - 'constructor' => [], - ]; - - //7-8 bit charsets - self::$map['(us-)?ascii'] = $singleByte; - self::$map['(iso|iec)-?8859-?[0-9]+'] = $singleByte; - self::$map['windows-?125[0-9]'] = $singleByte; - self::$map['cp-?[0-9]+'] = $singleByte; - self::$map['ansi'] = $singleByte; - self::$map['macintosh'] = $singleByte; - self::$map['koi-?7'] = $singleByte; - self::$map['koi-?8-?.+'] = $singleByte; - self::$map['mik'] = $singleByte; - self::$map['(cork|t1)'] = $singleByte; - self::$map['v?iscii'] = $singleByte; - - //16 bits - self::$map['(ucs-?2|utf-?16)'] = $doubleByte; - - //32 bits - self::$map['(ucs-?4|utf-?32)'] = $fourBytes; - - // Fallback - self::$map['.*'] = $singleByte; - } - - /** - * Returns a CharacterReader suitable for the charset applied. - * - * @param string $charset - * - * @return Swift_CharacterReader - */ - public function getReaderFor($charset) - { - $charset = strtolower(trim($charset ?? '')); - foreach (self::$map as $pattern => $spec) { - $re = '/^'.$pattern.'$/D'; - if (preg_match($re, $charset)) { - if (!\array_key_exists($pattern, self::$loaded)) { - $reflector = new ReflectionClass($spec['class']); - if ($reflector->getConstructor()) { - $reader = $reflector->newInstanceArgs($spec['constructor']); - } else { - $reader = $reflector->newInstance(); - } - self::$loaded[$pattern] = $reader; - } - - return self::$loaded[$pattern]; - } - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream.php deleted file mode 100644 index c9d8a078e..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream.php +++ /dev/null @@ -1,87 +0,0 @@ -setCharacterReaderFactory($factory); - $this->setCharacterSet($charset); - } - - /** - * Set the character set used in this CharacterStream. - * - * @param string $charset - */ - public function setCharacterSet($charset) - { - $this->charset = $charset; - $this->charReader = null; - } - - /** - * Set the CharacterReaderFactory for multi charset support. - */ - public function setCharacterReaderFactory(Swift_CharacterReaderFactory $factory) - { - $this->charReaderFactory = $factory; - } - - /** - * Overwrite this character stream using the byte sequence in the byte stream. - * - * @param Swift_OutputByteStream $os output stream to read from - */ - public function importByteStream(Swift_OutputByteStream $os) - { - if (!isset($this->charReader)) { - $this->charReader = $this->charReaderFactory - ->getReaderFor($this->charset); - } - - $startLength = $this->charReader->getInitialByteSize(); - while (false !== $bytes = $os->read($startLength)) { - $c = []; - for ($i = 0, $len = \strlen($bytes); $i < $len; ++$i) { - $c[] = self::$byteMap[$bytes[$i]]; - } - $size = \count($c); - $need = $this->charReader - ->validateByteSequence($c, $size); - if ($need > 0 && - false !== $bytes = $os->read($need)) { - for ($i = 0, $len = \strlen($bytes); $i < $len; ++$i) { - $c[] = self::$byteMap[$bytes[$i]]; - } - } - $this->array[] = $c; - ++$this->array_size; - } - } - - /** - * Import a string a bytes into this CharacterStream, overwriting any existing - * data in the stream. - * - * @param string $string - */ - public function importString($string) - { - $this->flushContents(); - $this->write($string); - } - - /** - * Read $length characters from the stream and move the internal pointer - * $length further into the stream. - * - * @param int $length - * - * @return string - */ - public function read($length) - { - if ($this->offset == $this->array_size) { - return false; - } - - // Don't use array slice - $arrays = []; - $end = $length + $this->offset; - for ($i = $this->offset; $i < $end; ++$i) { - if (!isset($this->array[$i])) { - break; - } - $arrays[] = $this->array[$i]; - } - $this->offset += $i - $this->offset; // Limit function calls - $chars = false; - foreach ($arrays as $array) { - $chars .= implode('', array_map('chr', $array)); - } - - return $chars; - } - - /** - * Read $length characters from the stream and return a 1-dimensional array - * containing there octet values. - * - * @param int $length - * - * @return int[] - */ - public function readBytes($length) - { - if ($this->offset == $this->array_size) { - return false; - } - $arrays = []; - $end = $length + $this->offset; - for ($i = $this->offset; $i < $end; ++$i) { - if (!isset($this->array[$i])) { - break; - } - $arrays[] = $this->array[$i]; - } - $this->offset += ($i - $this->offset); // Limit function calls - - return array_merge(...$arrays); - } - - /** - * Write $chars to the end of the stream. - * - * @param string $chars - */ - public function write($chars) - { - if (!isset($this->charReader)) { - $this->charReader = $this->charReaderFactory->getReaderFor( - $this->charset); - } - - $startLength = $this->charReader->getInitialByteSize(); - - $fp = fopen('php://memory', 'w+b'); - fwrite($fp, $chars); - unset($chars); - fseek($fp, 0, SEEK_SET); - - $buffer = [0]; - $buf_pos = 1; - $buf_len = 1; - $has_datas = true; - do { - $bytes = []; - // Buffer Filing - if ($buf_len - $buf_pos < $startLength) { - $buf = array_splice($buffer, $buf_pos); - $new = $this->reloadBuffer($fp, 100); - if ($new) { - $buffer = array_merge($buf, $new); - $buf_len = \count($buffer); - $buf_pos = 0; - } else { - $has_datas = false; - } - } - if ($buf_len - $buf_pos > 0) { - $size = 0; - for ($i = 0; $i < $startLength && isset($buffer[$buf_pos]); ++$i) { - ++$size; - $bytes[] = $buffer[$buf_pos++]; - } - $need = $this->charReader->validateByteSequence( - $bytes, $size); - if ($need > 0) { - if ($buf_len - $buf_pos < $need) { - $new = $this->reloadBuffer($fp, $need); - - if ($new) { - $buffer = array_merge($buffer, $new); - $buf_len = \count($buffer); - } - } - for ($i = 0; $i < $need && isset($buffer[$buf_pos]); ++$i) { - $bytes[] = $buffer[$buf_pos++]; - } - } - $this->array[] = $bytes; - ++$this->array_size; - } - } while ($has_datas); - - fclose($fp); - } - - /** - * Move the internal pointer to $charOffset in the stream. - * - * @param int $charOffset - */ - public function setPointer($charOffset) - { - if ($charOffset > $this->array_size) { - $charOffset = $this->array_size; - } elseif ($charOffset < 0) { - $charOffset = 0; - } - $this->offset = $charOffset; - } - - /** - * Empty the stream and reset the internal pointer. - */ - public function flushContents() - { - $this->offset = 0; - $this->array = []; - $this->array_size = 0; - } - - private function reloadBuffer($fp, $len) - { - if (!feof($fp) && false !== ($bytes = fread($fp, $len))) { - $buf = []; - for ($i = 0, $len = \strlen($bytes); $i < $len; ++$i) { - $buf[] = self::$byteMap[$bytes[$i]]; - } - - return $buf; - } - - return false; - } - - private static function initializeMaps() - { - if (!isset(self::$charMap)) { - self::$charMap = []; - for ($byte = 0; $byte < 256; ++$byte) { - self::$charMap[$byte] = \chr($byte); - } - self::$byteMap = array_flip(self::$charMap); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php deleted file mode 100644 index 7578dda9c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/CharacterStream/NgCharacterStream.php +++ /dev/null @@ -1,262 +0,0 @@ - - */ -class Swift_CharacterStream_NgCharacterStream implements Swift_CharacterStream -{ - /** - * The char reader (lazy-loaded) for the current charset. - * - * @var Swift_CharacterReader - */ - private $charReader; - - /** - * A factory for creating CharacterReader instances. - * - * @var Swift_CharacterReaderFactory - */ - private $charReaderFactory; - - /** - * The character set this stream is using. - * - * @var string - */ - private $charset; - - /** - * The data's stored as-is. - * - * @var string - */ - private $datas = ''; - - /** - * Number of bytes in the stream. - * - * @var int - */ - private $datasSize = 0; - - /** - * Map. - * - * @var mixed - */ - private $map; - - /** - * Map Type. - * - * @var int - */ - private $mapType = 0; - - /** - * Number of characters in the stream. - * - * @var int - */ - private $charCount = 0; - - /** - * Position in the stream. - * - * @var int - */ - private $currentPos = 0; - - /** - * Constructor. - * - * @param string $charset - */ - public function __construct(Swift_CharacterReaderFactory $factory, $charset) - { - $this->setCharacterReaderFactory($factory); - $this->setCharacterSet($charset); - } - - /* -- Changing parameters of the stream -- */ - - /** - * Set the character set used in this CharacterStream. - * - * @param string $charset - */ - public function setCharacterSet($charset) - { - $this->charset = $charset; - $this->charReader = null; - $this->mapType = 0; - } - - /** - * Set the CharacterReaderFactory for multi charset support. - */ - public function setCharacterReaderFactory(Swift_CharacterReaderFactory $factory) - { - $this->charReaderFactory = $factory; - } - - /** - * @see Swift_CharacterStream::flushContents() - */ - public function flushContents() - { - $this->datas = null; - $this->map = null; - $this->charCount = 0; - $this->currentPos = 0; - $this->datasSize = 0; - } - - /** - * @see Swift_CharacterStream::importByteStream() - */ - public function importByteStream(Swift_OutputByteStream $os) - { - $this->flushContents(); - $blocks = 512; - $os->setReadPointer(0); - while (false !== ($read = $os->read($blocks))) { - $this->write($read); - } - } - - /** - * @see Swift_CharacterStream::importString() - * - * @param string $string - */ - public function importString($string) - { - $this->flushContents(); - $this->write($string); - } - - /** - * @see Swift_CharacterStream::read() - * - * @param int $length - * - * @return string - */ - public function read($length) - { - if ($this->currentPos >= $this->charCount) { - return false; - } - $ret = false; - $length = ($this->currentPos + $length > $this->charCount) ? $this->charCount - $this->currentPos : $length; - switch ($this->mapType) { - case Swift_CharacterReader::MAP_TYPE_FIXED_LEN: - $len = $length * $this->map; - $ret = substr($this->datas, - $this->currentPos * $this->map, - $len); - $this->currentPos += $length; - break; - - case Swift_CharacterReader::MAP_TYPE_INVALID: - $ret = ''; - for (; $this->currentPos < $length; ++$this->currentPos) { - if (isset($this->map[$this->currentPos])) { - $ret .= '?'; - } else { - $ret .= $this->datas[$this->currentPos]; - } - } - break; - - case Swift_CharacterReader::MAP_TYPE_POSITIONS: - $end = $this->currentPos + $length; - $end = $end > $this->charCount ? $this->charCount : $end; - $ret = ''; - $start = 0; - if ($this->currentPos > 0) { - $start = $this->map['p'][$this->currentPos - 1]; - } - $to = $start; - for (; $this->currentPos < $end; ++$this->currentPos) { - if (isset($this->map['i'][$this->currentPos])) { - $ret .= substr($this->datas, $start, $to - $start).'?'; - $start = $this->map['p'][$this->currentPos]; - } else { - $to = $this->map['p'][$this->currentPos]; - } - } - $ret .= substr($this->datas, $start, $to - $start); - break; - } - - return $ret; - } - - /** - * @see Swift_CharacterStream::readBytes() - * - * @param int $length - * - * @return int[] - */ - public function readBytes($length) - { - $read = $this->read($length); - if (false !== $read) { - $ret = array_map('ord', str_split($read, 1)); - - return $ret; - } - - return false; - } - - /** - * @see Swift_CharacterStream::setPointer() - * - * @param int $charOffset - */ - public function setPointer($charOffset) - { - if ($this->charCount < $charOffset) { - $charOffset = $this->charCount; - } - $this->currentPos = $charOffset; - } - - /** - * @see Swift_CharacterStream::write() - * - * @param string $chars - */ - public function write($chars) - { - if (!isset($this->charReader)) { - $this->charReader = $this->charReaderFactory->getReaderFor( - $this->charset); - $this->map = []; - $this->mapType = $this->charReader->getMapType(); - } - $ignored = ''; - $this->datas .= $chars; - $this->charCount += $this->charReader->getCharPositions(substr($this->datas, $this->datasSize), $this->datasSize, $this->map, $ignored); - if (false !== $ignored) { - $this->datasSize = \strlen($this->datas) - \strlen($ignored); - } else { - $this->datasSize = \strlen($this->datas); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ConfigurableSpool.php b/swiftmailer/swiftmailer/lib/classes/Swift/ConfigurableSpool.php deleted file mode 100644 index a711bac47..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ConfigurableSpool.php +++ /dev/null @@ -1,63 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Base class for Spools (implements time and message limits). - * - * @author Fabien Potencier - */ -abstract class Swift_ConfigurableSpool implements Swift_Spool -{ - /** The maximum number of messages to send per flush */ - private $message_limit; - - /** The time limit per flush */ - private $time_limit; - - /** - * Sets the maximum number of messages to send per flush. - * - * @param int $limit - */ - public function setMessageLimit($limit) - { - $this->message_limit = (int) $limit; - } - - /** - * Gets the maximum number of messages to send per flush. - * - * @return int The limit - */ - public function getMessageLimit() - { - return $this->message_limit; - } - - /** - * Sets the time limit (in seconds) per flush. - * - * @param int $limit The limit - */ - public function setTimeLimit($limit) - { - $this->time_limit = (int) $limit; - } - - /** - * Gets the time limit (in seconds) per flush. - * - * @return int The limit - */ - public function getTimeLimit() - { - return $this->time_limit; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/DependencyContainer.php b/swiftmailer/swiftmailer/lib/classes/Swift/DependencyContainer.php deleted file mode 100644 index 3cc885ec0..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/DependencyContainer.php +++ /dev/null @@ -1,387 +0,0 @@ -store); - } - - /** - * Test if an item is registered in this container with the given name. - * - * @see register() - * - * @param string $itemName - * - * @return bool - */ - public function has($itemName) - { - return \array_key_exists($itemName, $this->store) - && isset($this->store[$itemName]['lookupType']); - } - - /** - * Lookup the item with the given $itemName. - * - * @see register() - * - * @param string $itemName - * - * @return mixed - * - * @throws Swift_DependencyException If the dependency is not found - */ - public function lookup($itemName) - { - if (!$this->has($itemName)) { - throw new Swift_DependencyException('Cannot lookup dependency "'.$itemName.'" since it is not registered.'); - } - - switch ($this->store[$itemName]['lookupType']) { - case self::TYPE_ALIAS: - return $this->createAlias($itemName); - case self::TYPE_VALUE: - return $this->getValue($itemName); - case self::TYPE_INSTANCE: - return $this->createNewInstance($itemName); - case self::TYPE_SHARED: - return $this->createSharedInstance($itemName); - case self::TYPE_ARRAY: - return $this->createDependenciesFor($itemName); - } - } - - /** - * Create an array of arguments passed to the constructor of $itemName. - * - * @param string $itemName - * - * @return array - */ - public function createDependenciesFor($itemName) - { - $args = []; - if (isset($this->store[$itemName]['args'])) { - $args = $this->resolveArgs($this->store[$itemName]['args']); - } - - return $args; - } - - /** - * Register a new dependency with $itemName. - * - * This method returns the current DependencyContainer instance because it - * requires the use of the fluid interface to set the specific details for the - * dependency. - * - * @see asNewInstanceOf(), asSharedInstanceOf(), asValue() - * - * @param string $itemName - * - * @return $this - */ - public function register($itemName) - { - $this->store[$itemName] = []; - $this->endPoint = &$this->store[$itemName]; - - return $this; - } - - /** - * Specify the previously registered item as a literal value. - * - * {@link register()} must be called before this will work. - * - * @param mixed $value - * - * @return $this - */ - public function asValue($value) - { - $endPoint = &$this->getEndPoint(); - $endPoint['lookupType'] = self::TYPE_VALUE; - $endPoint['value'] = $value; - - return $this; - } - - /** - * Specify the previously registered item as an alias of another item. - * - * @param string $lookup - * - * @return $this - */ - public function asAliasOf($lookup) - { - $endPoint = &$this->getEndPoint(); - $endPoint['lookupType'] = self::TYPE_ALIAS; - $endPoint['ref'] = $lookup; - - return $this; - } - - /** - * Specify the previously registered item as a new instance of $className. - * - * {@link register()} must be called before this will work. - * Any arguments can be set with {@link withDependencies()}, - * {@link addConstructorValue()} or {@link addConstructorLookup()}. - * - * @see withDependencies(), addConstructorValue(), addConstructorLookup() - * - * @param string $className - * - * @return $this - */ - public function asNewInstanceOf($className) - { - $endPoint = &$this->getEndPoint(); - $endPoint['lookupType'] = self::TYPE_INSTANCE; - $endPoint['className'] = $className; - - return $this; - } - - /** - * Specify the previously registered item as a shared instance of $className. - * - * {@link register()} must be called before this will work. - * - * @param string $className - * - * @return $this - */ - public function asSharedInstanceOf($className) - { - $endPoint = &$this->getEndPoint(); - $endPoint['lookupType'] = self::TYPE_SHARED; - $endPoint['className'] = $className; - - return $this; - } - - /** - * Specify the previously registered item as array of dependencies. - * - * {@link register()} must be called before this will work. - * - * @return $this - */ - public function asArray() - { - $endPoint = &$this->getEndPoint(); - $endPoint['lookupType'] = self::TYPE_ARRAY; - - return $this; - } - - /** - * Specify a list of injected dependencies for the previously registered item. - * - * This method takes an array of lookup names. - * - * @see addConstructorValue(), addConstructorLookup() - * - * @return $this - */ - public function withDependencies(array $lookups) - { - $endPoint = &$this->getEndPoint(); - $endPoint['args'] = []; - foreach ($lookups as $lookup) { - $this->addConstructorLookup($lookup); - } - - return $this; - } - - /** - * Specify a literal (non looked up) value for the constructor of the - * previously registered item. - * - * @see withDependencies(), addConstructorLookup() - * - * @param mixed $value - * - * @return $this - */ - public function addConstructorValue($value) - { - $endPoint = &$this->getEndPoint(); - if (!isset($endPoint['args'])) { - $endPoint['args'] = []; - } - $endPoint['args'][] = ['type' => 'value', 'item' => $value]; - - return $this; - } - - /** - * Specify a dependency lookup for the constructor of the previously - * registered item. - * - * @see withDependencies(), addConstructorValue() - * - * @param string $lookup - * - * @return $this - */ - public function addConstructorLookup($lookup) - { - $endPoint = &$this->getEndPoint(); - if (!isset($this->endPoint['args'])) { - $endPoint['args'] = []; - } - $endPoint['args'][] = ['type' => 'lookup', 'item' => $lookup]; - - return $this; - } - - /** Get the literal value with $itemName */ - private function getValue($itemName) - { - return $this->store[$itemName]['value']; - } - - /** Resolve an alias to another item */ - private function createAlias($itemName) - { - return $this->lookup($this->store[$itemName]['ref']); - } - - /** Create a fresh instance of $itemName */ - private function createNewInstance($itemName) - { - $reflector = new ReflectionClass($this->store[$itemName]['className']); - if ($reflector->getConstructor()) { - return $reflector->newInstanceArgs( - $this->createDependenciesFor($itemName) - ); - } - - return $reflector->newInstance(); - } - - /** Create and register a shared instance of $itemName */ - private function createSharedInstance($itemName) - { - if (!isset($this->store[$itemName]['instance'])) { - $this->store[$itemName]['instance'] = $this->createNewInstance($itemName); - } - - return $this->store[$itemName]['instance']; - } - - /** Get the current endpoint in the store */ - private function &getEndPoint() - { - if (!isset($this->endPoint)) { - throw new BadMethodCallException('Component must first be registered by calling register()'); - } - - return $this->endPoint; - } - - /** Get an argument list with dependencies resolved */ - private function resolveArgs(array $args) - { - $resolved = []; - foreach ($args as $argDefinition) { - switch ($argDefinition['type']) { - case 'lookup': - $resolved[] = $this->lookupRecursive($argDefinition['item']); - break; - case 'value': - $resolved[] = $argDefinition['item']; - break; - } - } - - return $resolved; - } - - /** Resolve a single dependency with an collections */ - private function lookupRecursive($item) - { - if (\is_array($item)) { - $collection = []; - foreach ($item as $k => $v) { - $collection[$k] = $this->lookupRecursive($v); - } - - return $collection; - } - - return $this->lookup($item); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/DependencyException.php b/swiftmailer/swiftmailer/lib/classes/Swift/DependencyException.php deleted file mode 100644 index 799d38d83..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/DependencyException.php +++ /dev/null @@ -1,27 +0,0 @@ -createDependenciesFor('mime.embeddedfile') - ); - - $this->setBody($data); - $this->setFilename($filename); - if ($contentType) { - $this->setContentType($contentType); - } - } - - /** - * Create a new EmbeddedFile from a filesystem path. - * - * @param string $path - * - * @return Swift_Mime_EmbeddedFile - */ - public static function fromPath($path) - { - return (new self())->setFile(new Swift_ByteStream_FileByteStream($path)); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Encoder.php deleted file mode 100644 index 2073abca1..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder.php +++ /dev/null @@ -1,28 +0,0 @@ -= $maxLineLength || 76 < $maxLineLength) { - $maxLineLength = 76; - } - - $encodedString = base64_encode($string ?? ''); - $firstLine = ''; - - if (0 != $firstLineOffset) { - $firstLine = substr( - $encodedString, 0, $maxLineLength - $firstLineOffset - )."\r\n"; - $encodedString = substr( - $encodedString, $maxLineLength - $firstLineOffset - ); - } - - return $firstLine.trim(chunk_split($encodedString, $maxLineLength, "\r\n")); - } - - /** - * Does nothing. - */ - public function charsetChanged($charset) - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php deleted file mode 100644 index f078d6d7c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/QpEncoder.php +++ /dev/null @@ -1,300 +0,0 @@ - '=00', 1 => '=01', 2 => '=02', 3 => '=03', 4 => '=04', - 5 => '=05', 6 => '=06', 7 => '=07', 8 => '=08', 9 => '=09', - 10 => '=0A', 11 => '=0B', 12 => '=0C', 13 => '=0D', 14 => '=0E', - 15 => '=0F', 16 => '=10', 17 => '=11', 18 => '=12', 19 => '=13', - 20 => '=14', 21 => '=15', 22 => '=16', 23 => '=17', 24 => '=18', - 25 => '=19', 26 => '=1A', 27 => '=1B', 28 => '=1C', 29 => '=1D', - 30 => '=1E', 31 => '=1F', 32 => '=20', 33 => '=21', 34 => '=22', - 35 => '=23', 36 => '=24', 37 => '=25', 38 => '=26', 39 => '=27', - 40 => '=28', 41 => '=29', 42 => '=2A', 43 => '=2B', 44 => '=2C', - 45 => '=2D', 46 => '=2E', 47 => '=2F', 48 => '=30', 49 => '=31', - 50 => '=32', 51 => '=33', 52 => '=34', 53 => '=35', 54 => '=36', - 55 => '=37', 56 => '=38', 57 => '=39', 58 => '=3A', 59 => '=3B', - 60 => '=3C', 61 => '=3D', 62 => '=3E', 63 => '=3F', 64 => '=40', - 65 => '=41', 66 => '=42', 67 => '=43', 68 => '=44', 69 => '=45', - 70 => '=46', 71 => '=47', 72 => '=48', 73 => '=49', 74 => '=4A', - 75 => '=4B', 76 => '=4C', 77 => '=4D', 78 => '=4E', 79 => '=4F', - 80 => '=50', 81 => '=51', 82 => '=52', 83 => '=53', 84 => '=54', - 85 => '=55', 86 => '=56', 87 => '=57', 88 => '=58', 89 => '=59', - 90 => '=5A', 91 => '=5B', 92 => '=5C', 93 => '=5D', 94 => '=5E', - 95 => '=5F', 96 => '=60', 97 => '=61', 98 => '=62', 99 => '=63', - 100 => '=64', 101 => '=65', 102 => '=66', 103 => '=67', 104 => '=68', - 105 => '=69', 106 => '=6A', 107 => '=6B', 108 => '=6C', 109 => '=6D', - 110 => '=6E', 111 => '=6F', 112 => '=70', 113 => '=71', 114 => '=72', - 115 => '=73', 116 => '=74', 117 => '=75', 118 => '=76', 119 => '=77', - 120 => '=78', 121 => '=79', 122 => '=7A', 123 => '=7B', 124 => '=7C', - 125 => '=7D', 126 => '=7E', 127 => '=7F', 128 => '=80', 129 => '=81', - 130 => '=82', 131 => '=83', 132 => '=84', 133 => '=85', 134 => '=86', - 135 => '=87', 136 => '=88', 137 => '=89', 138 => '=8A', 139 => '=8B', - 140 => '=8C', 141 => '=8D', 142 => '=8E', 143 => '=8F', 144 => '=90', - 145 => '=91', 146 => '=92', 147 => '=93', 148 => '=94', 149 => '=95', - 150 => '=96', 151 => '=97', 152 => '=98', 153 => '=99', 154 => '=9A', - 155 => '=9B', 156 => '=9C', 157 => '=9D', 158 => '=9E', 159 => '=9F', - 160 => '=A0', 161 => '=A1', 162 => '=A2', 163 => '=A3', 164 => '=A4', - 165 => '=A5', 166 => '=A6', 167 => '=A7', 168 => '=A8', 169 => '=A9', - 170 => '=AA', 171 => '=AB', 172 => '=AC', 173 => '=AD', 174 => '=AE', - 175 => '=AF', 176 => '=B0', 177 => '=B1', 178 => '=B2', 179 => '=B3', - 180 => '=B4', 181 => '=B5', 182 => '=B6', 183 => '=B7', 184 => '=B8', - 185 => '=B9', 186 => '=BA', 187 => '=BB', 188 => '=BC', 189 => '=BD', - 190 => '=BE', 191 => '=BF', 192 => '=C0', 193 => '=C1', 194 => '=C2', - 195 => '=C3', 196 => '=C4', 197 => '=C5', 198 => '=C6', 199 => '=C7', - 200 => '=C8', 201 => '=C9', 202 => '=CA', 203 => '=CB', 204 => '=CC', - 205 => '=CD', 206 => '=CE', 207 => '=CF', 208 => '=D0', 209 => '=D1', - 210 => '=D2', 211 => '=D3', 212 => '=D4', 213 => '=D5', 214 => '=D6', - 215 => '=D7', 216 => '=D8', 217 => '=D9', 218 => '=DA', 219 => '=DB', - 220 => '=DC', 221 => '=DD', 222 => '=DE', 223 => '=DF', 224 => '=E0', - 225 => '=E1', 226 => '=E2', 227 => '=E3', 228 => '=E4', 229 => '=E5', - 230 => '=E6', 231 => '=E7', 232 => '=E8', 233 => '=E9', 234 => '=EA', - 235 => '=EB', 236 => '=EC', 237 => '=ED', 238 => '=EE', 239 => '=EF', - 240 => '=F0', 241 => '=F1', 242 => '=F2', 243 => '=F3', 244 => '=F4', - 245 => '=F5', 246 => '=F6', 247 => '=F7', 248 => '=F8', 249 => '=F9', - 250 => '=FA', 251 => '=FB', 252 => '=FC', 253 => '=FD', 254 => '=FE', - 255 => '=FF', - ]; - - protected static $safeMapShare = []; - - /** - * A map of non-encoded ascii characters. - * - * @var string[] - */ - protected $safeMap = []; - - /** - * Creates a new QpEncoder for the given CharacterStream. - * - * @param Swift_CharacterStream $charStream to use for reading characters - * @param Swift_StreamFilter $filter if input should be canonicalized - */ - public function __construct(Swift_CharacterStream $charStream, Swift_StreamFilter $filter = null) - { - $this->charStream = $charStream; - if (!isset(self::$safeMapShare[$this->getSafeMapShareId()])) { - $this->initSafeMap(); - self::$safeMapShare[$this->getSafeMapShareId()] = $this->safeMap; - } else { - $this->safeMap = self::$safeMapShare[$this->getSafeMapShareId()]; - } - $this->filter = $filter; - } - - public function __sleep() - { - return ['charStream', 'filter']; - } - - public function __wakeup() - { - if (!isset(self::$safeMapShare[$this->getSafeMapShareId()])) { - $this->initSafeMap(); - self::$safeMapShare[$this->getSafeMapShareId()] = $this->safeMap; - } else { - $this->safeMap = self::$safeMapShare[$this->getSafeMapShareId()]; - } - } - - protected function getSafeMapShareId() - { - return static::class; - } - - protected function initSafeMap() - { - foreach (array_merge( - [0x09, 0x20], range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) { - $this->safeMap[$byte] = \chr($byte); - } - } - - /** - * Takes an unencoded string and produces a QP encoded string from it. - * - * QP encoded strings have a maximum line length of 76 characters. - * If the first line needs to be shorter, indicate the difference with - * $firstLineOffset. - * - * @param string $string to encode - * @param int $firstLineOffset optional - * @param int $maxLineLength optional 0 indicates the default of 76 chars - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - if ($maxLineLength > 76 || $maxLineLength <= 0) { - $maxLineLength = 76; - } - - $thisLineLength = $maxLineLength - $firstLineOffset; - - $lines = []; - $lNo = 0; - $lines[$lNo] = ''; - $currentLine = &$lines[$lNo++]; - $size = $lineLen = 0; - - $this->charStream->flushContents(); - $this->charStream->importString($string); - - // Fetching more than 4 chars at one is slower, as is fetching fewer bytes - // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6 - // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes - while (false !== $bytes = $this->nextSequence()) { - // If we're filtering the input - if (isset($this->filter)) { - // If we can't filter because we need more bytes - while ($this->filter->shouldBuffer($bytes)) { - // Then collect bytes into the buffer - if (false === $moreBytes = $this->nextSequence(1)) { - break; - } - - foreach ($moreBytes as $b) { - $bytes[] = $b; - } - } - // And filter them - $bytes = $this->filter->filter($bytes); - } - - $enc = $this->encodeByteSequence($bytes, $size); - - $i = strpos($enc, '=0D=0A'); - $newLineLength = $lineLen + (false === $i ? $size : $i); - - if ($currentLine && $newLineLength >= $thisLineLength) { - $lines[$lNo] = ''; - $currentLine = &$lines[$lNo++]; - $thisLineLength = $maxLineLength; - $lineLen = 0; - } - - $currentLine .= $enc; - - if (false === $i) { - $lineLen += $size; - } else { - // 6 is the length of '=0D=0A'. - $lineLen = $size - strrpos($enc, '=0D=0A') - 6; - } - } - - return $this->standardize(implode("=\r\n", $lines)); - } - - /** - * Updates the charset used. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->charStream->setCharacterSet($charset); - } - - /** - * Encode the given byte array into a verbatim QP form. - * - * @param int[] $bytes - * @param int $size - * - * @return string - */ - protected function encodeByteSequence(array $bytes, &$size) - { - $ret = ''; - $size = 0; - foreach ($bytes as $b) { - if (isset($this->safeMap[$b])) { - $ret .= $this->safeMap[$b]; - ++$size; - } else { - $ret .= self::$qpMap[$b]; - $size += 3; - } - } - - return $ret; - } - - /** - * Get the next sequence of bytes to read from the char stream. - * - * @param int $size number of bytes to read - * - * @return int[] - */ - protected function nextSequence($size = 4) - { - return $this->charStream->readBytes($size); - } - - /** - * Make sure CRLF is correct and HT/SPACE are in valid places. - * - * @param string $string - * - * @return string - */ - protected function standardize($string) - { - $string = str_replace(["\t=0D=0A", ' =0D=0A', '=0D=0A'], - ["=09\r\n", "=20\r\n", "\r\n"], $string - ); - switch ($end = \ord(substr($string, -1))) { - case 0x09: - case 0x20: - $string = substr_replace($string, self::$qpMap[$end], -1); - } - - return $string; - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->charStream = clone $this->charStream; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php deleted file mode 100644 index 7eac36813..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Encoder/Rfc2231Encoder.php +++ /dev/null @@ -1,90 +0,0 @@ -charStream = $charStream; - } - - /** - * Takes an unencoded string and produces a string encoded according to - * RFC 2231 from it. - * - * @param string $string - * @param int $firstLineOffset - * @param int $maxLineLength optional, 0 indicates the default of 75 bytes - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - $lines = []; - $lineCount = 0; - $lines[] = ''; - $currentLine = &$lines[$lineCount++]; - - if (0 >= $maxLineLength) { - $maxLineLength = 75; - } - - $this->charStream->flushContents(); - $this->charStream->importString($string); - - $thisLineLength = $maxLineLength - $firstLineOffset; - - while (false !== $char = $this->charStream->read(4)) { - $encodedChar = rawurlencode($char); - if (0 != \strlen($currentLine) - && \strlen($currentLine.$encodedChar) > $thisLineLength) { - $lines[] = ''; - $currentLine = &$lines[$lineCount++]; - $thisLineLength = $maxLineLength; - } - $currentLine .= $encodedChar; - } - - return implode("\r\n", $lines); - } - - /** - * Updates the charset used. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->charStream->setCharacterSet($charset); - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->charStream = clone $this->charStream; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandEvent.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandEvent.php deleted file mode 100644 index 18994c184..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandEvent.php +++ /dev/null @@ -1,64 +0,0 @@ -command = $command; - $this->successCodes = $successCodes; - } - - /** - * Get the command which was sent to the server. - * - * @return string - */ - public function getCommand() - { - return $this->command; - } - - /** - * Get the numeric response codes which indicate success for this command. - * - * @return int[] - */ - public function getSuccessCodes() - { - return $this->successCodes; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandListener.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandListener.php deleted file mode 100644 index b158eab46..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/CommandListener.php +++ /dev/null @@ -1,22 +0,0 @@ -source = $source; - } - - /** - * Get the source object of this event. - * - * @return object - */ - public function getSource() - { - return $this->source; - } - - /** - * Prevent this Event from bubbling any further up the stack. - */ - public function cancelBubble($cancel = true) - { - $this->bubbleCancelled = $cancel; - } - - /** - * Returns true if this Event will not bubble any further up the stack. - * - * @return bool - */ - public function bubbleCancelled() - { - return $this->bubbleCancelled; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php deleted file mode 100644 index ff7c37116..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseEvent.php +++ /dev/null @@ -1,64 +0,0 @@ -response = $response; - $this->valid = $valid; - } - - /** - * Get the response which was received from the server. - * - * @return string - */ - public function getResponse() - { - return $this->response; - } - - /** - * Get the success status of this Event. - * - * @return bool - */ - public function isValid() - { - return $this->valid; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseListener.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseListener.php deleted file mode 100644 index 85115a338..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/ResponseListener.php +++ /dev/null @@ -1,22 +0,0 @@ -message = $message; - $this->result = self::RESULT_PENDING; - } - - /** - * Get the Transport used to send the Message. - * - * @return Swift_Transport - */ - public function getTransport() - { - return $this->getSource(); - } - - /** - * Get the Message being sent. - * - * @return Swift_Mime_SimpleMessage - */ - public function getMessage() - { - return $this->message; - } - - /** - * Set the array of addresses that failed in sending. - * - * @param array $recipients - */ - public function setFailedRecipients($recipients) - { - $this->failedRecipients = $recipients; - } - - /** - * Get an recipient addresses which were not accepted for delivery. - * - * @return string[] - */ - public function getFailedRecipients() - { - return $this->failedRecipients; - } - - /** - * Set the result of sending. - * - * @param int $result - */ - public function setResult($result) - { - $this->result = $result; - } - - /** - * Get the result of this Event. - * - * The return value is a bitmask from - * {@see RESULT_PENDING, RESULT_SUCCESS, RESULT_TENTATIVE, RESULT_FAILED} - * - * @return int - */ - public function getResult() - { - return $this->result; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/SendListener.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/SendListener.php deleted file mode 100644 index f7bf55ef5..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/SendListener.php +++ /dev/null @@ -1,27 +0,0 @@ -eventMap = [ - 'Swift_Events_CommandEvent' => 'Swift_Events_CommandListener', - 'Swift_Events_ResponseEvent' => 'Swift_Events_ResponseListener', - 'Swift_Events_SendEvent' => 'Swift_Events_SendListener', - 'Swift_Events_TransportChangeEvent' => 'Swift_Events_TransportChangeListener', - 'Swift_Events_TransportExceptionEvent' => 'Swift_Events_TransportExceptionListener', - ]; - } - - /** - * Create a new SendEvent for $source and $message. - * - * @return Swift_Events_SendEvent - */ - public function createSendEvent(Swift_Transport $source, Swift_Mime_SimpleMessage $message) - { - return new Swift_Events_SendEvent($source, $message); - } - - /** - * Create a new CommandEvent for $source and $command. - * - * @param string $command That will be executed - * @param array $successCodes That are needed - * - * @return Swift_Events_CommandEvent - */ - public function createCommandEvent(Swift_Transport $source, $command, $successCodes = []) - { - return new Swift_Events_CommandEvent($source, $command, $successCodes); - } - - /** - * Create a new ResponseEvent for $source and $response. - * - * @param string $response - * @param bool $valid If the response is valid - * - * @return Swift_Events_ResponseEvent - */ - public function createResponseEvent(Swift_Transport $source, $response, $valid) - { - return new Swift_Events_ResponseEvent($source, $response, $valid); - } - - /** - * Create a new TransportChangeEvent for $source. - * - * @return Swift_Events_TransportChangeEvent - */ - public function createTransportChangeEvent(Swift_Transport $source) - { - return new Swift_Events_TransportChangeEvent($source); - } - - /** - * Create a new TransportExceptionEvent for $source. - * - * @return Swift_Events_TransportExceptionEvent - */ - public function createTransportExceptionEvent(Swift_Transport $source, Swift_TransportException $ex) - { - return new Swift_Events_TransportExceptionEvent($source, $ex); - } - - /** - * Bind an event listener to this dispatcher. - */ - public function bindEventListener(Swift_Events_EventListener $listener) - { - foreach ($this->listeners as $l) { - // Already loaded - if ($l === $listener) { - return; - } - } - $this->listeners[] = $listener; - } - - /** - * Dispatch the given Event to all suitable listeners. - * - * @param string $target method - */ - public function dispatchEvent(Swift_Events_EventObject $evt, $target) - { - $bubbleQueue = $this->prepareBubbleQueue($evt); - $this->bubble($bubbleQueue, $evt, $target); - } - - /** Queue listeners on a stack ready for $evt to be bubbled up it */ - private function prepareBubbleQueue(Swift_Events_EventObject $evt) - { - $bubbleQueue = []; - $evtClass = \get_class($evt); - foreach ($this->listeners as $listener) { - if (\array_key_exists($evtClass, $this->eventMap) - && ($listener instanceof $this->eventMap[$evtClass])) { - $bubbleQueue[] = $listener; - } - } - - return $bubbleQueue; - } - - /** Bubble $evt up the stack calling $target() on each listener */ - private function bubble(array &$bubbleQueue, Swift_Events_EventObject $evt, $target) - { - if (!$evt->bubbleCancelled() && $listener = array_shift($bubbleQueue)) { - $listener->$target($evt); - $this->bubble($bubbleQueue, $evt, $target); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php deleted file mode 100644 index a8972fda9..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeEvent.php +++ /dev/null @@ -1,27 +0,0 @@ -getSource(); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php deleted file mode 100644 index 4a7492bc5..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportChangeListener.php +++ /dev/null @@ -1,37 +0,0 @@ -exception = $ex; - } - - /** - * Get the TransportException thrown. - * - * @return Swift_TransportException - */ - public function getException() - { - return $this->exception; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php b/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php deleted file mode 100644 index ad80eb01d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Events/TransportExceptionListener.php +++ /dev/null @@ -1,22 +0,0 @@ -createDependenciesFor('transport.failover') - ); - - $this->setTransports($transports); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/FileSpool.php b/swiftmailer/swiftmailer/lib/classes/Swift/FileSpool.php deleted file mode 100644 index 7af8471c9..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/FileSpool.php +++ /dev/null @@ -1,208 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Stores Messages on the filesystem. - * - * @author Fabien Potencier - * @author Xavier De Cock - */ -class Swift_FileSpool extends Swift_ConfigurableSpool -{ - /** The spool directory */ - private $path; - - /** - * File WriteRetry Limit. - * - * @var int - */ - private $retryLimit = 10; - - /** - * Create a new FileSpool. - * - * @param string $path - * - * @throws Swift_IoException - */ - public function __construct($path) - { - $this->path = $path; - - if (!file_exists($this->path)) { - if (!mkdir($this->path, 0777, true)) { - throw new Swift_IoException(sprintf('Unable to create path "%s".', $this->path)); - } - } - } - - /** - * Tests if this Spool mechanism has started. - * - * @return bool - */ - public function isStarted() - { - return true; - } - - /** - * Starts this Spool mechanism. - */ - public function start() - { - } - - /** - * Stops this Spool mechanism. - */ - public function stop() - { - } - - /** - * Allow to manage the enqueuing retry limit. - * - * Default, is ten and allows over 64^20 different fileNames - * - * @param int $limit - */ - public function setRetryLimit($limit) - { - $this->retryLimit = $limit; - } - - /** - * Queues a message. - * - * @param Swift_Mime_SimpleMessage $message The message to store - * - * @throws Swift_IoException - * - * @return bool - */ - public function queueMessage(Swift_Mime_SimpleMessage $message) - { - $ser = serialize($message); - $fileName = $this->path.'/'.$this->getRandomString(10); - for ($i = 0; $i < $this->retryLimit; ++$i) { - /* We try an exclusive creation of the file. This is an atomic operation, it avoid locking mechanism */ - $fp = @fopen($fileName.'.message', 'xb'); - if (false !== $fp) { - if (false === fwrite($fp, $ser)) { - return false; - } - - return fclose($fp); - } else { - /* The file already exists, we try a longer fileName */ - $fileName .= $this->getRandomString(1); - } - } - - throw new Swift_IoException(sprintf('Unable to create a file for enqueuing Message in "%s".', $this->path)); - } - - /** - * Execute a recovery if for any reason a process is sending for too long. - * - * @param int $timeout in second Defaults is for very slow smtp responses - */ - public function recover($timeout = 900) - { - foreach (new DirectoryIterator($this->path) as $file) { - $file = $file->getRealPath(); - - if ('.message.sending' == substr($file, -16)) { - $lockedtime = filectime($file); - if ((time() - $lockedtime) > $timeout) { - rename($file, substr($file, 0, -8)); - } - } - } - } - - /** - * Sends messages using the given transport instance. - * - * @param Swift_Transport $transport A transport instance - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int The number of sent e-mail's - */ - public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) - { - $directoryIterator = new DirectoryIterator($this->path); - - /* Start the transport only if there are queued files to send */ - if (!$transport->isStarted()) { - foreach ($directoryIterator as $file) { - if ('.message' == substr($file->getRealPath(), -8)) { - $transport->start(); - break; - } - } - } - - $failedRecipients = (array) $failedRecipients; - $count = 0; - $time = time(); - foreach ($directoryIterator as $file) { - $file = $file->getRealPath(); - - if ('.message' != substr($file, -8)) { - continue; - } - - /* We try a rename, it's an atomic operation, and avoid locking the file */ - if (rename($file, $file.'.sending')) { - $message = unserialize(file_get_contents($file.'.sending')); - - $count += $transport->send($message, $failedRecipients); - - unlink($file.'.sending'); - } else { - /* This message has just been catched by another process */ - continue; - } - - if ($this->getMessageLimit() && $count >= $this->getMessageLimit()) { - break; - } - - if ($this->getTimeLimit() && (time() - $time) >= $this->getTimeLimit()) { - break; - } - } - - return $count; - } - - /** - * Returns a random string needed to generate a fileName for the queue. - * - * @param int $count - * - * @return string - */ - protected function getRandomString($count) - { - // This string MUST stay FS safe, avoid special chars - $base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'; - $ret = ''; - $strlen = \strlen($base); - for ($i = 0; $i < $count; ++$i) { - $ret .= $base[random_int(0, $strlen - 1)]; - } - - return $ret; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/FileStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/FileStream.php deleted file mode 100644 index 0b24db1ce..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/FileStream.php +++ /dev/null @@ -1,24 +0,0 @@ -setFile(new Swift_ByteStream_FileByteStream($path)); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/InputByteStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/InputByteStream.php deleted file mode 100644 index 379a5a178..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/InputByteStream.php +++ /dev/null @@ -1,75 +0,0 @@ -stream = $stream; - } - - /** - * Set a string into the cache under $itemKey for the namespace $nsKey. - * - * @see MODE_WRITE, MODE_APPEND - * - * @param string $nsKey - * @param string $itemKey - * @param string $string - * @param int $mode - */ - public function setString($nsKey, $itemKey, $string, $mode) - { - $this->prepareCache($nsKey); - switch ($mode) { - case self::MODE_WRITE: - $this->contents[$nsKey][$itemKey] = $string; - break; - case self::MODE_APPEND: - if (!$this->hasKey($nsKey, $itemKey)) { - $this->contents[$nsKey][$itemKey] = ''; - } - $this->contents[$nsKey][$itemKey] .= $string; - break; - default: - throw new Swift_SwiftException('Invalid mode ['.$mode.'] used to set nsKey='.$nsKey.', itemKey='.$itemKey); - } - } - - /** - * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. - * - * @see MODE_WRITE, MODE_APPEND - * - * @param string $nsKey - * @param string $itemKey - * @param int $mode - */ - public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, $mode) - { - $this->prepareCache($nsKey); - switch ($mode) { - case self::MODE_WRITE: - $this->clearKey($nsKey, $itemKey); - // no break - case self::MODE_APPEND: - if (!$this->hasKey($nsKey, $itemKey)) { - $this->contents[$nsKey][$itemKey] = ''; - } - while (false !== $bytes = $os->read(8192)) { - $this->contents[$nsKey][$itemKey] .= $bytes; - } - break; - default: - throw new Swift_SwiftException('Invalid mode ['.$mode.'] used to set nsKey='.$nsKey.', itemKey='.$itemKey); - } - } - - /** - * Provides a ByteStream which when written to, writes data to $itemKey. - * - * NOTE: The stream will always write in append mode. - * - * @param string $nsKey - * @param string $itemKey - * - * @return Swift_InputByteStream - */ - public function getInputByteStream($nsKey, $itemKey, Swift_InputByteStream $writeThrough = null) - { - $is = clone $this->stream; - $is->setKeyCache($this); - $is->setNsKey($nsKey); - $is->setItemKey($itemKey); - if (isset($writeThrough)) { - $is->setWriteThroughStream($writeThrough); - } - - return $is; - } - - /** - * Get data back out of the cache as a string. - * - * @param string $nsKey - * @param string $itemKey - * - * @return string - */ - public function getString($nsKey, $itemKey) - { - $this->prepareCache($nsKey); - if ($this->hasKey($nsKey, $itemKey)) { - return $this->contents[$nsKey][$itemKey]; - } - } - - /** - * Get data back out of the cache as a ByteStream. - * - * @param string $nsKey - * @param string $itemKey - * @param Swift_InputByteStream $is to write the data to - */ - public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) - { - $this->prepareCache($nsKey); - $is->write($this->getString($nsKey, $itemKey)); - } - - /** - * Check if the given $itemKey exists in the namespace $nsKey. - * - * @param string $nsKey - * @param string $itemKey - * - * @return bool - */ - public function hasKey($nsKey, $itemKey) - { - $this->prepareCache($nsKey); - - return \array_key_exists($itemKey, $this->contents[$nsKey]); - } - - /** - * Clear data for $itemKey in the namespace $nsKey if it exists. - * - * @param string $nsKey - * @param string $itemKey - */ - public function clearKey($nsKey, $itemKey) - { - unset($this->contents[$nsKey][$itemKey]); - } - - /** - * Clear all data in the namespace $nsKey if it exists. - * - * @param string $nsKey - */ - public function clearAll($nsKey) - { - unset($this->contents[$nsKey]); - } - - /** - * Initialize the namespace of $nsKey if needed. - * - * @param string $nsKey - */ - private function prepareCache($nsKey) - { - if (!\array_key_exists($nsKey, $this->contents)) { - $this->contents[$nsKey] = []; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php b/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php deleted file mode 100644 index 33b6367cb..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/DiskKeyCache.php +++ /dev/null @@ -1,294 +0,0 @@ -stream = $stream; - $this->path = $path; - } - - /** - * Set a string into the cache under $itemKey for the namespace $nsKey. - * - * @see MODE_WRITE, MODE_APPEND - * - * @param string $nsKey - * @param string $itemKey - * @param string $string - * @param int $mode - * - * @throws Swift_IoException - */ - public function setString($nsKey, $itemKey, $string, $mode) - { - $this->prepareCache($nsKey); - switch ($mode) { - case self::MODE_WRITE: - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_START); - break; - case self::MODE_APPEND: - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_END); - break; - default: - throw new Swift_SwiftException('Invalid mode ['.$mode.'] used to set nsKey='.$nsKey.', itemKey='.$itemKey); - break; - } - fwrite($fp, $string); - $this->freeHandle($nsKey, $itemKey); - } - - /** - * Set a ByteStream into the cache under $itemKey for the namespace $nsKey. - * - * @see MODE_WRITE, MODE_APPEND - * - * @param string $nsKey - * @param string $itemKey - * @param int $mode - * - * @throws Swift_IoException - */ - public function importFromByteStream($nsKey, $itemKey, Swift_OutputByteStream $os, $mode) - { - $this->prepareCache($nsKey); - switch ($mode) { - case self::MODE_WRITE: - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_START); - break; - case self::MODE_APPEND: - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_END); - break; - default: - throw new Swift_SwiftException('Invalid mode ['.$mode.'] used to set nsKey='.$nsKey.', itemKey='.$itemKey); - break; - } - while (false !== $bytes = $os->read(8192)) { - fwrite($fp, $bytes); - } - $this->freeHandle($nsKey, $itemKey); - } - - /** - * Provides a ByteStream which when written to, writes data to $itemKey. - * - * NOTE: The stream will always write in append mode. - * - * @param string $nsKey - * @param string $itemKey - * - * @return Swift_InputByteStream - */ - public function getInputByteStream($nsKey, $itemKey, Swift_InputByteStream $writeThrough = null) - { - $is = clone $this->stream; - $is->setKeyCache($this); - $is->setNsKey($nsKey); - $is->setItemKey($itemKey); - if (isset($writeThrough)) { - $is->setWriteThroughStream($writeThrough); - } - - return $is; - } - - /** - * Get data back out of the cache as a string. - * - * @param string $nsKey - * @param string $itemKey - * - * @throws Swift_IoException - * - * @return string - */ - public function getString($nsKey, $itemKey) - { - $this->prepareCache($nsKey); - if ($this->hasKey($nsKey, $itemKey)) { - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_START); - $str = ''; - while (!feof($fp) && false !== $bytes = fread($fp, 8192)) { - $str .= $bytes; - } - $this->freeHandle($nsKey, $itemKey); - - return $str; - } - } - - /** - * Get data back out of the cache as a ByteStream. - * - * @param string $nsKey - * @param string $itemKey - * @param Swift_InputByteStream $is to write the data to - */ - public function exportToByteStream($nsKey, $itemKey, Swift_InputByteStream $is) - { - if ($this->hasKey($nsKey, $itemKey)) { - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_START); - while (!feof($fp) && false !== $bytes = fread($fp, 8192)) { - $is->write($bytes); - } - $this->freeHandle($nsKey, $itemKey); - } - } - - /** - * Check if the given $itemKey exists in the namespace $nsKey. - * - * @param string $nsKey - * @param string $itemKey - * - * @return bool - */ - public function hasKey($nsKey, $itemKey) - { - return is_file($this->path.'/'.$nsKey.'/'.$itemKey); - } - - /** - * Clear data for $itemKey in the namespace $nsKey if it exists. - * - * @param string $nsKey - * @param string $itemKey - */ - public function clearKey($nsKey, $itemKey) - { - if ($this->hasKey($nsKey, $itemKey)) { - $this->freeHandle($nsKey, $itemKey); - unlink($this->path.'/'.$nsKey.'/'.$itemKey); - } - } - - /** - * Clear all data in the namespace $nsKey if it exists. - * - * @param string $nsKey - */ - public function clearAll($nsKey) - { - if (\array_key_exists($nsKey, $this->keys)) { - foreach ($this->keys[$nsKey] as $itemKey => $null) { - $this->clearKey($nsKey, $itemKey); - } - if (is_dir($this->path.'/'.$nsKey)) { - rmdir($this->path.'/'.$nsKey); - } - unset($this->keys[$nsKey]); - } - } - - /** - * Initialize the namespace of $nsKey if needed. - * - * @param string $nsKey - */ - private function prepareCache($nsKey) - { - $cacheDir = $this->path.'/'.$nsKey; - if (!is_dir($cacheDir)) { - if (!mkdir($cacheDir)) { - throw new Swift_IoException('Failed to create cache directory '.$cacheDir); - } - $this->keys[$nsKey] = []; - } - } - - /** - * Get a file handle on the cache item. - * - * @param string $nsKey - * @param string $itemKey - * @param int $position - * - * @return resource - */ - private function getHandle($nsKey, $itemKey, $position) - { - if (!isset($this->keys[$nsKey][$itemKey])) { - $openMode = $this->hasKey($nsKey, $itemKey) ? 'r+b' : 'w+b'; - $fp = fopen($this->path.'/'.$nsKey.'/'.$itemKey, $openMode); - $this->keys[$nsKey][$itemKey] = $fp; - } - if (self::POSITION_START == $position) { - fseek($this->keys[$nsKey][$itemKey], 0, SEEK_SET); - } elseif (self::POSITION_END == $position) { - fseek($this->keys[$nsKey][$itemKey], 0, SEEK_END); - } - - return $this->keys[$nsKey][$itemKey]; - } - - private function freeHandle($nsKey, $itemKey) - { - $fp = $this->getHandle($nsKey, $itemKey, self::POSITION_CURRENT); - fclose($fp); - $this->keys[$nsKey][$itemKey] = null; - } - - /** - * Destructor. - */ - public function __destruct() - { - foreach ($this->keys as $nsKey => $null) { - $this->clearAll($nsKey); - } - } - - public function __wakeup() - { - $this->keys = []; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php deleted file mode 100644 index be2dbba0c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/KeyCache/KeyCacheInputStream.php +++ /dev/null @@ -1,47 +0,0 @@ -keyCache = $keyCache; - } - - /** - * Specify a stream to write through for each write(). - */ - public function setWriteThroughStream(Swift_InputByteStream $is) - { - $this->writeThrough = $is; - } - - /** - * Writes $bytes to the end of the stream. - * - * @param string $bytes - * @param Swift_InputByteStream $is optional - */ - public function write($bytes, Swift_InputByteStream $is = null) - { - $this->keyCache->setString( - $this->nsKey, $this->itemKey, $bytes, Swift_KeyCache::MODE_APPEND - ); - if (isset($is)) { - $is->write($bytes); - } - if (isset($this->writeThrough)) { - $this->writeThrough->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Not used. - */ - public function bind(Swift_InputByteStream $is) - { - } - - /** - * Not used. - */ - public function unbind(Swift_InputByteStream $is) - { - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - */ - public function flushBuffers() - { - $this->keyCache->clearKey($this->nsKey, $this->itemKey); - } - - /** - * Set the nsKey which will be written to. - * - * @param string $nsKey - */ - public function setNsKey($nsKey) - { - $this->nsKey = $nsKey; - } - - /** - * Set the itemKey which will be written to. - * - * @param string $itemKey - */ - public function setItemKey($itemKey) - { - $this->itemKey = $itemKey; - } - - /** - * Any implementation should be cloneable, allowing the clone to access a - * separate $nsKey and $itemKey. - */ - public function __clone() - { - $this->writeThrough = null; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php deleted file mode 100644 index 244b5f602..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/LoadBalancedTransport.php +++ /dev/null @@ -1,33 +0,0 @@ -createDependenciesFor('transport.loadbalanced') - ); - - $this->setTransports($transports); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php deleted file mode 100644 index 57630074c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer.php +++ /dev/null @@ -1,98 +0,0 @@ -transport = $transport; - } - - /** - * Create a new class instance of one of the message services. - * - * For example 'mimepart' would create a 'message.mimepart' instance - * - * @param string $service - * - * @return object - */ - public function createMessage($service = 'message') - { - return Swift_DependencyContainer::getInstance() - ->lookup('message.'.$service); - } - - /** - * Send the given Message like it would be sent in a mail client. - * - * All recipients (with the exception of Bcc) will be able to see the other - * recipients this message was sent to. - * - * Recipient/sender data will be retrieved from the Message object. - * - * The return value is the number of recipients who were accepted for - * delivery. - * - * @param array $failedRecipients An array of failures by-reference - * - * @return int The number of successful recipients. Can be 0 which indicates failure - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - $failedRecipients = (array) $failedRecipients; - - // FIXME: to be removed in 7.0 (as transport must now start itself on send) - if (!$this->transport->isStarted()) { - $this->transport->start(); - } - - $sent = 0; - - try { - $sent = $this->transport->send($message, $failedRecipients); - } catch (Swift_RfcComplianceException $e) { - foreach ($message->getTo() as $address => $name) { - $failedRecipients[] = $address; - } - } - - return $sent; - } - - /** - * Register a plugin using a known unique key (e.g. myPlugin). - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->transport->registerPlugin($plugin); - } - - /** - * The Transport used to send messages. - * - * @return Swift_Transport - */ - public function getTransport() - { - return $this->transport; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php deleted file mode 100644 index 19aa82a9c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/ArrayRecipientIterator.php +++ /dev/null @@ -1,53 +0,0 @@ -recipients = $recipients; - } - - /** - * Returns true only if there are more recipients to send to. - * - * @return bool - */ - public function hasNext() - { - return !empty($this->recipients); - } - - /** - * Returns an array where the keys are the addresses of recipients and the - * values are the names. e.g. ('foo@bar' => 'Foo') or ('foo@bar' => NULL). - * - * @return array - */ - public function nextRecipient() - { - return array_splice($this->recipients, 0, 1); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php deleted file mode 100644 index 650f3ec3d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mailer/RecipientIterator.php +++ /dev/null @@ -1,32 +0,0 @@ - 'Foo') or ('foo@bar' => NULL). - * - * @return array - */ - public function nextRecipient(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/MemorySpool.php b/swiftmailer/swiftmailer/lib/classes/Swift/MemorySpool.php deleted file mode 100644 index e3b0894d8..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/MemorySpool.php +++ /dev/null @@ -1,110 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Stores Messages in memory. - * - * @author Fabien Potencier - */ -class Swift_MemorySpool implements Swift_Spool -{ - protected $messages = []; - private $flushRetries = 3; - - /** - * Tests if this Transport mechanism has started. - * - * @return bool - */ - public function isStarted() - { - return true; - } - - /** - * Starts this Transport mechanism. - */ - public function start() - { - } - - /** - * Stops this Transport mechanism. - */ - public function stop() - { - } - - /** - * @param int $retries - */ - public function setFlushRetries($retries) - { - $this->flushRetries = $retries; - } - - /** - * Stores a message in the queue. - * - * @param Swift_Mime_SimpleMessage $message The message to store - * - * @return bool Whether the operation has succeeded - */ - public function queueMessage(Swift_Mime_SimpleMessage $message) - { - //clone the message to make sure it is not changed while in the queue - $this->messages[] = clone $message; - - return true; - } - - /** - * Sends messages using the given transport instance. - * - * @param Swift_Transport $transport A transport instance - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int The number of sent emails - */ - public function flushQueue(Swift_Transport $transport, &$failedRecipients = null) - { - if (!$this->messages) { - return 0; - } - - if (!$transport->isStarted()) { - $transport->start(); - } - - $count = 0; - $retries = $this->flushRetries; - while ($retries--) { - try { - while ($message = array_pop($this->messages)) { - $count += $transport->send($message, $failedRecipients); - } - } catch (Swift_TransportException $exception) { - if ($retries) { - // re-queue the message at the end of the queue to give a chance - // to the other messages to be sent, in case the failure was due to - // this message and not just the transport failing - array_unshift($this->messages, $message); - - // wait half a second before we try again - usleep(500000); - } else { - throw $exception; - } - } - } - - return $count; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Message.php b/swiftmailer/swiftmailer/lib/classes/Swift/Message.php deleted file mode 100644 index 5c5834e23..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Message.php +++ /dev/null @@ -1,279 +0,0 @@ -createDependenciesFor('mime.message') - ); - - if (!isset($charset)) { - $charset = Swift_DependencyContainer::getInstance() - ->lookup('properties.charset'); - } - $this->setSubject($subject); - $this->setBody($body); - $this->setCharset($charset); - if ($contentType) { - $this->setContentType($contentType); - } - } - - /** - * Add a MimePart to this Message. - * - * @param string|Swift_OutputByteStream $body - * @param string $contentType - * @param string $charset - * - * @return $this - */ - public function addPart($body, $contentType = null, $charset = null) - { - return $this->attach((new Swift_MimePart($body, $contentType, $charset))->setEncoder($this->getEncoder())); - } - - /** - * Attach a new signature handler to the message. - * - * @return $this - */ - public function attachSigner(Swift_Signer $signer) - { - if ($signer instanceof Swift_Signers_HeaderSigner) { - $this->headerSigners[] = $signer; - } elseif ($signer instanceof Swift_Signers_BodySigner) { - $this->bodySigners[] = $signer; - } - - return $this; - } - - /** - * Detach a signature handler from a message. - * - * @return $this - */ - public function detachSigner(Swift_Signer $signer) - { - if ($signer instanceof Swift_Signers_HeaderSigner) { - foreach ($this->headerSigners as $k => $headerSigner) { - if ($headerSigner === $signer) { - unset($this->headerSigners[$k]); - - return $this; - } - } - } elseif ($signer instanceof Swift_Signers_BodySigner) { - foreach ($this->bodySigners as $k => $bodySigner) { - if ($bodySigner === $signer) { - unset($this->bodySigners[$k]); - - return $this; - } - } - } - - return $this; - } - - /** - * Clear all signature handlers attached to the message. - * - * @return $this - */ - public function clearSigners() - { - $this->headerSigners = []; - $this->bodySigners = []; - - return $this; - } - - /** - * Get this message as a complete string. - * - * @return string - */ - public function toString() - { - if (empty($this->headerSigners) && empty($this->bodySigners)) { - return parent::toString(); - } - - $this->saveMessage(); - - $this->doSign(); - - $string = parent::toString(); - - $this->restoreMessage(); - - return $string; - } - - /** - * Write this message to a {@link Swift_InputByteStream}. - */ - public function toByteStream(Swift_InputByteStream $is) - { - if (empty($this->headerSigners) && empty($this->bodySigners)) { - parent::toByteStream($is); - - return; - } - - $this->saveMessage(); - - $this->doSign(); - - parent::toByteStream($is); - - $this->restoreMessage(); - } - - public function __wakeup() - { - Swift_DependencyContainer::getInstance()->createDependenciesFor('mime.message'); - } - - /** - * loops through signers and apply the signatures. - */ - protected function doSign() - { - foreach ($this->bodySigners as $signer) { - $altered = $signer->getAlteredHeaders(); - $this->saveHeaders($altered); - $signer->signMessage($this); - } - - foreach ($this->headerSigners as $signer) { - $altered = $signer->getAlteredHeaders(); - $this->saveHeaders($altered); - $signer->reset(); - - $signer->setHeaders($this->getHeaders()); - - $signer->startBody(); - $this->bodyToByteStream($signer); - $signer->endBody(); - - $signer->addSignature($this->getHeaders()); - } - } - - /** - * save the message before any signature is applied. - */ - protected function saveMessage() - { - $this->savedMessage = ['headers' => []]; - $this->savedMessage['body'] = $this->getBody(); - $this->savedMessage['children'] = $this->getChildren(); - if (\count($this->savedMessage['children']) > 0 && '' != $this->getBody()) { - $this->setChildren(array_merge([$this->becomeMimePart()], $this->savedMessage['children'])); - $this->setBody(''); - } - } - - /** - * save the original headers. - */ - protected function saveHeaders(array $altered) - { - foreach ($altered as $head) { - $lc = strtolower($head ?? ''); - - if (!isset($this->savedMessage['headers'][$lc])) { - $this->savedMessage['headers'][$lc] = $this->getHeaders()->getAll($head); - } - } - } - - /** - * Remove or restore altered headers. - */ - protected function restoreHeaders() - { - foreach ($this->savedMessage['headers'] as $name => $savedValue) { - $headers = $this->getHeaders()->getAll($name); - - foreach ($headers as $key => $value) { - if (!isset($savedValue[$key])) { - $this->getHeaders()->remove($name, $key); - } - } - } - } - - /** - * Restore message body. - */ - protected function restoreMessage() - { - $this->setBody($this->savedMessage['body']); - $this->setChildren($this->savedMessage['children']); - - $this->restoreHeaders(); - $this->savedMessage = []; - } - - /** - * Clone Message Signers. - * - * @see Swift_Mime_SimpleMimeEntity::__clone() - */ - public function __clone() - { - parent::__clone(); - foreach ($this->bodySigners as $key => $bodySigner) { - $this->bodySigners[$key] = clone $bodySigner; - } - - foreach ($this->headerSigners as $key => $headerSigner) { - $this->headerSigners[$key] = clone $headerSigner; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Attachment.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Attachment.php deleted file mode 100644 index d994373bd..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Attachment.php +++ /dev/null @@ -1,144 +0,0 @@ -setDisposition('attachment'); - $this->setContentType('application/octet-stream'); - $this->mimeTypes = $mimeTypes; - } - - /** - * Get the nesting level used for this attachment. - * - * Always returns {@link LEVEL_MIXED}. - * - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_MIXED; - } - - /** - * Get the Content-Disposition of this attachment. - * - * By default attachments have a disposition of "attachment". - * - * @return string - */ - public function getDisposition() - { - return $this->getHeaderFieldModel('Content-Disposition'); - } - - /** - * Set the Content-Disposition of this attachment. - * - * @param string $disposition - * - * @return $this - */ - public function setDisposition($disposition) - { - if (!$this->setHeaderFieldModel('Content-Disposition', $disposition)) { - $this->getHeaders()->addParameterizedHeader('Content-Disposition', $disposition); - } - - return $this; - } - - /** - * Get the filename of this attachment when downloaded. - * - * @return string - */ - public function getFilename() - { - return $this->getHeaderParameter('Content-Disposition', 'filename'); - } - - /** - * Set the filename of this attachment. - * - * @param string $filename - * - * @return $this - */ - public function setFilename($filename) - { - $this->setHeaderParameter('Content-Disposition', 'filename', $filename); - $this->setHeaderParameter('Content-Type', 'name', $filename); - - return $this; - } - - /** - * Get the file size of this attachment. - * - * @return int - */ - public function getSize() - { - return $this->getHeaderParameter('Content-Disposition', 'size'); - } - - /** - * Set the file size of this attachment. - * - * @param int $size - * - * @return $this - */ - public function setSize($size) - { - $this->setHeaderParameter('Content-Disposition', 'size', $size); - - return $this; - } - - /** - * Set the file that this attachment is for. - * - * @param string $contentType optional - * - * @return $this - */ - public function setFile(Swift_FileStream $file, $contentType = null) - { - $this->setFilename(basename($file->getPath())); - $this->setBody($file, $contentType); - if (!isset($contentType)) { - $extension = strtolower(substr($file->getPath(), strrpos($file->getPath(), '.') + 1)); - - if (\array_key_exists($extension, $this->mimeTypes)) { - $this->setContentType($this->mimeTypes[$extension]); - } - } - - return $this; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php deleted file mode 100644 index b49c3a873..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/CharsetObserver.php +++ /dev/null @@ -1,24 +0,0 @@ -= $maxLineLength || 76 < $maxLineLength) { - $maxLineLength = 76; - } - - $remainder = 0; - $base64ReadBufferRemainderBytes = ''; - - // To reduce memory usage, the output buffer is streamed to the input buffer like so: - // Output Stream => base64encode => wrap line length => Input Stream - // HOWEVER it's important to note that base64_encode() should only be passed whole triplets of data (except for the final chunk of data) - // otherwise it will assume the input data has *ended* and it will incorrectly pad/terminate the base64 data mid-stream. - // We use $base64ReadBufferRemainderBytes to carry over 1-2 "remainder" bytes from the each chunk from OutputStream and pre-pend those onto the - // chunk of bytes read in the next iteration. - // When the OutputStream is empty, we must flush any remainder bytes. - while (true) { - $readBytes = $os->read(8192); - $atEOF = (false === $readBytes); - - if ($atEOF) { - $streamTheseBytes = $base64ReadBufferRemainderBytes; - } else { - $streamTheseBytes = $base64ReadBufferRemainderBytes.$readBytes; - } - $base64ReadBufferRemainderBytes = ''; - $bytesLength = \strlen($streamTheseBytes); - - if (0 === $bytesLength) { // no data left to encode - break; - } - - // if we're not on the last block of the ouput stream, make sure $streamTheseBytes ends with a complete triplet of data - // and carry over remainder 1-2 bytes to the next loop iteration - if (!$atEOF) { - $excessBytes = $bytesLength % 3; - if (0 !== $excessBytes) { - $base64ReadBufferRemainderBytes = substr($streamTheseBytes, -$excessBytes); - $streamTheseBytes = substr($streamTheseBytes, 0, $bytesLength - $excessBytes); - } - } - - $encoded = base64_encode($streamTheseBytes); - $encodedTransformed = ''; - $thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset; - - while ($thisMaxLineLength < \strlen($encoded)) { - $encodedTransformed .= substr($encoded, 0, $thisMaxLineLength)."\r\n"; - $firstLineOffset = 0; - $encoded = substr($encoded, $thisMaxLineLength); - $thisMaxLineLength = $maxLineLength; - $remainder = 0; - } - - if (0 < $remainingLength = \strlen($encoded)) { - $remainder += $remainingLength; - $encodedTransformed .= $encoded; - $encoded = null; - } - - $is->write($encodedTransformed); - - if ($atEOF) { - break; - } - } - } - - /** - * Get the name of this encoding scheme. - * Returns the string 'base64'. - * - * @return string - */ - public function getName() - { - return 'base64'; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php deleted file mode 100644 index 8dfea605f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/NativeQpContentEncoder.php +++ /dev/null @@ -1,121 +0,0 @@ -charset = $charset ?: 'utf-8'; - } - - /** - * Notify this observer that the entity's charset has changed. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->charset = $charset; - } - - /** - * Encode $in to $out. - * - * @param Swift_OutputByteStream $os to read from - * @param Swift_InputByteStream $is to write to - * @param int $firstLineOffset - * @param int $maxLineLength 0 indicates the default length for this encoding - * - * @throws RuntimeException - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - if ('utf-8' !== $this->charset) { - throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset)); - } - - $string = ''; - - while (false !== $bytes = $os->read(8192)) { - $string .= $bytes; - } - - $is->write($this->encodeString($string)); - } - - /** - * Get the MIME name of this content encoding scheme. - * - * @return string - */ - public function getName() - { - return 'quoted-printable'; - } - - /** - * Encode a given string to produce an encoded string. - * - * @param string $string - * @param int $firstLineOffset if first line needs to be shorter - * @param int $maxLineLength 0 indicates the default length for this encoding - * - * @throws RuntimeException - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - if ('utf-8' !== $this->charset) { - throw new RuntimeException(sprintf('Charset "%s" not supported. NativeQpContentEncoder only supports "utf-8"', $this->charset)); - } - - return $this->standardize(quoted_printable_encode($string)); - } - - /** - * Make sure CRLF is correct and HT/SPACE are in valid places. - * - * @param string $string - * - * @return string - */ - protected function standardize($string) - { - // transform CR or LF to CRLF - $string = preg_replace('~=0D(?!=0A)|(? - */ -class Swift_Mime_ContentEncoder_NullContentEncoder implements Swift_Mime_ContentEncoder -{ - /** - * The name of this encoding scheme (probably 7bit or 8bit). - * - * @var string - */ - private $name; - - /** - * Creates a new NullContentEncoder with $name (probably 7bit or 8bit). - * - * @param string $name - */ - public function __construct($name) - { - $this->name = $name; - } - - /** - * Encode a given string to produce an encoded string. - * - * @param string $string - * @param int $firstLineOffset ignored - * @param int $maxLineLength ignored - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - return $string; - } - - /** - * Encode stream $in to stream $out. - * - * @param int $firstLineOffset ignored - * @param int $maxLineLength ignored - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - while (false !== ($bytes = $os->read(8192))) { - $is->write($bytes); - } - } - - /** - * Get the name of this encoding scheme. - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Not used. - */ - public function charsetChanged($charset) - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php deleted file mode 100644 index 72592fc58..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php +++ /dev/null @@ -1,164 +0,0 @@ -name = $name; - $this->canonical = $canonical; - } - - /** - * Encode a given string to produce an encoded string. - * - * @param string $string - * @param int $firstLineOffset ignored - * @param int $maxLineLength - 0 means no wrapping will occur - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - if ($this->canonical) { - $string = $this->canonicalize($string); - } - - return $this->safeWordwrap($string, $maxLineLength, "\r\n"); - } - - /** - * Encode stream $in to stream $out. - * - * @param int $firstLineOffset ignored - * @param int $maxLineLength optional, 0 means no wrapping will occur - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - $leftOver = ''; - while (false !== $bytes = $os->read(8192)) { - $toencode = $leftOver.$bytes; - if ($this->canonical) { - $toencode = $this->canonicalize($toencode); - } - $wrapped = $this->safeWordwrap($toencode, $maxLineLength, "\r\n"); - $lastLinePos = strrpos($wrapped, "\r\n"); - $leftOver = substr($wrapped, $lastLinePos); - $wrapped = substr($wrapped, 0, $lastLinePos); - - $is->write($wrapped); - } - if (\strlen($leftOver)) { - $is->write($leftOver); - } - } - - /** - * Get the name of this encoding scheme. - * - * @return string - */ - public function getName() - { - return $this->name; - } - - /** - * Not used. - */ - public function charsetChanged($charset) - { - } - - /** - * A safer (but weaker) wordwrap for unicode. - * - * @param string $string - * @param int $length - * @param string $le - * - * @return string - */ - private function safeWordwrap($string, $length = 75, $le = "\r\n") - { - if (0 >= $length) { - return $string; - } - - $originalLines = explode($le, $string); - - $lines = []; - $lineCount = 0; - - foreach ($originalLines as $originalLine) { - $lines[] = ''; - $currentLine = &$lines[$lineCount++]; - - //$chunks = preg_split('/(?<=[\ \t,\.!\?\-&\+\/])/', $originalLine); - $chunks = preg_split('/(?<=\s)/', $originalLine); - - foreach ($chunks as $chunk) { - if (0 != \strlen($currentLine) - && \strlen($currentLine.$chunk) > $length) { - $lines[] = ''; - $currentLine = &$lines[$lineCount++]; - } - $currentLine .= $chunk; - } - } - - return implode("\r\n", $lines); - } - - /** - * Canonicalize string input (fix CRLF). - * - * @param string $string - * - * @return string - */ - private function canonicalize($string) - { - return str_replace( - ["\r\n", "\r", "\n"], - ["\n", "\n", "\r\n"], - $string - ); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php deleted file mode 100644 index 465ffd878..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php +++ /dev/null @@ -1,134 +0,0 @@ -dotEscape = $dotEscape; - parent::__construct($charStream, $filter); - } - - public function __sleep() - { - return ['charStream', 'filter', 'dotEscape']; - } - - protected function getSafeMapShareId() - { - return static::class.($this->dotEscape ? '.dotEscape' : ''); - } - - protected function initSafeMap() - { - parent::initSafeMap(); - if ($this->dotEscape) { - /* Encode . as =2e for buggy remote servers */ - unset($this->safeMap[0x2e]); - } - } - - /** - * Encode stream $in to stream $out. - * - * QP encoded strings have a maximum line length of 76 characters. - * If the first line needs to be shorter, indicate the difference with - * $firstLineOffset. - * - * @param Swift_OutputByteStream $os output stream - * @param Swift_InputByteStream $is input stream - * @param int $firstLineOffset - * @param int $maxLineLength - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - if ($maxLineLength > 76 || $maxLineLength <= 0) { - $maxLineLength = 76; - } - - $thisLineLength = $maxLineLength - $firstLineOffset; - - $this->charStream->flushContents(); - $this->charStream->importByteStream($os); - - $currentLine = ''; - $prepend = ''; - $size = $lineLen = 0; - - while (false !== $bytes = $this->nextSequence()) { - // If we're filtering the input - if (isset($this->filter)) { - // If we can't filter because we need more bytes - while ($this->filter->shouldBuffer($bytes)) { - // Then collect bytes into the buffer - if (false === $moreBytes = $this->nextSequence(1)) { - break; - } - - foreach ($moreBytes as $b) { - $bytes[] = $b; - } - } - // And filter them - $bytes = $this->filter->filter($bytes); - } - - $enc = $this->encodeByteSequence($bytes, $size); - - $i = strpos($enc, '=0D=0A'); - $newLineLength = $lineLen + (false === $i ? $size : $i); - - if ($currentLine && $newLineLength >= $thisLineLength) { - $is->write($prepend.$this->standardize($currentLine)); - $currentLine = ''; - $prepend = "=\r\n"; - $thisLineLength = $maxLineLength; - $lineLen = 0; - } - - $currentLine .= $enc; - - if (false === $i) { - $lineLen += $size; - } else { - // 6 is the length of '=0D=0A'. - $lineLen = $size - strrpos($enc, '=0D=0A') - 6; - } - } - if (\strlen($currentLine)) { - $is->write($prepend.$this->standardize($currentLine)); - } - } - - /** - * Get the name of this encoding scheme. - * Returns the string 'quoted-printable'. - * - * @return string - */ - public function getName() - { - return 'quoted-printable'; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php deleted file mode 100644 index f3ece43ae..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/QpContentEncoderProxy.php +++ /dev/null @@ -1,96 +0,0 @@ - - */ -class Swift_Mime_ContentEncoder_QpContentEncoderProxy implements Swift_Mime_ContentEncoder -{ - /** - * @var Swift_Mime_ContentEncoder_QpContentEncoder - */ - private $safeEncoder; - - /** - * @var Swift_Mime_ContentEncoder_NativeQpContentEncoder - */ - private $nativeEncoder; - - /** - * @var string|null - */ - private $charset; - - /** - * Constructor. - * - * @param string|null $charset - */ - public function __construct(Swift_Mime_ContentEncoder_QpContentEncoder $safeEncoder, Swift_Mime_ContentEncoder_NativeQpContentEncoder $nativeEncoder, $charset) - { - $this->safeEncoder = $safeEncoder; - $this->nativeEncoder = $nativeEncoder; - $this->charset = $charset; - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->safeEncoder = clone $this->safeEncoder; - $this->nativeEncoder = clone $this->nativeEncoder; - } - - /** - * {@inheritdoc} - */ - public function charsetChanged($charset) - { - $this->charset = $charset; - $this->safeEncoder->charsetChanged($charset); - } - - /** - * {@inheritdoc} - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - $this->getEncoder()->encodeByteStream($os, $is, $firstLineOffset, $maxLineLength); - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'quoted-printable'; - } - - /** - * {@inheritdoc} - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - return $this->getEncoder()->encodeString($string, $firstLineOffset, $maxLineLength); - } - - /** - * @return Swift_Mime_ContentEncoder - */ - private function getEncoder() - { - return 'utf-8' === $this->charset ? $this->nativeEncoder : $this->safeEncoder; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php deleted file mode 100644 index 870e7f41a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/ContentEncoder/RawContentEncoder.php +++ /dev/null @@ -1,65 +0,0 @@ - - */ -class Swift_Mime_ContentEncoder_RawContentEncoder implements Swift_Mime_ContentEncoder -{ - /** - * Encode a given string to produce an encoded string. - * - * @param string $string - * @param int $firstLineOffset ignored - * @param int $maxLineLength ignored - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - return $string; - } - - /** - * Encode stream $in to stream $out. - * - * @param int $firstLineOffset ignored - * @param int $maxLineLength ignored - */ - public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0) - { - while (false !== ($bytes = $os->read(8192))) { - $is->write($bytes); - } - } - - /** - * Get the name of this encoding scheme. - * - * @return string - */ - public function getName() - { - return 'raw'; - } - - /** - * Not used. - */ - public function charsetChanged($charset) - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php deleted file mode 100644 index 42a51770c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EmbeddedFile.php +++ /dev/null @@ -1,41 +0,0 @@ -setDisposition('inline'); - $this->setId($this->getId()); - } - - /** - * Get the nesting level of this EmbeddedFile. - * - * Returns {@see LEVEL_RELATED}. - * - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_RELATED; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php deleted file mode 100644 index 1a952ece1..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/EncodingObserver.php +++ /dev/null @@ -1,22 +0,0 @@ -getName(), "\r\n"); - mb_internal_encoding($old); - - return $newstring; - } - - return parent::encodeString($string, $firstLineOffset, $maxLineLength); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php deleted file mode 100644 index 378c48050..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php +++ /dev/null @@ -1,65 +0,0 @@ -safeMap[$byte] = \chr($byte); - } - } - - /** - * Get the name of this encoding scheme. - * - * Returns the string 'Q'. - * - * @return string - */ - public function getName() - { - return 'Q'; - } - - /** - * Takes an unencoded string and produces a QP encoded string from it. - * - * @param string $string string to encode - * @param int $firstLineOffset optional - * @param int $maxLineLength optional, 0 indicates the default of 76 chars - * - * @return string - */ - public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0) - { - return str_replace([' ', '=20', "=\r\n"], ['_', '_', "\r\n"], - parent::encodeString($string, $firstLineOffset, $maxLineLength) - ); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php deleted file mode 100644 index 25740d115..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/AbstractHeader.php +++ /dev/null @@ -1,486 +0,0 @@ -clearCachedValueIf($charset != $this->charset); - $this->charset = $charset; - if (isset($this->encoder)) { - $this->encoder->charsetChanged($charset); - } - } - - /** - * Get the character set used in this Header. - * - * @return string - */ - public function getCharset() - { - return $this->charset; - } - - /** - * Set the language used in this Header. - * - * For example, for US English, 'en-us'. - * This can be unspecified. - * - * @param string $lang - */ - public function setLanguage($lang) - { - $this->clearCachedValueIf($this->lang != $lang); - $this->lang = $lang; - } - - /** - * Get the language used in this Header. - * - * @return string - */ - public function getLanguage() - { - return $this->lang; - } - - /** - * Set the encoder used for encoding the header. - */ - public function setEncoder(Swift_Mime_HeaderEncoder $encoder) - { - $this->encoder = $encoder; - $this->setCachedValue(null); - } - - /** - * Get the encoder used for encoding this Header. - * - * @return Swift_Mime_HeaderEncoder - */ - public function getEncoder() - { - return $this->encoder; - } - - /** - * Get the name of this header (e.g. charset). - * - * @return string - */ - public function getFieldName() - { - return $this->name; - } - - /** - * Set the maximum length of lines in the header (excluding EOL). - * - * @param int $lineLength - */ - public function setMaxLineLength($lineLength) - { - $this->clearCachedValueIf($this->lineLength != $lineLength); - $this->lineLength = $lineLength; - } - - /** - * Get the maximum permitted length of lines in this Header. - * - * @return int - */ - public function getMaxLineLength() - { - return $this->lineLength; - } - - /** - * Get this Header rendered as a RFC 2822 compliant string. - * - * @return string - * - * @throws Swift_RfcComplianceException - */ - public function toString() - { - return $this->tokensToString($this->toTokens()); - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Set the name of this Header field. - * - * @param string $name - */ - protected function setFieldName($name) - { - $this->name = $name; - } - - /** - * Produces a compliant, formatted RFC 2822 'phrase' based on the string given. - * - * @param string $string as displayed - * @param string $charset of the text - * @param bool $shorten the first line to make remove for header name - * - * @return string - */ - protected function createPhrase(Swift_Mime_Header $header, $string, $charset, Swift_Mime_HeaderEncoder $encoder = null, $shorten = false) - { - // Treat token as exactly what was given - $phraseStr = $string; - // If it's not valid - - if (!preg_match('/^'.self::PHRASE_PATTERN.'$/D', $phraseStr)) { - // .. but it is just ascii text, try escaping some characters - // and make it a quoted-string - if (preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $phraseStr)) { - $phraseStr = $this->escapeSpecials($phraseStr, ['"']); - $phraseStr = '"'.$phraseStr.'"'; - } else { - // ... otherwise it needs encoding - // Determine space remaining on line if first line - if ($shorten) { - $usedLength = \strlen($header->getFieldName().': '); - } else { - $usedLength = 0; - } - $phraseStr = $this->encodeWords($header, $string, $usedLength); - } - } - - return $phraseStr; - } - - /** - * Escape special characters in a string (convert to quoted-pairs). - * - * @param string $token - * @param string[] $include additional chars to escape - * - * @return string - */ - private function escapeSpecials($token, $include = []) - { - foreach (array_merge(['\\'], $include) as $char) { - $token = str_replace($char, '\\'.$char, $token); - } - - return $token; - } - - /** - * Encode needed word tokens within a string of input. - * - * @param string $input - * @param string $usedLength optional - * - * @return string - */ - protected function encodeWords(Swift_Mime_Header $header, $input, $usedLength = -1) - { - $value = ''; - - $tokens = $this->getEncodableWordTokens($input); - - foreach ($tokens as $token) { - // See RFC 2822, Sect 2.2 (really 2.2 ??) - if ($this->tokenNeedsEncoding($token)) { - // Don't encode starting WSP - $firstChar = substr($token, 0, 1); - switch ($firstChar) { - case ' ': - case "\t": - $value .= $firstChar; - $token = substr($token, 1); - } - - if (-1 == $usedLength) { - $usedLength = \strlen($header->getFieldName().': ') + \strlen($value); - } - $value .= $this->getTokenAsEncodedWord($token, $usedLength); - - $header->setMaxLineLength(76); // Forcefully override - } else { - $value .= $token; - } - } - - return $value; - } - - /** - * Test if a token needs to be encoded or not. - * - * @param string $token - * - * @return bool - */ - protected function tokenNeedsEncoding($token) - { - return preg_match('~[\x00-\x08\x10-\x19\x7F-\xFF\r\n]~', $token); - } - - /** - * Splits a string into tokens in blocks of words which can be encoded quickly. - * - * @param string $string - * - * @return string[] - */ - protected function getEncodableWordTokens($string) - { - $tokens = []; - - $encodedToken = ''; - // Split at all whitespace boundaries - foreach (preg_split('~(?=[\t ])~', $string ?? '') as $token) { - if ($this->tokenNeedsEncoding($token)) { - $encodedToken .= $token; - } else { - if (\strlen($encodedToken) > 0) { - $tokens[] = $encodedToken; - $encodedToken = ''; - } - $tokens[] = $token; - } - } - if (\strlen($encodedToken)) { - $tokens[] = $encodedToken; - } - - return $tokens; - } - - /** - * Get a token as an encoded word for safe insertion into headers. - * - * @param string $token token to encode - * @param int $firstLineOffset optional - * - * @return string - */ - protected function getTokenAsEncodedWord($token, $firstLineOffset = 0) - { - // Adjust $firstLineOffset to account for space needed for syntax - $charsetDecl = $this->charset; - if (isset($this->lang)) { - $charsetDecl .= '*'.$this->lang; - } - $encodingWrapperLength = \strlen( - '=?'.$charsetDecl.'?'.$this->encoder->getName().'??=' - ); - - if ($firstLineOffset >= 75) { - //Does this logic need to be here? - $firstLineOffset = 0; - } - - $encodedTextLines = explode("\r\n", - $this->encoder->encodeString( - $token, $firstLineOffset, 75 - $encodingWrapperLength, $this->charset - ) ?? '' - ); - - if ('iso-2022-jp' !== strtolower($this->charset ?? '')) { - // special encoding for iso-2022-jp using mb_encode_mimeheader - foreach ($encodedTextLines as $lineNum => $line) { - $encodedTextLines[$lineNum] = '=?'.$charsetDecl. - '?'.$this->encoder->getName(). - '?'.$line.'?='; - } - } - - return implode("\r\n ", $encodedTextLines); - } - - /** - * Generates tokens from the given string which include CRLF as individual tokens. - * - * @param string $token - * - * @return string[] - */ - protected function generateTokenLines($token) - { - return preg_split('~(\r\n)~', $token ?? '', -1, PREG_SPLIT_DELIM_CAPTURE); - } - - /** - * Set a value into the cache. - * - * @param string $value - */ - protected function setCachedValue($value) - { - $this->cachedValue = $value; - } - - /** - * Get the value in the cache. - * - * @return string - */ - protected function getCachedValue() - { - return $this->cachedValue; - } - - /** - * Clear the cached value if $condition is met. - * - * @param bool $condition - */ - protected function clearCachedValueIf($condition) - { - if ($condition) { - $this->setCachedValue(null); - } - } - - /** - * Generate a list of all tokens in the final header. - * - * @param string $string The string to tokenize - * - * @return array An array of tokens as strings - */ - protected function toTokens($string = null) - { - if (null === $string) { - $string = $this->getFieldBody(); - } - - $tokens = []; - - // Generate atoms; split at all invisible boundaries followed by WSP - foreach (preg_split('~(?=[ \t])~', $string ?? '') as $token) { - $newTokens = $this->generateTokenLines($token); - foreach ($newTokens as $newToken) { - $tokens[] = $newToken; - } - } - - return $tokens; - } - - /** - * Takes an array of tokens which appear in the header and turns them into - * an RFC 2822 compliant string, adding FWSP where needed. - * - * @param string[] $tokens - * - * @return string - */ - private function tokensToString(array $tokens) - { - $lineCount = 0; - $headerLines = []; - $headerLines[] = $this->name.': '; - $currentLine = &$headerLines[$lineCount++]; - - // Build all tokens back into compliant header - foreach ($tokens as $i => $token) { - // Line longer than specified maximum or token was just a new line - if (("\r\n" == $token) || - ($i > 0 && \strlen($currentLine.$token) > $this->lineLength) - && 0 < \strlen($currentLine)) { - $headerLines[] = ''; - $currentLine = &$headerLines[$lineCount++]; - } - - // Append token to the line - if ("\r\n" != $token) { - $currentLine .= $token; - } - } - - // Implode with FWS (RFC 2822, 2.2.3) - return implode("\r\n", $headerLines)."\r\n"; - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - if ($this->encoder) { - $this->encoder = clone $this->encoder; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php deleted file mode 100644 index efe1dad66..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/DateHeader.php +++ /dev/null @@ -1,113 +0,0 @@ -setFieldName($name); - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_DATE; - } - - /** - * Set the model for the field body. - * - * @param DateTimeInterface $model - */ - public function setFieldBodyModel($model) - { - $this->setDateTime($model); - } - - /** - * Get the model for the field body. - * - * @return DateTimeImmutable - */ - public function getFieldBodyModel() - { - return $this->getDateTime(); - } - - /** - * Get the date-time representing the Date in this Header. - * - * @return DateTimeImmutable - */ - public function getDateTime() - { - return $this->dateTime; - } - - /** - * Set the date-time of the Date in this Header. - * - * If a DateTime instance is provided, it is converted to DateTimeImmutable. - */ - public function setDateTime(DateTimeInterface $dateTime) - { - $this->clearCachedValueIf($this->getCachedValue() != $dateTime->format(DateTime::RFC2822)); - if ($dateTime instanceof DateTime) { - $immutable = new DateTimeImmutable('@'.$dateTime->getTimestamp()); - $dateTime = $immutable->setTimezone($dateTime->getTimezone()); - } - $this->dateTime = $dateTime; - } - - /** - * Get the string value of the body in this Header. - * - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * - * @see toString() - * - * @return string - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) { - if (isset($this->dateTime)) { - $this->setCachedValue($this->dateTime->format(DateTime::RFC2822)); - } - } - - return $this->getCachedValue(); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php deleted file mode 100644 index 4fcdff418..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/IdentificationHeader.php +++ /dev/null @@ -1,189 +0,0 @@ -setFieldName($name); - $this->emailValidator = $emailValidator; - $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder(); - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_ID; - } - - /** - * Set the model for the field body. - * - * This method takes a string ID, or an array of IDs. - * - * @param mixed $model - * - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setId($model); - } - - /** - * Get the model for the field body. - * - * This method returns an array of IDs - * - * @return array - */ - public function getFieldBodyModel() - { - return $this->getIds(); - } - - /** - * Set the ID used in the value of this header. - * - * @param string|array $id - * - * @throws Swift_RfcComplianceException - */ - public function setId($id) - { - $this->setIds(\is_array($id) ? $id : [$id]); - } - - /** - * Get the ID used in the value of this Header. - * - * If multiple IDs are set only the first is returned. - * - * @return string - */ - public function getId() - { - if (\count($this->ids) > 0) { - return $this->ids[0]; - } - } - - /** - * Set a collection of IDs to use in the value of this Header. - * - * @param string[] $ids - * - * @throws Swift_RfcComplianceException - */ - public function setIds(array $ids) - { - $actualIds = []; - - foreach ($ids as $id) { - $this->assertValidId($id); - $actualIds[] = $id; - } - - $this->clearCachedValueIf($this->ids != $actualIds); - $this->ids = $actualIds; - } - - /** - * Get the list of IDs used in this Header. - * - * @return string[] - */ - public function getIds() - { - return $this->ids; - } - - /** - * Get the string value of the body in this Header. - * - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@see toString()} for that). - * - * @see toString() - * - * @throws Swift_RfcComplianceException - * - * @return string - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) { - $angleAddrs = []; - - foreach ($this->ids as $id) { - $angleAddrs[] = '<'.$this->addressEncoder->encodeString($id).'>'; - } - - $this->setCachedValue(implode(' ', $angleAddrs)); - } - - return $this->getCachedValue(); - } - - /** - * Throws an Exception if the id passed does not comply with RFC 2822. - * - * @param string $id - * - * @throws Swift_RfcComplianceException - */ - private function assertValidId($id) - { - $emailValidation = class_exists(MessageIDValidation::class) ? new MessageIDValidation() : new RFCValidation(); - - if (!$this->emailValidator->isValid($id, $emailValidation)) { - throw new Swift_RfcComplianceException('Invalid ID given <'.$id.'>'); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php deleted file mode 100644 index ddd5e8cff..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/MailboxHeader.php +++ /dev/null @@ -1,358 +0,0 @@ -setFieldName($name); - $this->setEncoder($encoder); - $this->emailValidator = $emailValidator; - $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder(); - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_MAILBOX; - } - - /** - * Set the model for the field body. - * - * This method takes a string, or an array of addresses. - * - * @param mixed $model - * - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setNameAddresses($model); - } - - /** - * Get the model for the field body. - * - * This method returns an associative array like {@link getNameAddresses()} - * - * @throws Swift_RfcComplianceException - * - * @return array - */ - public function getFieldBodyModel() - { - return $this->getNameAddresses(); - } - - /** - * Set a list of mailboxes to be shown in this Header. - * - * The mailboxes can be a simple array of addresses, or an array of - * key=>value pairs where (email => personalName). - * Example: - * - * setNameAddresses(array( - * 'chris@swiftmailer.org' => 'Chris Corbyn', - * 'mark@swiftmailer.org' //No associated personal name - * )); - * ?> - * - * - * @see __construct() - * @see setAddresses() - * @see setValue() - * - * @param string|string[] $mailboxes - * - * @throws Swift_RfcComplianceException - */ - public function setNameAddresses($mailboxes) - { - $this->mailboxes = $this->normalizeMailboxes((array) $mailboxes); - $this->setCachedValue(null); //Clear any cached value - } - - /** - * Get the full mailbox list of this Header as an array of valid RFC 2822 strings. - * - * Example: - * - * 'Chris Corbyn', - * 'mark@swiftmailer.org' => 'Mark Corbyn') - * ); - * print_r($header->getNameAddressStrings()); - * // array ( - * // 0 => Chris Corbyn , - * // 1 => Mark Corbyn - * // ) - * ?> - * - * - * @see getNameAddresses() - * @see toString() - * - * @throws Swift_RfcComplianceException - * - * @return string[] - */ - public function getNameAddressStrings() - { - return $this->createNameAddressStrings($this->getNameAddresses()); - } - - /** - * Get all mailboxes in this Header as key=>value pairs. - * - * The key is the address and the value is the name (or null if none set). - * Example: - * - * 'Chris Corbyn', - * 'mark@swiftmailer.org' => 'Mark Corbyn') - * ); - * print_r($header->getNameAddresses()); - * // array ( - * // chris@swiftmailer.org => Chris Corbyn, - * // mark@swiftmailer.org => Mark Corbyn - * // ) - * ?> - * - * - * @see getAddresses() - * @see getNameAddressStrings() - * - * @return string[] - */ - public function getNameAddresses() - { - return $this->mailboxes; - } - - /** - * Makes this Header represent a list of plain email addresses with no names. - * - * Example: - * - * setAddresses( - * array('one@domain.tld', 'two@domain.tld', 'three@domain.tld') - * ); - * ?> - * - * - * @see setNameAddresses() - * @see setValue() - * - * @param string[] $addresses - * - * @throws Swift_RfcComplianceException - */ - public function setAddresses($addresses) - { - $this->setNameAddresses(array_values((array) $addresses)); - } - - /** - * Get all email addresses in this Header. - * - * @see getNameAddresses() - * - * @return string[] - */ - public function getAddresses() - { - return array_keys($this->mailboxes); - } - - /** - * Remove one or more addresses from this Header. - * - * @param string|string[] $addresses - */ - public function removeAddresses($addresses) - { - $this->setCachedValue(null); - foreach ((array) $addresses as $address) { - unset($this->mailboxes[$address]); - } - } - - /** - * Get the string value of the body in this Header. - * - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * - * @see toString() - * - * @throws Swift_RfcComplianceException - * - * @return string - */ - public function getFieldBody() - { - // Compute the string value of the header only if needed - if (null === $this->getCachedValue()) { - $this->setCachedValue($this->createMailboxListString($this->mailboxes)); - } - - return $this->getCachedValue(); - } - - /** - * Normalizes a user-input list of mailboxes into consistent key=>value pairs. - * - * @param string[] $mailboxes - * - * @return string[] - */ - protected function normalizeMailboxes(array $mailboxes) - { - $actualMailboxes = []; - - foreach ($mailboxes as $key => $value) { - if (\is_string($key)) { - //key is email addr - $address = $key; - $name = $value; - } else { - $address = $value; - $name = null; - } - $this->assertValidAddress($address); - $actualMailboxes[$address] = $name; - } - - return $actualMailboxes; - } - - /** - * Produces a compliant, formatted display-name based on the string given. - * - * @param string $displayName as displayed - * @param bool $shorten the first line to make remove for header name - * - * @return string - */ - protected function createDisplayNameString($displayName, $shorten = false) - { - return $this->createPhrase($this, $displayName, $this->getCharset(), $this->getEncoder(), $shorten); - } - - /** - * Creates a string form of all the mailboxes in the passed array. - * - * @param string[] $mailboxes - * - * @throws Swift_RfcComplianceException - * - * @return string - */ - protected function createMailboxListString(array $mailboxes) - { - return implode(', ', $this->createNameAddressStrings($mailboxes)); - } - - /** - * Redefine the encoding requirements for mailboxes. - * - * All "specials" must be encoded as the full header value will not be quoted - * - * @see RFC 2822 3.2.1 - * - * @param string $token - * - * @return bool - */ - protected function tokenNeedsEncoding($token) - { - return preg_match('/[()<>\[\]:;@\,."]/', $token) || parent::tokenNeedsEncoding($token); - } - - /** - * Return an array of strings conforming the the name-addr spec of RFC 2822. - * - * @param string[] $mailboxes - * - * @return string[] - */ - private function createNameAddressStrings(array $mailboxes) - { - $strings = []; - - foreach ($mailboxes as $email => $name) { - $mailboxStr = $this->addressEncoder->encodeString($email); - if (null !== $name) { - $nameStr = $this->createDisplayNameString($name, empty($strings)); - $mailboxStr = $nameStr.' <'.$mailboxStr.'>'; - } - $strings[] = $mailboxStr; - } - - return $strings; - } - - /** - * Throws an Exception if the address passed does not comply with RFC 2822. - * - * @param string $address - * - * @throws Swift_RfcComplianceException if invalid - */ - private function assertValidAddress($address) - { - if (!$this->emailValidator->isValid($address, new RFCValidation())) { - throw new Swift_RfcComplianceException('Address in mailbox given ['.$address.'] does not comply with RFC 2822, 3.6.2.'); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php deleted file mode 100644 index fafb5bae2..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/OpenDKIMHeader.php +++ /dev/null @@ -1,135 +0,0 @@ - - * - * @deprecated since SwiftMailer 6.1.0; use Swift_Signers_DKIMSigner instead. - */ -class Swift_Mime_Headers_OpenDKIMHeader implements Swift_Mime_Header -{ - /** - * The value of this Header. - * - * @var string - */ - private $value; - - /** - * The name of this Header. - * - * @var string - */ - private $fieldName; - - /** - * @param string $name - */ - public function __construct($name) - { - $this->fieldName = $name; - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_TEXT; - } - - /** - * Set the model for the field body. - * - * This method takes a string for the field value. - * - * @param string $model - */ - public function setFieldBodyModel($model) - { - $this->setValue($model); - } - - /** - * Get the model for the field body. - * - * This method returns a string. - * - * @return string - */ - public function getFieldBodyModel() - { - return $this->getValue(); - } - - /** - * Get the (unencoded) value of this header. - * - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * Set the (unencoded) value of this header. - * - * @param string $value - */ - public function setValue($value) - { - $this->value = $value; - } - - /** - * Get the value of this header prepared for rendering. - * - * @return string - */ - public function getFieldBody() - { - return $this->value; - } - - /** - * Get this Header rendered as a RFC 2822 compliant string. - * - * @return string - */ - public function toString() - { - return $this->fieldName.': '.$this->value."\r\n"; - } - - /** - * Set the Header FieldName. - * - * @see Swift_Mime_Header::getFieldName() - */ - public function getFieldName() - { - return $this->fieldName; - } - - /** - * Ignored. - */ - public function setCharset($charset) - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php deleted file mode 100644 index 47c15e6c0..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/ParameterizedHeader.php +++ /dev/null @@ -1,255 +0,0 @@ -paramEncoder = $paramEncoder; - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_PARAMETERIZED; - } - - /** - * Set the character set used in this Header. - * - * @param string $charset - */ - public function setCharset($charset) - { - parent::setCharset($charset); - if (isset($this->paramEncoder)) { - $this->paramEncoder->charsetChanged($charset); - } - } - - /** - * Set the value of $parameter. - * - * @param string $parameter - * @param string $value - */ - public function setParameter($parameter, $value) - { - $this->setParameters(array_merge($this->getParameters(), [$parameter => $value])); - } - - /** - * Get the value of $parameter. - * - * @param string $parameter - * - * @return string - */ - public function getParameter($parameter) - { - $params = $this->getParameters(); - - return $params[$parameter] ?? null; - } - - /** - * Set an associative array of parameter names mapped to values. - * - * @param string[] $parameters - */ - public function setParameters(array $parameters) - { - $this->clearCachedValueIf($this->params != $parameters); - $this->params = $parameters; - } - - /** - * Returns an associative array of parameter names mapped to values. - * - * @return string[] - */ - public function getParameters() - { - return $this->params; - } - - /** - * Get the value of this header prepared for rendering. - * - * @return string - */ - public function getFieldBody() //TODO: Check caching here - { - $body = parent::getFieldBody(); - foreach ($this->params as $name => $value) { - if (null !== $value) { - // Add the parameter - $body .= '; '.$this->createParameter($name, $value); - } - } - - return $body; - } - - /** - * Generate a list of all tokens in the final header. - * - * This doesn't need to be overridden in theory, but it is for implementation - * reasons to prevent potential breakage of attributes. - * - * @param string $string The string to tokenize - * - * @return array An array of tokens as strings - */ - protected function toTokens($string = null) - { - $tokens = parent::toTokens(parent::getFieldBody()); - - // Try creating any parameters - foreach ($this->params as $name => $value) { - if (null !== $value) { - // Add the semi-colon separator - $tokens[\count($tokens) - 1] .= ';'; - $tokens = array_merge($tokens, $this->generateTokenLines( - ' '.$this->createParameter($name, $value) - )); - } - } - - return $tokens; - } - - /** - * Render a RFC 2047 compliant header parameter from the $name and $value. - * - * @param string $name - * @param string $value - * - * @return string - */ - private function createParameter($name, $value) - { - $origValue = $value; - - $encoded = false; - // Allow room for parameter name, indices, "=" and DQUOTEs - $maxValueLength = $this->getMaxLineLength() - \strlen($name.'=*N"";') - 1; - $firstLineOffset = 0; - - // If it's not already a valid parameter value... - if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) { - // TODO: text, or something else?? - // ... and it's not ascii - if (!preg_match('/^[\x00-\x08\x0B\x0C\x0E-\x7F]*$/D', $value)) { - $encoded = true; - // Allow space for the indices, charset and language - $maxValueLength = $this->getMaxLineLength() - \strlen($name.'*N*="";') - 1; - $firstLineOffset = \strlen( - $this->getCharset()."'".$this->getLanguage()."'" - ); - } - } - - // Encode if we need to - if ($encoded || \strlen($value) > $maxValueLength) { - if (isset($this->paramEncoder)) { - $value = $this->paramEncoder->encodeString( - $origValue, $firstLineOffset, $maxValueLength, $this->getCharset() - ); - } else { - // We have to go against RFC 2183/2231 in some areas for interoperability - $value = $this->getTokenAsEncodedWord($origValue); - $encoded = false; - } - } - - $valueLines = isset($this->paramEncoder) ? explode("\r\n", $value) : [$value]; - - // Need to add indices - if (\count($valueLines) > 1) { - $paramLines = []; - foreach ($valueLines as $i => $line) { - $paramLines[] = $name.'*'.$i. - $this->getEndOfParameterValue($line, true, 0 == $i); - } - - return implode(";\r\n ", $paramLines); - } else { - return $name.$this->getEndOfParameterValue( - $valueLines[0], $encoded, true - ); - } - } - - /** - * Returns the parameter value from the "=" and beyond. - * - * @param string $value to append - * @param bool $encoded - * @param bool $firstLine - * - * @return string - */ - private function getEndOfParameterValue($value, $encoded = false, $firstLine = false) - { - if (!preg_match('/^'.self::TOKEN_REGEX.'$/D', $value)) { - $value = '"'.$value.'"'; - } - $prepend = '='; - if ($encoded) { - $prepend = '*='; - if ($firstLine) { - $prepend = '*='.$this->getCharset()."'".$this->getLanguage(). - "'"; - } - } - - return $prepend.$value; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php deleted file mode 100644 index 81b421ee7..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/PathHeader.php +++ /dev/null @@ -1,153 +0,0 @@ -setFieldName($name); - $this->emailValidator = $emailValidator; - $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder(); - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_PATH; - } - - /** - * Set the model for the field body. - * This method takes a string for an address. - * - * @param string $model - * - * @throws Swift_RfcComplianceException - */ - public function setFieldBodyModel($model) - { - $this->setAddress($model); - } - - /** - * Get the model for the field body. - * This method returns a string email address. - * - * @return mixed - */ - public function getFieldBodyModel() - { - return $this->getAddress(); - } - - /** - * Set the Address which should appear in this Header. - * - * @param string $address - * - * @throws Swift_RfcComplianceException - */ - public function setAddress($address) - { - if (null === $address) { - $this->address = null; - } elseif ('' == $address) { - $this->address = ''; - } else { - $this->assertValidAddress($address); - $this->address = $address; - } - $this->setCachedValue(null); - } - - /** - * Get the address which is used in this Header (if any). - * - * Null is returned if no address is set. - * - * @return string - */ - public function getAddress() - { - return $this->address; - } - - /** - * Get the string value of the body in this Header. - * - * This is not necessarily RFC 2822 compliant since folding white space will - * not be added at this stage (see {@link toString()} for that). - * - * @see toString() - * - * @return string - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) { - if (isset($this->address)) { - $address = $this->addressEncoder->encodeString($this->address); - $this->setCachedValue('<'.$address.'>'); - } - } - - return $this->getCachedValue(); - } - - /** - * Throws an Exception if the address passed does not comply with RFC 2822. - * - * @param string $address - * - * @throws Swift_RfcComplianceException If address is invalid - */ - private function assertValidAddress($address) - { - if (!$this->emailValidator->isValid($address, new RFCValidation())) { - throw new Swift_RfcComplianceException('Address set in PathHeader does not comply with addr-spec of RFC 2822.'); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php deleted file mode 100644 index 64f160dec..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/Headers/UnstructuredHeader.php +++ /dev/null @@ -1,109 +0,0 @@ -setFieldName($name); - $this->setEncoder($encoder); - } - - /** - * Get the type of Header that this instance represents. - * - * @see TYPE_TEXT, TYPE_PARAMETERIZED, TYPE_MAILBOX - * @see TYPE_DATE, TYPE_ID, TYPE_PATH - * - * @return int - */ - public function getFieldType() - { - return self::TYPE_TEXT; - } - - /** - * Set the model for the field body. - * - * This method takes a string for the field value. - * - * @param string $model - */ - public function setFieldBodyModel($model) - { - $this->setValue($model); - } - - /** - * Get the model for the field body. - * - * This method returns a string. - * - * @return string - */ - public function getFieldBodyModel() - { - return $this->getValue(); - } - - /** - * Get the (unencoded) value of this header. - * - * @return string - */ - public function getValue() - { - return $this->value; - } - - /** - * Set the (unencoded) value of this header. - * - * @param string $value - */ - public function setValue($value) - { - $this->clearCachedValueIf($this->value != $value); - $this->value = $value; - } - - /** - * Get the value of this header prepared for rendering. - * - * @return string - */ - public function getFieldBody() - { - if (!$this->getCachedValue()) { - $this->setCachedValue( - $this->encodeWords($this, $this->value) - ); - } - - return $this->getCachedValue(); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/IdGenerator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/IdGenerator.php deleted file mode 100644 index 3ce35f27c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/IdGenerator.php +++ /dev/null @@ -1,54 +0,0 @@ -idRight = $idRight; - } - - /** - * Returns the right-hand side of the "@" used in all generated IDs. - * - * @return string - */ - public function getIdRight() - { - return $this->idRight; - } - - /** - * Sets the right-hand side of the "@" to use in all generated IDs. - * - * @param string $idRight - */ - public function setIdRight($idRight) - { - $this->idRight = $idRight; - } - - /** - * @return string - */ - public function generateId() - { - // 32 hex values for the left part - return bin2hex(random_bytes(16)).'@'.$this->idRight; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/MimePart.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/MimePart.php deleted file mode 100644 index d0b2e6586..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/MimePart.php +++ /dev/null @@ -1,199 +0,0 @@ -setContentType('text/plain'); - if (null !== $charset) { - $this->setCharset($charset); - } - } - - /** - * Set the body of this entity, either as a string, or as an instance of - * {@link Swift_OutputByteStream}. - * - * @param mixed $body - * @param string $contentType optional - * @param string $charset optional - * - * @return $this - */ - public function setBody($body, $contentType = null, $charset = null) - { - if (isset($charset)) { - $this->setCharset($charset); - } - $body = $this->convertString($body); - - parent::setBody($body, $contentType); - - return $this; - } - - /** - * Get the character set of this entity. - * - * @return string - */ - public function getCharset() - { - return $this->getHeaderParameter('Content-Type', 'charset'); - } - - /** - * Set the character set of this entity. - * - * @param string $charset - * - * @return $this - */ - public function setCharset($charset) - { - $this->setHeaderParameter('Content-Type', 'charset', $charset); - if ($charset !== $this->userCharset) { - $this->clearCache(); - } - $this->userCharset = $charset; - parent::charsetChanged($charset); - - return $this; - } - - /** - * Get the format of this entity (i.e. flowed or fixed). - * - * @return string - */ - public function getFormat() - { - return $this->getHeaderParameter('Content-Type', 'format'); - } - - /** - * Set the format of this entity (flowed or fixed). - * - * @param string $format - * - * @return $this - */ - public function setFormat($format) - { - $this->setHeaderParameter('Content-Type', 'format', $format); - $this->userFormat = $format; - - return $this; - } - - /** - * Test if delsp is being used for this entity. - * - * @return bool - */ - public function getDelSp() - { - return 'yes' === $this->getHeaderParameter('Content-Type', 'delsp'); - } - - /** - * Turn delsp on or off for this entity. - * - * @param bool $delsp - * - * @return $this - */ - public function setDelSp($delsp = true) - { - $this->setHeaderParameter('Content-Type', 'delsp', $delsp ? 'yes' : null); - $this->userDelSp = $delsp; - - return $this; - } - - /** - * Get the nesting level of this entity. - * - * @see LEVEL_TOP, LEVEL_ALTERNATIVE, LEVEL_MIXED, LEVEL_RELATED - * - * @return int - */ - public function getNestingLevel() - { - return $this->nestingLevel; - } - - /** - * Receive notification that the charset has changed on this document, or a - * parent document. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->setCharset($charset); - } - - /** Fix the content-type and encoding of this entity */ - protected function fixHeaders() - { - parent::fixHeaders(); - if (\count($this->getChildren())) { - $this->setHeaderParameter('Content-Type', 'charset', null); - $this->setHeaderParameter('Content-Type', 'format', null); - $this->setHeaderParameter('Content-Type', 'delsp', null); - } else { - $this->setCharset($this->userCharset); - $this->setFormat($this->userFormat); - $this->setDelSp($this->userDelSp); - } - } - - /** Set the nesting level of this entity */ - protected function setNestingLevel($level) - { - $this->nestingLevel = $level; - } - - /** Encode charset when charset is not utf-8 */ - protected function convertString($string) - { - $charset = strtolower($this->getCharset() ?? ''); - if (!\in_array($charset, ['utf-8', 'iso-8859-1', 'iso-8859-15', ''])) { - return mb_convert_encoding($string, $charset, 'utf-8'); - } - - return $string; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php deleted file mode 100644 index ab3ce6b19..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderFactory.php +++ /dev/null @@ -1,195 +0,0 @@ -encoder = $encoder; - $this->paramEncoder = $paramEncoder; - $this->emailValidator = $emailValidator; - $this->charset = $charset; - $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder(); - } - - /** - * Create a new Mailbox Header with a list of $addresses. - * - * @param string $name - * @param array|string|null $addresses - * - * @return Swift_Mime_Header - */ - public function createMailboxHeader($name, $addresses = null) - { - $header = new Swift_Mime_Headers_MailboxHeader($name, $this->encoder, $this->emailValidator, $this->addressEncoder); - if (isset($addresses)) { - $header->setFieldBodyModel($addresses); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Create a new Date header using $dateTime. - * - * @param string $name - * - * @return Swift_Mime_Header - */ - public function createDateHeader($name, DateTimeInterface $dateTime = null) - { - $header = new Swift_Mime_Headers_DateHeader($name); - if (isset($dateTime)) { - $header->setFieldBodyModel($dateTime); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Create a new basic text header with $name and $value. - * - * @param string $name - * @param string $value - * - * @return Swift_Mime_Header - */ - public function createTextHeader($name, $value = null) - { - $header = new Swift_Mime_Headers_UnstructuredHeader($name, $this->encoder); - if (isset($value)) { - $header->setFieldBodyModel($value); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Create a new ParameterizedHeader with $name, $value and $params. - * - * @param string $name - * @param string $value - * @param array $params - * - * @return Swift_Mime_Headers_ParameterizedHeader - */ - public function createParameterizedHeader($name, $value = null, $params = []) - { - $header = new Swift_Mime_Headers_ParameterizedHeader($name, $this->encoder, ('content-disposition' == strtolower($name ?? '')) ? $this->paramEncoder : null); - if (isset($value)) { - $header->setFieldBodyModel($value); - } - foreach ($params as $k => $v) { - $header->setParameter($k, $v); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Create a new ID header for Message-ID or Content-ID. - * - * @param string $name - * @param string|array $ids - * - * @return Swift_Mime_Header - */ - public function createIdHeader($name, $ids = null) - { - $header = new Swift_Mime_Headers_IdentificationHeader($name, $this->emailValidator); - if (isset($ids)) { - $header->setFieldBodyModel($ids); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Create a new Path header with an address (path) in it. - * - * @param string $name - * @param string $path - * - * @return Swift_Mime_Header - */ - public function createPathHeader($name, $path = null) - { - $header = new Swift_Mime_Headers_PathHeader($name, $this->emailValidator); - if (isset($path)) { - $header->setFieldBodyModel($path); - } - $this->setHeaderCharset($header); - - return $header; - } - - /** - * Notify this observer that the entity's charset has changed. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->charset = $charset; - $this->encoder->charsetChanged($charset); - $this->paramEncoder->charsetChanged($charset); - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->encoder = clone $this->encoder; - $this->paramEncoder = clone $this->paramEncoder; - $this->addressEncoder = clone $this->addressEncoder; - } - - /** Apply the charset to the Header */ - private function setHeaderCharset(Swift_Mime_Header $header) - { - if (isset($this->charset)) { - $header->setCharset($this->charset); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php deleted file mode 100644 index 5195bcf48..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleHeaderSet.php +++ /dev/null @@ -1,399 +0,0 @@ -factory = $factory; - if (isset($charset)) { - $this->setCharset($charset); - } - } - - public function newInstance() - { - return new self($this->factory); - } - - /** - * Set the charset used by these headers. - * - * @param string $charset - */ - public function setCharset($charset) - { - $this->charset = $charset; - $this->factory->charsetChanged($charset); - $this->notifyHeadersOfCharset($charset); - } - - /** - * Add a new Mailbox Header with a list of $addresses. - * - * @param string $name - * @param array|string $addresses - */ - public function addMailboxHeader($name, $addresses = null) - { - $this->storeHeader($name, $this->factory->createMailboxHeader($name, $addresses)); - } - - /** - * Add a new Date header using $dateTime. - * - * @param string $name - */ - public function addDateHeader($name, DateTimeInterface $dateTime = null) - { - $this->storeHeader($name, $this->factory->createDateHeader($name, $dateTime)); - } - - /** - * Add a new basic text header with $name and $value. - * - * @param string $name - * @param string $value - */ - public function addTextHeader($name, $value = null) - { - $this->storeHeader($name, $this->factory->createTextHeader($name, $value)); - } - - /** - * Add a new ParameterizedHeader with $name, $value and $params. - * - * @param string $name - * @param string $value - * @param array $params - */ - public function addParameterizedHeader($name, $value = null, $params = []) - { - $this->storeHeader($name, $this->factory->createParameterizedHeader($name, $value, $params)); - } - - /** - * Add a new ID header for Message-ID or Content-ID. - * - * @param string $name - * @param string|array $ids - */ - public function addIdHeader($name, $ids = null) - { - $this->storeHeader($name, $this->factory->createIdHeader($name, $ids)); - } - - /** - * Add a new Path header with an address (path) in it. - * - * @param string $name - * @param string $path - */ - public function addPathHeader($name, $path = null) - { - $this->storeHeader($name, $this->factory->createPathHeader($name, $path)); - } - - /** - * Returns true if at least one header with the given $name exists. - * - * If multiple headers match, the actual one may be specified by $index. - * - * @param string $name - * @param int $index - * - * @return bool - */ - public function has($name, $index = 0) - { - $lowerName = strtolower($name ?? ''); - - if (!\array_key_exists($lowerName, $this->headers)) { - return false; - } - - if (\func_num_args() < 2) { - // index was not specified, so we only need to check that there is at least one header value set - return (bool) \count($this->headers[$lowerName]); - } - - return \array_key_exists($index, $this->headers[$lowerName]); - } - - /** - * Set a header in the HeaderSet. - * - * The header may be a previously fetched header via {@link get()} or it may - * be one that has been created separately. - * - * If $index is specified, the header will be inserted into the set at this - * offset. - * - * @param int $index - */ - public function set(Swift_Mime_Header $header, $index = 0) - { - $this->storeHeader($header->getFieldName(), $header, $index); - } - - /** - * Get the header with the given $name. - * - * If multiple headers match, the actual one may be specified by $index. - * Returns NULL if none present. - * - * @param string $name - * @param int $index - * - * @return Swift_Mime_Header|null - */ - public function get($name, $index = 0) - { - $name = strtolower($name ?? ''); - - if (\func_num_args() < 2) { - if ($this->has($name)) { - $values = array_values($this->headers[$name]); - - return array_shift($values); - } - } else { - if ($this->has($name, $index)) { - return $this->headers[$name][$index]; - } - } - } - - /** - * Get all headers with the given $name. - * - * @param string $name - * - * @return array - */ - public function getAll($name = null) - { - if (!isset($name)) { - $headers = []; - foreach ($this->headers as $collection) { - $headers = array_merge($headers, $collection); - } - - return $headers; - } - - $lowerName = strtolower($name ?? ''); - if (!\array_key_exists($lowerName, $this->headers)) { - return []; - } - - return $this->headers[$lowerName]; - } - - /** - * Return the name of all Headers. - * - * @return array - */ - public function listAll() - { - $headers = $this->headers; - if ($this->canSort()) { - uksort($headers, [$this, 'sortHeaders']); - } - - return array_keys($headers); - } - - /** - * Remove the header with the given $name if it's set. - * - * If multiple headers match, the actual one may be specified by $index. - * - * @param string $name - * @param int $index - */ - public function remove($name, $index = 0) - { - $lowerName = strtolower($name ?? ''); - unset($this->headers[$lowerName][$index]); - } - - /** - * Remove all headers with the given $name. - * - * @param string $name - */ - public function removeAll($name) - { - $lowerName = strtolower($name ?? ''); - unset($this->headers[$lowerName]); - } - - /** - * Define a list of Header names as an array in the correct order. - * - * These Headers will be output in the given order where present. - */ - public function defineOrdering(array $sequence) - { - $this->order = array_flip(array_map('strtolower', $sequence)); - } - - /** - * Set a list of header names which must always be displayed when set. - * - * Usually headers without a field value won't be output unless set here. - */ - public function setAlwaysDisplayed(array $names) - { - $this->required = array_flip(array_map('strtolower', $names)); - } - - /** - * Notify this observer that the entity's charset has changed. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->setCharset($charset); - } - - /** - * Returns a string with a representation of all headers. - * - * @return string - */ - public function toString() - { - $string = ''; - $headers = $this->headers; - if ($this->canSort()) { - uksort($headers, [$this, 'sortHeaders']); - } - foreach ($headers as $collection) { - foreach ($collection as $header) { - if ($this->isDisplayed($header) || '' != $header->getFieldBody()) { - $string .= $header->toString(); - } - } - } - - return $string; - } - - /** - * Returns a string representation of this object. - * - * @return string - * - * @see toString() - */ - public function __toString() - { - return $this->toString(); - } - - /** Save a Header to the internal collection */ - private function storeHeader($name, Swift_Mime_Header $header, $offset = null) - { - if (!isset($this->headers[strtolower($name ?? '')])) { - $this->headers[strtolower($name ?? '')] = []; - } - if (!isset($offset)) { - $this->headers[strtolower($name ?? '')][] = $header; - } else { - $this->headers[strtolower($name ?? '')][$offset] = $header; - } - } - - /** Test if the headers can be sorted */ - private function canSort() - { - return \count($this->order) > 0; - } - - /** uksort() algorithm for Header ordering */ - private function sortHeaders($a, $b) - { - $lowerA = strtolower($a ?? ''); - $lowerB = strtolower($b ?? ''); - $aPos = \array_key_exists($lowerA, $this->order) ? $this->order[$lowerA] : -1; - $bPos = \array_key_exists($lowerB, $this->order) ? $this->order[$lowerB] : -1; - - if (-1 === $aPos && -1 === $bPos) { - // just be sure to be determinist here - return $a > $b ? -1 : 1; - } - - if (-1 == $aPos) { - return 1; - } elseif (-1 == $bPos) { - return -1; - } - - return $aPos < $bPos ? -1 : 1; - } - - /** Test if the given Header is always displayed */ - private function isDisplayed(Swift_Mime_Header $header) - { - return \array_key_exists(strtolower($header->getFieldName() ?? ''), $this->required); - } - - /** Notify all Headers of the new charset */ - private function notifyHeadersOfCharset($charset) - { - foreach ($this->headers as $headerGroup) { - foreach ($headerGroup as $header) { - $header->setCharset($charset); - } - } - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->factory = clone $this->factory; - foreach ($this->headers as $groupKey => $headerGroup) { - foreach ($headerGroup as $key => $header) { - $this->headers[$groupKey][$key] = clone $header; - } - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php deleted file mode 100644 index 62da1650a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMessage.php +++ /dev/null @@ -1,642 +0,0 @@ -getHeaders()->defineOrdering([ - 'Return-Path', - 'Received', - 'DKIM-Signature', - 'DomainKey-Signature', - 'Sender', - 'Message-ID', - 'Date', - 'Subject', - 'From', - 'Reply-To', - 'To', - 'Cc', - 'Bcc', - 'MIME-Version', - 'Content-Type', - 'Content-Transfer-Encoding', - ]); - $this->getHeaders()->setAlwaysDisplayed(['Date', 'Message-ID', 'From']); - $this->getHeaders()->addTextHeader('MIME-Version', '1.0'); - $this->setDate(new DateTimeImmutable()); - $this->setId($this->getId()); - $this->getHeaders()->addMailboxHeader('From'); - } - - /** - * Always returns {@link LEVEL_TOP} for a message instance. - * - * @return int - */ - public function getNestingLevel() - { - return self::LEVEL_TOP; - } - - /** - * Set the subject of this message. - * - * @param string $subject - * - * @return $this - */ - public function setSubject($subject) - { - if (!$this->setHeaderFieldModel('Subject', $subject)) { - $this->getHeaders()->addTextHeader('Subject', $subject); - } - - return $this; - } - - /** - * Get the subject of this message. - * - * @return string - */ - public function getSubject() - { - return $this->getHeaderFieldModel('Subject'); - } - - /** - * Set the date at which this message was created. - * - * @return $this - */ - public function setDate(DateTimeInterface $dateTime) - { - if (!$this->setHeaderFieldModel('Date', $dateTime)) { - $this->getHeaders()->addDateHeader('Date', $dateTime); - } - - return $this; - } - - /** - * Get the date at which this message was created. - * - * @return DateTimeInterface - */ - public function getDate() - { - return $this->getHeaderFieldModel('Date'); - } - - /** - * Set the return-path (the bounce address) of this message. - * - * @param string $address - * - * @return $this - */ - public function setReturnPath($address) - { - if (!$this->setHeaderFieldModel('Return-Path', $address)) { - $this->getHeaders()->addPathHeader('Return-Path', $address); - } - - return $this; - } - - /** - * Get the return-path (bounce address) of this message. - * - * @return string - */ - public function getReturnPath() - { - return $this->getHeaderFieldModel('Return-Path'); - } - - /** - * Set the sender of this message. - * - * This does not override the From field, but it has a higher significance. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function setSender($address, $name = null) - { - if (!\is_array($address) && isset($name)) { - $address = [$address => $name]; - } - - if (!$this->setHeaderFieldModel('Sender', (array) $address)) { - $this->getHeaders()->addMailboxHeader('Sender', (array) $address); - } - - return $this; - } - - /** - * Get the sender of this message. - * - * @return string - */ - public function getSender() - { - return $this->getHeaderFieldModel('Sender'); - } - - /** - * Add a From: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function addFrom($address, $name = null) - { - $current = $this->getFrom(); - $current[$address] = $name; - - return $this->setFrom($current); - } - - /** - * Set the from address of this message. - * - * You may pass an array of addresses if this message is from multiple people. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param string|array $addresses - * @param string $name optional - * - * @return $this - */ - public function setFrom($addresses, $name = null) - { - if (!\is_array($addresses) && isset($name)) { - $addresses = [$addresses => $name]; - } - - if (!$this->setHeaderFieldModel('From', (array) $addresses)) { - $this->getHeaders()->addMailboxHeader('From', (array) $addresses); - } - - return $this; - } - - /** - * Get the from address of this message. - * - * @return mixed - */ - public function getFrom() - { - return $this->getHeaderFieldModel('From'); - } - - /** - * Add a Reply-To: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function addReplyTo($address, $name = null) - { - $current = $this->getReplyTo(); - $current[$address] = $name; - - return $this->setReplyTo($current); - } - - /** - * Set the reply-to address of this message. - * - * You may pass an array of addresses if replies will go to multiple people. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param mixed $addresses - * @param string $name optional - * - * @return $this - */ - public function setReplyTo($addresses, $name = null) - { - if (!\is_array($addresses) && isset($name)) { - $addresses = [$addresses => $name]; - } - - if (!$this->setHeaderFieldModel('Reply-To', (array) $addresses)) { - $this->getHeaders()->addMailboxHeader('Reply-To', (array) $addresses); - } - - return $this; - } - - /** - * Get the reply-to address of this message. - * - * @return string - */ - public function getReplyTo() - { - return $this->getHeaderFieldModel('Reply-To'); - } - - /** - * Add a To: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function addTo($address, $name = null) - { - $current = $this->getTo(); - $current[$address] = $name; - - return $this->setTo($current); - } - - /** - * Set the to addresses of this message. - * - * If multiple recipients will receive the message an array should be used. - * Example: array('receiver@domain.org', 'other@domain.org' => 'A name') - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param mixed $addresses - * @param string $name optional - * - * @return $this - */ - public function setTo($addresses, $name = null) - { - if (!\is_array($addresses) && isset($name)) { - $addresses = [$addresses => $name]; - } - - if (!$this->setHeaderFieldModel('To', (array) $addresses)) { - $this->getHeaders()->addMailboxHeader('To', (array) $addresses); - } - - return $this; - } - - /** - * Get the To addresses of this message. - * - * @return array - */ - public function getTo() - { - return $this->getHeaderFieldModel('To'); - } - - /** - * Add a Cc: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function addCc($address, $name = null) - { - $current = $this->getCc(); - $current[$address] = $name; - - return $this->setCc($current); - } - - /** - * Set the Cc addresses of this message. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param mixed $addresses - * @param string $name optional - * - * @return $this - */ - public function setCc($addresses, $name = null) - { - if (!\is_array($addresses) && isset($name)) { - $addresses = [$addresses => $name]; - } - - if (!$this->setHeaderFieldModel('Cc', (array) $addresses)) { - $this->getHeaders()->addMailboxHeader('Cc', (array) $addresses); - } - - return $this; - } - - /** - * Get the Cc address of this message. - * - * @return array - */ - public function getCc() - { - return $this->getHeaderFieldModel('Cc'); - } - - /** - * Add a Bcc: address to this message. - * - * If $name is passed this name will be associated with the address. - * - * @param string $address - * @param string $name optional - * - * @return $this - */ - public function addBcc($address, $name = null) - { - $current = $this->getBcc(); - $current[$address] = $name; - - return $this->setBcc($current); - } - - /** - * Set the Bcc addresses of this message. - * - * If $name is passed and the first parameter is a string, this name will be - * associated with the address. - * - * @param mixed $addresses - * @param string $name optional - * - * @return $this - */ - public function setBcc($addresses, $name = null) - { - if (!\is_array($addresses) && isset($name)) { - $addresses = [$addresses => $name]; - } - - if (!$this->setHeaderFieldModel('Bcc', (array) $addresses)) { - $this->getHeaders()->addMailboxHeader('Bcc', (array) $addresses); - } - - return $this; - } - - /** - * Get the Bcc addresses of this message. - * - * @return array - */ - public function getBcc() - { - return $this->getHeaderFieldModel('Bcc'); - } - - /** - * Set the priority of this message. - * - * The value is an integer where 1 is the highest priority and 5 is the lowest. - * - * @param int $priority - * - * @return $this - */ - public function setPriority($priority) - { - $priorityMap = [ - self::PRIORITY_HIGHEST => 'Highest', - self::PRIORITY_HIGH => 'High', - self::PRIORITY_NORMAL => 'Normal', - self::PRIORITY_LOW => 'Low', - self::PRIORITY_LOWEST => 'Lowest', - ]; - $pMapKeys = array_keys($priorityMap); - if ($priority > max($pMapKeys)) { - $priority = max($pMapKeys); - } elseif ($priority < min($pMapKeys)) { - $priority = min($pMapKeys); - } - if (!$this->setHeaderFieldModel('X-Priority', - sprintf('%d (%s)', $priority, $priorityMap[$priority]))) { - $this->getHeaders()->addTextHeader('X-Priority', - sprintf('%d (%s)', $priority, $priorityMap[$priority])); - } - - return $this; - } - - /** - * Get the priority of this message. - * - * The returned value is an integer where 1 is the highest priority and 5 - * is the lowest. - * - * @return int - */ - public function getPriority() - { - list($priority) = sscanf($this->getHeaderFieldModel('X-Priority'), - '%[1-5]' - ); - - return $priority ?? 3; - } - - /** - * Ask for a delivery receipt from the recipient to be sent to $addresses. - * - * @param array $addresses - * - * @return $this - */ - public function setReadReceiptTo($addresses) - { - if (!$this->setHeaderFieldModel('Disposition-Notification-To', $addresses)) { - $this->getHeaders() - ->addMailboxHeader('Disposition-Notification-To', $addresses); - } - - return $this; - } - - /** - * Get the addresses to which a read-receipt will be sent. - * - * @return string - */ - public function getReadReceiptTo() - { - return $this->getHeaderFieldModel('Disposition-Notification-To'); - } - - /** - * Attach a {@link Swift_Mime_SimpleMimeEntity} such as an Attachment or MimePart. - * - * @return $this - */ - public function attach(Swift_Mime_SimpleMimeEntity $entity) - { - $this->setChildren(array_merge($this->getChildren(), [$entity])); - - return $this; - } - - /** - * Remove an already attached entity. - * - * @return $this - */ - public function detach(Swift_Mime_SimpleMimeEntity $entity) - { - $newChildren = []; - foreach ($this->getChildren() as $child) { - if ($entity !== $child) { - $newChildren[] = $child; - } - } - $this->setChildren($newChildren); - - return $this; - } - - /** - * Attach a {@link Swift_Mime_SimpleMimeEntity} and return it's CID source. - * - * This method should be used when embedding images or other data in a message. - * - * @return string - */ - public function embed(Swift_Mime_SimpleMimeEntity $entity) - { - $this->attach($entity); - - return 'cid:'.$entity->getId(); - } - - /** - * Get this message as a complete string. - * - * @return string - */ - public function toString() - { - if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) { - $this->setChildren(array_merge([$this->becomeMimePart()], $children)); - $string = parent::toString(); - $this->setChildren($children); - } else { - $string = parent::toString(); - } - - return $string; - } - - /** - * Returns a string representation of this object. - * - * @see toString() - * - * @return string - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Write this message to a {@link Swift_InputByteStream}. - */ - public function toByteStream(Swift_InputByteStream $is) - { - if (\count($children = $this->getChildren()) > 0 && '' != $this->getBody()) { - $this->setChildren(array_merge([$this->becomeMimePart()], $children)); - parent::toByteStream($is); - $this->setChildren($children); - } else { - parent::toByteStream($is); - } - } - - /** @see Swift_Mime_SimpleMimeEntity::getIdField() */ - protected function getIdField() - { - return 'Message-ID'; - } - - /** Turn the body of this message into a child of itself if needed */ - protected function becomeMimePart() - { - $part = new parent($this->getHeaders()->newInstance(), $this->getEncoder(), - $this->getCache(), $this->getIdGenerator(), $this->userCharset - ); - $part->setContentType($this->userContentType); - $part->setBody($this->getBody()); - $part->setFormat($this->userFormat); - $part->setDelSp($this->userDelSp); - $part->setNestingLevel($this->getTopNestingLevel()); - - return $part; - } - - /** Get the highest nesting level nested inside this message */ - private function getTopNestingLevel() - { - $highestLevel = $this->getNestingLevel(); - foreach ($this->getChildren() as $child) { - $childLevel = $child->getNestingLevel(); - if ($highestLevel < $childLevel) { - $highestLevel = $childLevel; - } - } - - return $highestLevel; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php b/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php deleted file mode 100644 index 03eaf472d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Mime/SimpleMimeEntity.php +++ /dev/null @@ -1,826 +0,0 @@ - [self::LEVEL_TOP, self::LEVEL_MIXED], - 'multipart/alternative' => [self::LEVEL_MIXED, self::LEVEL_ALTERNATIVE], - 'multipart/related' => [self::LEVEL_ALTERNATIVE, self::LEVEL_RELATED], - ]; - - /** A set of filter rules to define what level an entity should be nested at */ - private $compoundLevelFilters = []; - - /** The nesting level of this entity */ - private $nestingLevel = self::LEVEL_ALTERNATIVE; - - /** A KeyCache instance used during encoding and streaming */ - private $cache; - - /** Direct descendants of this entity */ - private $immediateChildren = []; - - /** All descendants of this entity */ - private $children = []; - - /** The maximum line length of the body of this entity */ - private $maxLineLength = 78; - - /** The order in which alternative mime types should appear */ - private $alternativePartOrder = [ - 'text/plain' => 1, - 'text/html' => 2, - 'multipart/related' => 3, - ]; - - /** The CID of this entity */ - private $id; - - /** The key used for accessing the cache */ - private $cacheKey; - - protected $userContentType; - - /** - * Create a new SimpleMimeEntity with $headers, $encoder and $cache. - */ - public function __construct(Swift_Mime_SimpleHeaderSet $headers, Swift_Mime_ContentEncoder $encoder, Swift_KeyCache $cache, Swift_IdGenerator $idGenerator) - { - $this->cacheKey = bin2hex(random_bytes(16)); // set 32 hex values - $this->cache = $cache; - $this->headers = $headers; - $this->idGenerator = $idGenerator; - $this->setEncoder($encoder); - $this->headers->defineOrdering(['Content-Type', 'Content-Transfer-Encoding']); - - // This array specifies that, when the entire MIME document contains - // $compoundLevel, then for each child within $level, if its Content-Type - // is $contentType then it should be treated as if it's level is - // $neededLevel instead. I tried to write that unambiguously! :-\ - // Data Structure: - // array ( - // $compoundLevel => array( - // $level => array( - // $contentType => $neededLevel - // ) - // ) - // ) - - $this->compoundLevelFilters = [ - (self::LEVEL_ALTERNATIVE + self::LEVEL_RELATED) => [ - self::LEVEL_ALTERNATIVE => [ - 'text/plain' => self::LEVEL_ALTERNATIVE, - 'text/html' => self::LEVEL_RELATED, - ], - ], - ]; - - $this->id = $this->idGenerator->generateId(); - } - - /** - * Generate a new Content-ID or Message-ID for this MIME entity. - * - * @return string - */ - public function generateId() - { - $this->setId($this->idGenerator->generateId()); - - return $this->id; - } - - /** - * Get the {@link Swift_Mime_SimpleHeaderSet} for this entity. - * - * @return Swift_Mime_SimpleHeaderSet - */ - public function getHeaders() - { - return $this->headers; - } - - /** - * Get the nesting level of this entity. - * - * @see LEVEL_TOP, LEVEL_MIXED, LEVEL_RELATED, LEVEL_ALTERNATIVE - * - * @return int - */ - public function getNestingLevel() - { - return $this->nestingLevel; - } - - /** - * Get the Content-type of this entity. - * - * @return string - */ - public function getContentType() - { - return $this->getHeaderFieldModel('Content-Type'); - } - - /** - * Get the Body Content-type of this entity. - * - * @return string - */ - public function getBodyContentType() - { - return $this->userContentType; - } - - /** - * Set the Content-type of this entity. - * - * @param string $type - * - * @return $this - */ - public function setContentType($type) - { - $this->setContentTypeInHeaders($type); - // Keep track of the value so that if the content-type changes automatically - // due to added child entities, it can be restored if they are later removed - $this->userContentType = $type; - - return $this; - } - - /** - * Get the CID of this entity. - * - * The CID will only be present in headers if a Content-ID header is present. - * - * @return string - */ - public function getId() - { - $tmp = (array) $this->getHeaderFieldModel($this->getIdField()); - - return $this->headers->has($this->getIdField()) ? current($tmp) : $this->id; - } - - /** - * Set the CID of this entity. - * - * @param string $id - * - * @return $this - */ - public function setId($id) - { - if (!$this->setHeaderFieldModel($this->getIdField(), $id)) { - $this->headers->addIdHeader($this->getIdField(), $id); - } - $this->id = $id; - - return $this; - } - - /** - * Get the description of this entity. - * - * This value comes from the Content-Description header if set. - * - * @return string - */ - public function getDescription() - { - return $this->getHeaderFieldModel('Content-Description'); - } - - /** - * Set the description of this entity. - * - * This method sets a value in the Content-ID header. - * - * @param string $description - * - * @return $this - */ - public function setDescription($description) - { - if (!$this->setHeaderFieldModel('Content-Description', $description)) { - $this->headers->addTextHeader('Content-Description', $description); - } - - return $this; - } - - /** - * Get the maximum line length of the body of this entity. - * - * @return int - */ - public function getMaxLineLength() - { - return $this->maxLineLength; - } - - /** - * Set the maximum line length of lines in this body. - * - * Though not enforced by the library, lines should not exceed 1000 chars. - * - * @param int $length - * - * @return $this - */ - public function setMaxLineLength($length) - { - $this->maxLineLength = $length; - - return $this; - } - - /** - * Get all children added to this entity. - * - * @return Swift_Mime_SimpleMimeEntity[] - */ - public function getChildren() - { - return $this->children; - } - - /** - * Set all children of this entity. - * - * @param Swift_Mime_SimpleMimeEntity[] $children - * @param int $compoundLevel For internal use only - * - * @return $this - */ - public function setChildren(array $children, $compoundLevel = null) - { - // TODO: Try to refactor this logic - $compoundLevel = $compoundLevel ?? $this->getCompoundLevel($children); - $immediateChildren = []; - $grandchildren = []; - $newContentType = $this->userContentType; - - foreach ($children as $child) { - $level = $this->getNeededChildLevel($child, $compoundLevel); - if (empty($immediateChildren)) { - //first iteration - $immediateChildren = [$child]; - } else { - $nextLevel = $this->getNeededChildLevel($immediateChildren[0], $compoundLevel); - if ($nextLevel == $level) { - $immediateChildren[] = $child; - } elseif ($level < $nextLevel) { - // Re-assign immediateChildren to grandchildren - $grandchildren = array_merge($grandchildren, $immediateChildren); - // Set new children - $immediateChildren = [$child]; - } else { - $grandchildren[] = $child; - } - } - } - - if ($immediateChildren) { - $lowestLevel = $this->getNeededChildLevel($immediateChildren[0], $compoundLevel); - - // Determine which composite media type is needed to accommodate the - // immediate children - foreach ($this->compositeRanges as $mediaType => $range) { - if ($lowestLevel > $range[0] && $lowestLevel <= $range[1]) { - $newContentType = $mediaType; - - break; - } - } - - // Put any grandchildren in a subpart - if (!empty($grandchildren)) { - $subentity = $this->createChild(); - $subentity->setNestingLevel($lowestLevel); - $subentity->setChildren($grandchildren, $compoundLevel); - array_unshift($immediateChildren, $subentity); - } - } - - $this->immediateChildren = $immediateChildren; - $this->children = $children; - $this->setContentTypeInHeaders($newContentType); - $this->fixHeaders(); - $this->sortChildren(); - - return $this; - } - - /** - * Get the body of this entity as a string. - * - * @return string - */ - public function getBody() - { - return $this->body instanceof Swift_OutputByteStream ? $this->readStream($this->body) : $this->body; - } - - /** - * Set the body of this entity, either as a string, or as an instance of - * {@link Swift_OutputByteStream}. - * - * @param mixed $body - * @param string $contentType optional - * - * @return $this - */ - public function setBody($body, $contentType = null) - { - if ($body !== $this->body) { - $this->clearCache(); - } - - $this->body = $body; - if (null !== $contentType) { - $this->setContentType($contentType); - } - - return $this; - } - - /** - * Get the encoder used for the body of this entity. - * - * @return Swift_Mime_ContentEncoder - */ - public function getEncoder() - { - return $this->encoder; - } - - /** - * Set the encoder used for the body of this entity. - * - * @return $this - */ - public function setEncoder(Swift_Mime_ContentEncoder $encoder) - { - if ($encoder !== $this->encoder) { - $this->clearCache(); - } - - $this->encoder = $encoder; - $this->setEncoding($encoder->getName()); - $this->notifyEncoderChanged($encoder); - - return $this; - } - - /** - * Get the boundary used to separate children in this entity. - * - * @return string - */ - public function getBoundary() - { - if (!isset($this->boundary)) { - $this->boundary = '_=_swift_'.time().'_'.bin2hex(random_bytes(16)).'_=_'; - } - - return $this->boundary; - } - - /** - * Set the boundary used to separate children in this entity. - * - * @param string $boundary - * - * @throws Swift_RfcComplianceException - * - * @return $this - */ - public function setBoundary($boundary) - { - $this->assertValidBoundary($boundary); - $this->boundary = $boundary; - - return $this; - } - - /** - * Receive notification that the charset of this entity, or a parent entity - * has changed. - * - * @param string $charset - */ - public function charsetChanged($charset) - { - $this->notifyCharsetChanged($charset); - } - - /** - * Receive notification that the encoder of this entity or a parent entity - * has changed. - */ - public function encoderChanged(Swift_Mime_ContentEncoder $encoder) - { - $this->notifyEncoderChanged($encoder); - } - - /** - * Get this entire entity as a string. - * - * @return string - */ - public function toString() - { - $string = $this->headers->toString(); - $string .= $this->bodyToString(); - - return $string; - } - - /** - * Get this entire entity as a string. - * - * @return string - */ - protected function bodyToString() - { - $string = ''; - - if (isset($this->body) && empty($this->immediateChildren)) { - if ($this->cache->hasKey($this->cacheKey, 'body')) { - $body = $this->cache->getString($this->cacheKey, 'body'); - } else { - $body = "\r\n".$this->encoder->encodeString($this->getBody(), 0, $this->getMaxLineLength()); - $this->cache->setString($this->cacheKey, 'body', $body, Swift_KeyCache::MODE_WRITE); - } - $string .= $body; - } - - if (!empty($this->immediateChildren)) { - foreach ($this->immediateChildren as $child) { - $string .= "\r\n\r\n--".$this->getBoundary()."\r\n"; - $string .= $child->toString(); - } - $string .= "\r\n\r\n--".$this->getBoundary()."--\r\n"; - } - - return $string; - } - - /** - * Returns a string representation of this object. - * - * @see toString() - * - * @return string - */ - public function __toString() - { - return $this->toString(); - } - - /** - * Write this entire entity to a {@see Swift_InputByteStream}. - */ - public function toByteStream(Swift_InputByteStream $is) - { - $is->write($this->headers->toString()); - $is->commit(); - - $this->bodyToByteStream($is); - } - - /** - * Write this entire entity to a {@link Swift_InputByteStream}. - */ - protected function bodyToByteStream(Swift_InputByteStream $is) - { - if (empty($this->immediateChildren)) { - if (isset($this->body)) { - if ($this->cache->hasKey($this->cacheKey, 'body')) { - $this->cache->exportToByteStream($this->cacheKey, 'body', $is); - } else { - $cacheIs = $this->cache->getInputByteStream($this->cacheKey, 'body'); - if ($cacheIs) { - $is->bind($cacheIs); - } - - $is->write("\r\n"); - - if ($this->body instanceof Swift_OutputByteStream) { - $this->body->setReadPointer(0); - - $this->encoder->encodeByteStream($this->body, $is, 0, $this->getMaxLineLength()); - } else { - $is->write($this->encoder->encodeString($this->getBody(), 0, $this->getMaxLineLength())); - } - - if ($cacheIs) { - $is->unbind($cacheIs); - } - } - } - } - - if (!empty($this->immediateChildren)) { - foreach ($this->immediateChildren as $child) { - $is->write("\r\n\r\n--".$this->getBoundary()."\r\n"); - $child->toByteStream($is); - } - $is->write("\r\n\r\n--".$this->getBoundary()."--\r\n"); - } - } - - /** - * Get the name of the header that provides the ID of this entity. - */ - protected function getIdField() - { - return 'Content-ID'; - } - - /** - * Get the model data (usually an array or a string) for $field. - */ - protected function getHeaderFieldModel($field) - { - if ($this->headers->has($field)) { - return $this->headers->get($field)->getFieldBodyModel(); - } - } - - /** - * Set the model data for $field. - */ - protected function setHeaderFieldModel($field, $model) - { - if ($this->headers->has($field)) { - $this->headers->get($field)->setFieldBodyModel($model); - - return true; - } - - return false; - } - - /** - * Get the parameter value of $parameter on $field header. - */ - protected function getHeaderParameter($field, $parameter) - { - if ($this->headers->has($field)) { - return $this->headers->get($field)->getParameter($parameter); - } - } - - /** - * Set the parameter value of $parameter on $field header. - */ - protected function setHeaderParameter($field, $parameter, $value) - { - if ($this->headers->has($field)) { - $this->headers->get($field)->setParameter($parameter, $value); - - return true; - } - - return false; - } - - /** - * Re-evaluate what content type and encoding should be used on this entity. - */ - protected function fixHeaders() - { - if (\count($this->immediateChildren)) { - $this->setHeaderParameter('Content-Type', 'boundary', - $this->getBoundary() - ); - $this->headers->remove('Content-Transfer-Encoding'); - } else { - $this->setHeaderParameter('Content-Type', 'boundary', null); - $this->setEncoding($this->encoder->getName()); - } - } - - /** - * Get the KeyCache used in this entity. - * - * @return Swift_KeyCache - */ - protected function getCache() - { - return $this->cache; - } - - /** - * Get the ID generator. - * - * @return Swift_IdGenerator - */ - protected function getIdGenerator() - { - return $this->idGenerator; - } - - /** - * Empty the KeyCache for this entity. - */ - protected function clearCache() - { - $this->cache->clearKey($this->cacheKey, 'body'); - } - - private function readStream(Swift_OutputByteStream $os) - { - $string = ''; - while (false !== $bytes = $os->read(8192)) { - $string .= $bytes; - } - - $os->setReadPointer(0); - - return $string; - } - - private function setEncoding($encoding) - { - if (!$this->setHeaderFieldModel('Content-Transfer-Encoding', $encoding)) { - $this->headers->addTextHeader('Content-Transfer-Encoding', $encoding); - } - } - - private function assertValidBoundary($boundary) - { - if (!preg_match('/^[a-z0-9\'\(\)\+_\-,\.\/:=\?\ ]{0,69}[a-z0-9\'\(\)\+_\-,\.\/:=\?]$/Di', $boundary)) { - throw new Swift_RfcComplianceException('Mime boundary set is not RFC 2046 compliant.'); - } - } - - private function setContentTypeInHeaders($type) - { - if (!$this->setHeaderFieldModel('Content-Type', $type)) { - $this->headers->addParameterizedHeader('Content-Type', $type); - } - } - - private function setNestingLevel($level) - { - $this->nestingLevel = $level; - } - - private function getCompoundLevel($children) - { - $level = 0; - foreach ($children as $child) { - $level |= $child->getNestingLevel(); - } - - return $level; - } - - private function getNeededChildLevel($child, $compoundLevel) - { - $filter = []; - foreach ($this->compoundLevelFilters as $bitmask => $rules) { - if (($compoundLevel & $bitmask) === $bitmask) { - $filter = $rules + $filter; - } - } - - $realLevel = $child->getNestingLevel(); - $lowercaseType = strtolower($child->getContentType() ?? ''); - - if (isset($filter[$realLevel]) && isset($filter[$realLevel][$lowercaseType])) { - return $filter[$realLevel][$lowercaseType]; - } - - return $realLevel; - } - - private function createChild() - { - return new self($this->headers->newInstance(), $this->encoder, $this->cache, $this->idGenerator); - } - - private function notifyEncoderChanged(Swift_Mime_ContentEncoder $encoder) - { - foreach ($this->immediateChildren as $child) { - $child->encoderChanged($encoder); - } - } - - private function notifyCharsetChanged($charset) - { - $this->encoder->charsetChanged($charset); - $this->headers->charsetChanged($charset); - foreach ($this->immediateChildren as $child) { - $child->charsetChanged($charset); - } - } - - private function sortChildren() - { - $shouldSort = false; - foreach ($this->immediateChildren as $child) { - // NOTE: This include alternative parts moved into a related part - if (self::LEVEL_ALTERNATIVE == $child->getNestingLevel()) { - $shouldSort = true; - break; - } - } - - // Sort in order of preference, if there is one - if ($shouldSort) { - // Group the messages by order of preference - $sorted = []; - foreach ($this->immediateChildren as $child) { - $type = $child->getContentType(); - $level = \array_key_exists($type, $this->alternativePartOrder) ? $this->alternativePartOrder[$type] : max($this->alternativePartOrder) + 1; - - if (empty($sorted[$level])) { - $sorted[$level] = []; - } - - $sorted[$level][] = $child; - } - - ksort($sorted); - - $this->immediateChildren = array_reduce($sorted, 'array_merge', []); - } - } - - /** - * Empties it's own contents from the cache. - */ - public function __destruct() - { - if ($this->cache instanceof Swift_KeyCache) { - $this->cache->clearAll($this->cacheKey); - } - } - - /** - * Make a deep copy of object. - */ - public function __clone() - { - $this->headers = clone $this->headers; - $this->encoder = clone $this->encoder; - $this->cacheKey = bin2hex(random_bytes(16)); // set 32 hex values - $children = []; - foreach ($this->children as $pos => $child) { - $children[$pos] = clone $child; - } - $this->setChildren($children); - } - - public function __wakeup() - { - $this->cacheKey = bin2hex(random_bytes(16)); // set 32 hex values - $this->cache = new Swift_KeyCache_ArrayKeyCache(new Swift_KeyCache_SimpleKeyCacheInputStream()); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/MimePart.php b/swiftmailer/swiftmailer/lib/classes/Swift/MimePart.php deleted file mode 100644 index ea97619ad..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/MimePart.php +++ /dev/null @@ -1,45 +0,0 @@ -createDependenciesFor('mime.part') - ); - - if (!isset($charset)) { - $charset = Swift_DependencyContainer::getInstance() - ->lookup('properties.charset'); - } - $this->setBody($body); - $this->setCharset($charset); - if ($contentType) { - $this->setContentType($contentType); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/NullTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/NullTransport.php deleted file mode 100644 index e44b7af98..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/NullTransport.php +++ /dev/null @@ -1,26 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Pretends messages have been sent, but just ignores them. - * - * @author Fabien Potencier - */ -class Swift_NullTransport extends Swift_Transport_NullTransport -{ - public function __construct() - { - \call_user_func_array( - [$this, 'Swift_Transport_NullTransport::__construct'], - Swift_DependencyContainer::getInstance() - ->createDependenciesFor('transport.null') - ); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/OutputByteStream.php b/swiftmailer/swiftmailer/lib/classes/Swift/OutputByteStream.php deleted file mode 100644 index 1f26f9be5..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/OutputByteStream.php +++ /dev/null @@ -1,46 +0,0 @@ -setThreshold($threshold); - $this->setSleepTime($sleep); - $this->sleeper = $sleeper; - } - - /** - * Set the number of emails to send before restarting. - * - * @param int $threshold - */ - public function setThreshold($threshold) - { - $this->threshold = $threshold; - } - - /** - * Get the number of emails to send before restarting. - * - * @return int - */ - public function getThreshold() - { - return $this->threshold; - } - - /** - * Set the number of seconds to sleep for during a restart. - * - * @param int $sleep time - */ - public function setSleepTime($sleep) - { - $this->sleep = $sleep; - } - - /** - * Get the number of seconds to sleep for during a restart. - * - * @return int - */ - public function getSleepTime() - { - return $this->sleep; - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - ++$this->counter; - if ($this->counter >= $this->threshold) { - $transport = $evt->getTransport(); - $transport->stop(); - if ($this->sleep) { - $this->sleep($this->sleep); - } - $transport->start(); - $this->counter = 0; - } - } - - /** - * Sleep for $seconds. - * - * @param int $seconds - */ - public function sleep($seconds) - { - if (isset($this->sleeper)) { - $this->sleeper->sleep($seconds); - } else { - sleep($seconds); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php deleted file mode 100644 index 36451f44f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/BandwidthMonitorPlugin.php +++ /dev/null @@ -1,154 +0,0 @@ -getMessage(); - $message->toByteStream($this); - } - - /** - * Invoked immediately following a command being sent. - */ - public function commandSent(Swift_Events_CommandEvent $evt) - { - $command = $evt->getCommand(); - $this->out += \strlen($command); - } - - /** - * Invoked immediately following a response coming back. - */ - public function responseReceived(Swift_Events_ResponseEvent $evt) - { - $response = $evt->getResponse(); - $this->in += \strlen($response); - } - - /** - * Called when a message is sent so that the outgoing counter can be increased. - * - * @param string $bytes - */ - public function write($bytes) - { - $this->out += \strlen($bytes); - foreach ($this->mirrors as $stream) { - $stream->write($bytes); - } - } - - /** - * Not used. - */ - public function commit() - { - } - - /** - * Attach $is to this stream. - * - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - */ - public function bind(Swift_InputByteStream $is) - { - $this->mirrors[] = $is; - } - - /** - * Remove an already bound stream. - * - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - */ - public function unbind(Swift_InputByteStream $is) - { - foreach ($this->mirrors as $k => $stream) { - if ($is === $stream) { - unset($this->mirrors[$k]); - } - } - } - - /** - * Not used. - */ - public function flushBuffers() - { - foreach ($this->mirrors as $stream) { - $stream->flushBuffers(); - } - } - - /** - * Get the total number of bytes sent to the server. - * - * @return int - */ - public function getBytesOut() - { - return $this->out; - } - - /** - * Get the total number of bytes received from the server. - * - * @return int - */ - public function getBytesIn() - { - return $this->in; - } - - /** - * Reset the internal counters to zero. - */ - public function reset() - { - $this->out = 0; - $this->in = 0; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php deleted file mode 100644 index 9f9f08b56..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Decorator/Replacements.php +++ /dev/null @@ -1,31 +0,0 @@ - - * $replacements = array( - * "address1@domain.tld" => array("{a}" => "b", "{c}" => "d"), - * "address2@domain.tld" => array("{a}" => "x", "{c}" => "y") - * ) - * - * - * When using an instance of {@link Swift_Plugins_Decorator_Replacements}, - * the object should return just the array of replacements for the address - * given to {@link Swift_Plugins_Decorator_Replacements::getReplacementsFor()}. - * - * @param mixed $replacements Array or Swift_Plugins_Decorator_Replacements - */ - public function __construct($replacements) - { - $this->setReplacements($replacements); - } - - /** - * Sets replacements. - * - * @param mixed $replacements Array or Swift_Plugins_Decorator_Replacements - * - * @see __construct() - */ - public function setReplacements($replacements) - { - if (!($replacements instanceof Swift_Plugins_Decorator_Replacements)) { - $this->replacements = (array) $replacements; - } else { - $this->replacements = $replacements; - } - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $this->restoreMessage($message); - $to = array_keys($message->getTo()); - $address = array_shift($to); - if ($replacements = $this->getReplacementsFor($address)) { - $body = $message->getBody(); - $search = array_keys($replacements); - $replace = array_values($replacements); - $bodyReplaced = str_replace( - $search, $replace, $body - ); - if ($body != $bodyReplaced) { - $this->originalBody = $body; - $message->setBody($bodyReplaced); - } - - foreach ($message->getHeaders()->getAll() as $header) { - $body = $header->getFieldBodyModel(); - $count = 0; - if (\is_array($body)) { - $bodyReplaced = []; - foreach ($body as $key => $value) { - $count1 = 0; - $count2 = 0; - $key = \is_string($key) ? str_replace($search, $replace, $key, $count1) : $key; - $value = \is_string($value) ? str_replace($search, $replace, $value, $count2) : $value; - $bodyReplaced[$key] = $value; - - if (!$count && ($count1 || $count2)) { - $count = 1; - } - } - } elseif (\is_string($body)) { - $bodyReplaced = str_replace($search, $replace, $body, $count); - } - - if ($count) { - $this->originalHeaders[$header->getFieldName()] = $body; - $header->setFieldBodyModel($bodyReplaced); - } - } - - $children = (array) $message->getChildren(); - foreach ($children as $child) { - list($type) = sscanf($child->getContentType(), '%[^/]/%s'); - if ('text' == $type) { - $body = $child->getBody(); - $bodyReplaced = str_replace( - $search, $replace, $body - ); - if ($body != $bodyReplaced) { - $child->setBody($bodyReplaced); - $this->originalChildBodies[$child->getId()] = $body; - } - } - } - $this->lastMessage = $message; - } - } - - /** - * Find a map of replacements for the address. - * - * If this plugin was provided with a delegate instance of - * {@link Swift_Plugins_Decorator_Replacements} then the call will be - * delegated to it. Otherwise, it will attempt to find the replacements - * from the array provided in the constructor. - * - * If no replacements can be found, an empty value (NULL) is returned. - * - * @param string $address - * - * @return array - */ - public function getReplacementsFor($address) - { - if ($this->replacements instanceof Swift_Plugins_Decorator_Replacements) { - return $this->replacements->getReplacementsFor($address); - } - - return $this->replacements[$address] ?? null; - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $this->restoreMessage($evt->getMessage()); - } - - /** Restore a changed message back to its original state */ - private function restoreMessage(Swift_Mime_SimpleMessage $message) - { - if ($this->lastMessage === $message) { - if (isset($this->originalBody)) { - $message->setBody($this->originalBody); - $this->originalBody = null; - } - if (!empty($this->originalHeaders)) { - foreach ($message->getHeaders()->getAll() as $header) { - if (\array_key_exists($header->getFieldName(), $this->originalHeaders)) { - $header->setFieldBodyModel($this->originalHeaders[$header->getFieldName()]); - } - } - $this->originalHeaders = []; - } - if (!empty($this->originalChildBodies)) { - $children = (array) $message->getChildren(); - foreach ($children as $child) { - $id = $child->getId(); - if (\array_key_exists($id, $this->originalChildBodies)) { - $child->setBody($this->originalChildBodies[$id]); - } - } - $this->originalChildBodies = []; - } - $this->lastMessage = null; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php deleted file mode 100644 index 3f4dbbfa4..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/ImpersonatePlugin.php +++ /dev/null @@ -1,65 +0,0 @@ -sender = $sender; - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $headers = $message->getHeaders(); - - // save current recipients - $headers->addPathHeader('X-Swift-Return-Path', $message->getReturnPath()); - - // replace them with the one to send to - $message->setReturnPath($this->sender); - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - - // restore original headers - $headers = $message->getHeaders(); - - if ($headers->has('X-Swift-Return-Path')) { - $message->setReturnPath($headers->get('X-Swift-Return-Path')->getAddress()); - $headers->removeAll('X-Swift-Return-Path'); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Logger.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Logger.php deleted file mode 100644 index d9bce8935..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Logger.php +++ /dev/null @@ -1,36 +0,0 @@ -logger = $logger; - } - - /** - * Add a log entry. - * - * @param string $entry - */ - public function add($entry) - { - $this->logger->add($entry); - } - - /** - * Clear the log contents. - */ - public function clear() - { - $this->logger->clear(); - } - - /** - * Get this log as a string. - * - * @return string - */ - public function dump() - { - return $this->logger->dump(); - } - - /** - * Invoked immediately following a command being sent. - */ - public function commandSent(Swift_Events_CommandEvent $evt) - { - $command = $evt->getCommand(); - $this->logger->add(sprintf('>> %s', $command)); - } - - /** - * Invoked immediately following a response coming back. - */ - public function responseReceived(Swift_Events_ResponseEvent $evt) - { - $response = $evt->getResponse(); - $this->logger->add(sprintf('<< %s', $response)); - } - - /** - * Invoked just before a Transport is started. - */ - public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) - { - $transportName = \get_class($evt->getSource()); - $this->logger->add(sprintf('++ Starting %s', $transportName)); - } - - /** - * Invoked immediately after the Transport is started. - */ - public function transportStarted(Swift_Events_TransportChangeEvent $evt) - { - $transportName = \get_class($evt->getSource()); - $this->logger->add(sprintf('++ %s started', $transportName)); - } - - /** - * Invoked just before a Transport is stopped. - */ - public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) - { - $transportName = \get_class($evt->getSource()); - $this->logger->add(sprintf('++ Stopping %s', $transportName)); - } - - /** - * Invoked immediately after the Transport is stopped. - */ - public function transportStopped(Swift_Events_TransportChangeEvent $evt) - { - $transportName = \get_class($evt->getSource()); - $this->logger->add(sprintf('++ %s stopped', $transportName)); - } - - /** - * Invoked as a TransportException is thrown in the Transport system. - */ - public function exceptionThrown(Swift_Events_TransportExceptionEvent $evt) - { - $e = $evt->getException(); - $message = $e->getMessage(); - $code = $e->getCode(); - $this->logger->add(sprintf('!! %s (code: %s)', $message, $code)); - $message .= PHP_EOL; - $message .= 'Log data:'.PHP_EOL; - $message .= $this->logger->dump(); - $evt->cancelBubble(); - throw new Swift_TransportException($message, $code, $e->getPrevious()); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php deleted file mode 100644 index 6f595adaa..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/ArrayLogger.php +++ /dev/null @@ -1,72 +0,0 @@ -size = $size; - } - - /** - * Add a log entry. - * - * @param string $entry - */ - public function add($entry) - { - $this->log[] = $entry; - while (\count($this->log) > $this->size) { - array_shift($this->log); - } - } - - /** - * Clear the log contents. - */ - public function clear() - { - $this->log = []; - } - - /** - * Get this log as a string. - * - * @return string - */ - public function dump() - { - return implode(PHP_EOL, $this->log); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php deleted file mode 100644 index 40a53d2bb..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Loggers/EchoLogger.php +++ /dev/null @@ -1,58 +0,0 @@ -isHtml = $isHtml; - } - - /** - * Add a log entry. - * - * @param string $entry - */ - public function add($entry) - { - if ($this->isHtml) { - printf('%s%s%s', htmlspecialchars($entry, ENT_QUOTES), '
', PHP_EOL); - } else { - printf('%s%s', $entry, PHP_EOL); - } - } - - /** - * Not implemented. - */ - public function clear() - { - } - - /** - * Not implemented. - */ - public function dump() - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php deleted file mode 100644 index 39c48ed18..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/MessageLogger.php +++ /dev/null @@ -1,70 +0,0 @@ -messages = []; - } - - /** - * Get the message list. - * - * @return Swift_Mime_SimpleMessage[] - */ - public function getMessages() - { - return $this->messages; - } - - /** - * Get the message count. - * - * @return int count - */ - public function countMessages() - { - return \count($this->messages); - } - - /** - * Empty the message list. - */ - public function clear() - { - $this->messages = []; - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $this->messages[] = clone $evt->getMessage(); - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php deleted file mode 100644 index fb99e4c94..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Pop/Pop3Connection.php +++ /dev/null @@ -1,31 +0,0 @@ -host = $host; - $this->port = $port; - $this->crypto = $crypto; - } - - /** - * Set a Pop3Connection to delegate to instead of connecting directly. - * - * @return $this - */ - public function setConnection(Swift_Plugins_Pop_Pop3Connection $connection) - { - $this->connection = $connection; - - return $this; - } - - /** - * Bind this plugin to a specific SMTP transport instance. - */ - public function bindSmtp(Swift_Transport $smtp) - { - $this->transport = $smtp; - } - - /** - * Set the connection timeout in seconds (default 10). - * - * @param int $timeout - * - * @return $this - */ - public function setTimeout($timeout) - { - $this->timeout = (int) $timeout; - - return $this; - } - - /** - * Set the username to use when connecting (if needed). - * - * @param string $username - * - * @return $this - */ - public function setUsername($username) - { - $this->username = $username; - - return $this; - } - - /** - * Set the password to use when connecting (if needed). - * - * @param string $password - * - * @return $this - */ - public function setPassword($password) - { - $this->password = $password; - - return $this; - } - - /** - * Connect to the POP3 host and authenticate. - * - * @throws Swift_Plugins_Pop_Pop3Exception if connection fails - */ - public function connect() - { - if (isset($this->connection)) { - $this->connection->connect(); - } else { - if (!isset($this->socket)) { - if (!$socket = fsockopen( - $this->getHostString(), $this->port, $errno, $errstr, $this->timeout)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to connect to POP3 host [%s]: %s', $this->host, $errstr)); - } - $this->socket = $socket; - - if (false === $greeting = fgets($this->socket)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to connect to POP3 host [%s]', trim($greeting ?? ''))); - } - - $this->assertOk($greeting); - - if ($this->username) { - $this->command(sprintf("USER %s\r\n", $this->username)); - $this->command(sprintf("PASS %s\r\n", $this->password)); - } - } - } - } - - /** - * Disconnect from the POP3 host. - */ - public function disconnect() - { - if (isset($this->connection)) { - $this->connection->disconnect(); - } else { - $this->command("QUIT\r\n"); - if (!fclose($this->socket)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('POP3 host [%s] connection could not be stopped', $this->host)); - } - $this->socket = null; - } - } - - /** - * Invoked just before a Transport is started. - */ - public function beforeTransportStarted(Swift_Events_TransportChangeEvent $evt) - { - if (isset($this->transport)) { - if ($this->transport !== $evt->getTransport()) { - return; - } - } - - $this->connect(); - $this->disconnect(); - } - - /** - * Not used. - */ - public function transportStarted(Swift_Events_TransportChangeEvent $evt) - { - } - - /** - * Not used. - */ - public function beforeTransportStopped(Swift_Events_TransportChangeEvent $evt) - { - } - - /** - * Not used. - */ - public function transportStopped(Swift_Events_TransportChangeEvent $evt) - { - } - - private function command($command) - { - if (!fwrite($this->socket, $command)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to write command [%s] to POP3 host', trim($command ?? ''))); - } - - if (false === $response = fgets($this->socket)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('Failed to read from POP3 host after command [%s]', trim($command ?? ''))); - } - - $this->assertOk($response); - - return $response; - } - - private function assertOk($response) - { - if ('+OK' != substr($response, 0, 3)) { - throw new Swift_Plugins_Pop_Pop3Exception(sprintf('POP3 command failed [%s]', trim($response ?? ''))); - } - } - - private function getHostString() - { - $host = $this->host; - switch (strtolower($this->crypto ?? '')) { - case 'ssl': - $host = 'ssl://'.$host; - break; - - case 'tls': - $host = 'tls://'.$host; - break; - } - - return $host; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php deleted file mode 100644 index f7373b242..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/RedirectingPlugin.php +++ /dev/null @@ -1,201 +0,0 @@ -recipient = $recipient; - $this->whitelist = $whitelist; - } - - /** - * Set the recipient of all messages. - * - * @param mixed $recipient - */ - public function setRecipient($recipient) - { - $this->recipient = $recipient; - } - - /** - * Get the recipient of all messages. - * - * @return mixed - */ - public function getRecipient() - { - return $this->recipient; - } - - /** - * Set a list of regular expressions to whitelist certain recipients. - */ - public function setWhitelist(array $whitelist) - { - $this->whitelist = $whitelist; - } - - /** - * Get the whitelist. - * - * @return array - */ - public function getWhitelist() - { - return $this->whitelist; - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $headers = $message->getHeaders(); - - // conditionally save current recipients - - if ($headers->has('to')) { - $headers->addMailboxHeader('X-Swift-To', $message->getTo()); - } - - if ($headers->has('cc')) { - $headers->addMailboxHeader('X-Swift-Cc', $message->getCc()); - } - - if ($headers->has('bcc')) { - $headers->addMailboxHeader('X-Swift-Bcc', $message->getBcc()); - } - - // Filter remaining headers against whitelist - $this->filterHeaderSet($headers, 'To'); - $this->filterHeaderSet($headers, 'Cc'); - $this->filterHeaderSet($headers, 'Bcc'); - - // Add each hard coded recipient - $to = $message->getTo(); - if (null === $to) { - $to = []; - } - - foreach ((array) $this->recipient as $recipient) { - if (!\array_key_exists($recipient, $to)) { - $message->addTo($recipient); - } - } - } - - /** - * Filter header set against a whitelist of regular expressions. - * - * @param string $type - */ - private function filterHeaderSet(Swift_Mime_SimpleHeaderSet $headerSet, $type) - { - foreach ($headerSet->getAll($type) as $headers) { - $headers->setNameAddresses($this->filterNameAddresses($headers->getNameAddresses())); - } - } - - /** - * Filtered list of addresses => name pairs. - * - * @return array - */ - private function filterNameAddresses(array $recipients) - { - $filtered = []; - - foreach ($recipients as $address => $name) { - if ($this->isWhitelisted($address)) { - $filtered[$address] = $name; - } - } - - return $filtered; - } - - /** - * Matches address against whitelist of regular expressions. - * - * @return bool - */ - protected function isWhitelisted($recipient) - { - if (\in_array($recipient, (array) $this->recipient)) { - return true; - } - - foreach ($this->whitelist as $pattern) { - if (preg_match($pattern, $recipient)) { - return true; - } - } - - return false; - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $this->restoreMessage($evt->getMessage()); - } - - private function restoreMessage(Swift_Mime_SimpleMessage $message) - { - // restore original headers - $headers = $message->getHeaders(); - - if ($headers->has('X-Swift-To')) { - $message->setTo($headers->get('X-Swift-To')->getNameAddresses()); - $headers->removeAll('X-Swift-To'); - } else { - $message->setTo(null); - } - - if ($headers->has('X-Swift-Cc')) { - $message->setCc($headers->get('X-Swift-Cc')->getNameAddresses()); - $headers->removeAll('X-Swift-Cc'); - } - - if ($headers->has('X-Swift-Bcc')) { - $message->setBcc($headers->get('X-Swift-Bcc')->getNameAddresses()); - $headers->removeAll('X-Swift-Bcc'); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporter.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporter.php deleted file mode 100644 index b88183397..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporter.php +++ /dev/null @@ -1,31 +0,0 @@ -reporter = $reporter; - } - - /** - * Not used. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - } - - /** - * Invoked immediately after the Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - $message = $evt->getMessage(); - $failures = array_flip($evt->getFailedRecipients()); - foreach ((array) $message->getTo() as $address => $null) { - $this->reporter->notify($message, $address, (\array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS)); - } - foreach ((array) $message->getCc() as $address => $null) { - $this->reporter->notify($message, $address, (\array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS)); - } - foreach ((array) $message->getBcc() as $address => $null) { - $this->reporter->notify($message, $address, (\array_key_exists($address, $failures) ? Swift_Plugins_Reporter::RESULT_FAIL : Swift_Plugins_Reporter::RESULT_PASS)); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php deleted file mode 100644 index 249cffbde..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HitReporter.php +++ /dev/null @@ -1,58 +0,0 @@ -failures_cache[$address])) { - $this->failures[] = $address; - $this->failures_cache[$address] = true; - } - } - - /** - * Get an array of addresses for which delivery failed. - * - * @return array - */ - public function getFailedRecipients() - { - return $this->failures; - } - - /** - * Clear the buffer (empty the list). - */ - public function clear() - { - $this->failures = $this->failures_cache = []; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php deleted file mode 100644 index 1cfc3f974..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Reporters/HtmlReporter.php +++ /dev/null @@ -1,38 +0,0 @@ -'.PHP_EOL; - echo 'PASS '.$address.PHP_EOL; - echo ''.PHP_EOL; - flush(); - } else { - echo '
'.PHP_EOL; - echo 'FAIL '.$address.PHP_EOL; - echo '
'.PHP_EOL; - flush(); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php deleted file mode 100644 index 595c0f603..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Sleeper.php +++ /dev/null @@ -1,24 +0,0 @@ -rate = $rate; - $this->mode = $mode; - $this->sleeper = $sleeper; - $this->timer = $timer; - } - - /** - * Invoked immediately before the Message is sent. - */ - public function beforeSendPerformed(Swift_Events_SendEvent $evt) - { - $time = $this->getTimestamp(); - if (!isset($this->start)) { - $this->start = $time; - } - $duration = $time - $this->start; - - switch ($this->mode) { - case self::BYTES_PER_MINUTE: - $sleep = $this->throttleBytesPerMinute($duration); - break; - case self::MESSAGES_PER_SECOND: - $sleep = $this->throttleMessagesPerSecond($duration); - break; - case self::MESSAGES_PER_MINUTE: - $sleep = $this->throttleMessagesPerMinute($duration); - break; - default: - $sleep = 0; - break; - } - - if ($sleep > 0) { - $this->sleep($sleep); - } - } - - /** - * Invoked when a Message is sent. - */ - public function sendPerformed(Swift_Events_SendEvent $evt) - { - parent::sendPerformed($evt); - ++$this->messages; - } - - /** - * Sleep for $seconds. - * - * @param int $seconds - */ - public function sleep($seconds) - { - if (isset($this->sleeper)) { - $this->sleeper->sleep($seconds); - } else { - sleep($seconds); - } - } - - /** - * Get the current UNIX timestamp. - * - * @return int - */ - public function getTimestamp() - { - if (isset($this->timer)) { - return $this->timer->getTimestamp(); - } - - return time(); - } - - /** - * Get a number of seconds to sleep for. - * - * @param int $timePassed - * - * @return int - */ - private function throttleBytesPerMinute($timePassed) - { - $expectedDuration = $this->getBytesOut() / ($this->rate / 60); - - return (int) ceil($expectedDuration - $timePassed); - } - - /** - * Get a number of seconds to sleep for. - * - * @param int $timePassed - * - * @return int - */ - private function throttleMessagesPerSecond($timePassed) - { - $expectedDuration = $this->messages / $this->rate; - - return (int) ceil($expectedDuration - $timePassed); - } - - /** - * Get a number of seconds to sleep for. - * - * @param int $timePassed - * - * @return int - */ - private function throttleMessagesPerMinute($timePassed) - { - $expectedDuration = $this->messages / ($this->rate / 60); - - return (int) ceil($expectedDuration - $timePassed); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Timer.php b/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Timer.php deleted file mode 100644 index 9c8deb38a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Plugins/Timer.php +++ /dev/null @@ -1,24 +0,0 @@ -register('properties.charset')->asValue($charset); - - return $this; - } - - /** - * Set the directory where temporary files can be saved. - * - * @param string $dir - * - * @return $this - */ - public function setTempDir($dir) - { - Swift_DependencyContainer::getInstance()->register('tempdir')->asValue($dir); - - return $this; - } - - /** - * Set the type of cache to use (i.e. "disk" or "array"). - * - * @param string $type - * - * @return $this - */ - public function setCacheType($type) - { - Swift_DependencyContainer::getInstance()->register('cache')->asAliasOf(sprintf('cache.%s', $type)); - - return $this; - } - - /** - * Set the QuotedPrintable dot escaper preference. - * - * @param bool $dotEscape - * - * @return $this - */ - public function setQPDotEscape($dotEscape) - { - $dotEscape = !empty($dotEscape); - Swift_DependencyContainer::getInstance() - ->register('mime.qpcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') - ->withDependencies(['mime.charstream', 'mime.bytecanonicalizer']) - ->addConstructorValue($dotEscape); - - return $this; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php b/swiftmailer/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php deleted file mode 100644 index 2897474e7..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/ReplacementFilterFactory.php +++ /dev/null @@ -1,27 +0,0 @@ -createDependenciesFor('transport.sendmail') - ); - - $this->setCommand($command); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signer.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signer.php deleted file mode 100644 index 26c5e285c..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signer.php +++ /dev/null @@ -1,19 +0,0 @@ - - */ -interface Swift_Signer -{ - public function reset(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/BodySigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/BodySigner.php deleted file mode 100644 index b25c427af..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/BodySigner.php +++ /dev/null @@ -1,31 +0,0 @@ - - */ -interface Swift_Signers_BodySigner extends Swift_Signer -{ - /** - * Change the Swift_Signed_Message to apply the singing. - * - * @return self - */ - public function signMessage(Swift_Message $message); - - /** - * Return the list of header a signer might tamper. - * - * @return array - */ - public function getAlteredHeaders(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php deleted file mode 100644 index ec82dc056..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DKIMSigner.php +++ /dev/null @@ -1,682 +0,0 @@ - - */ -class Swift_Signers_DKIMSigner implements Swift_Signers_HeaderSigner -{ - /** - * PrivateKey. - * - * @var string - */ - protected $privateKey; - - /** - * DomainName. - * - * @var string - */ - protected $domainName; - - /** - * Selector. - * - * @var string - */ - protected $selector; - - private $passphrase = ''; - - /** - * Hash algorithm used. - * - * @see RFC6376 3.3: Signers MUST implement and SHOULD sign using rsa-sha256. - * - * @var string - */ - protected $hashAlgorithm = 'rsa-sha256'; - - /** - * Body canon method. - * - * @var string - */ - protected $bodyCanon = 'simple'; - - /** - * Header canon method. - * - * @var string - */ - protected $headerCanon = 'simple'; - - /** - * Headers not being signed. - * - * @var array - */ - protected $ignoredHeaders = ['return-path' => true]; - - /** - * Signer identity. - * - * @var string - */ - protected $signerIdentity; - - /** - * BodyLength. - * - * @var int - */ - protected $bodyLen = 0; - - /** - * Maximum signedLen. - * - * @var int - */ - protected $maxLen = PHP_INT_MAX; - - /** - * Embbed bodyLen in signature. - * - * @var bool - */ - protected $showLen = false; - - /** - * When the signature has been applied (true means time()), false means not embedded. - * - * @var mixed - */ - protected $signatureTimestamp = true; - - /** - * When will the signature expires false means not embedded, if sigTimestamp is auto - * Expiration is relative, otherwise it's absolute. - * - * @var int - */ - protected $signatureExpiration = false; - - /** - * Must we embed signed headers? - * - * @var bool - */ - protected $debugHeaders = false; - - // work variables - /** - * Headers used to generate hash. - * - * @var array - */ - protected $signedHeaders = []; - - /** - * If debugHeaders is set store debugData here. - * - * @var string[] - */ - private $debugHeadersData = []; - - /** - * Stores the bodyHash. - * - * @var string - */ - private $bodyHash = ''; - - /** - * Stores the signature header. - * - * @var Swift_Mime_Headers_ParameterizedHeader - */ - protected $dkimHeader; - - private $bodyHashHandler; - - private $headerHash; - - private $headerCanonData = ''; - - private $bodyCanonEmptyCounter = 0; - - private $bodyCanonIgnoreStart = 2; - - private $bodyCanonSpace = false; - - private $bodyCanonLastChar = null; - - private $bodyCanonLine = ''; - - private $bound = []; - - /** - * Constructor. - * - * @param string $privateKey - * @param string $domainName - * @param string $selector - * @param string $passphrase - */ - public function __construct($privateKey, $domainName, $selector, $passphrase = '') - { - $this->privateKey = $privateKey; - $this->domainName = $domainName; - $this->signerIdentity = '@'.$domainName; - $this->selector = $selector; - $this->passphrase = $passphrase; - } - - /** - * Reset the Signer. - * - * @see Swift_Signer::reset() - */ - public function reset() - { - $this->headerHash = null; - $this->signedHeaders = []; - $this->bodyHash = null; - $this->bodyHashHandler = null; - $this->bodyCanonIgnoreStart = 2; - $this->bodyCanonEmptyCounter = 0; - $this->bodyCanonLastChar = null; - $this->bodyCanonSpace = false; - } - - /** - * Writes $bytes to the end of the stream. - * - * Writing may not happen immediately if the stream chooses to buffer. If - * you want to write these bytes with immediate effect, call {@link commit()} - * after calling write(). - * - * This method returns the sequence ID of the write (i.e. 1 for first, 2 for - * second, etc etc). - * - * @param string $bytes - * - * @return int - * - * @throws Swift_IoException - */ - // TODO fix return - public function write($bytes) - { - $this->canonicalizeBody($bytes); - foreach ($this->bound as $is) { - $is->write($bytes); - } - } - - /** - * For any bytes that are currently buffered inside the stream, force them - * off the buffer. - */ - public function commit() - { - // Nothing to do - return; - } - - /** - * Attach $is to this stream. - * - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - */ - public function bind(Swift_InputByteStream $is) - { - // Don't have to mirror anything - $this->bound[] = $is; - - return; - } - - /** - * Remove an already bound stream. - * - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - */ - public function unbind(Swift_InputByteStream $is) - { - // Don't have to mirror anything - foreach ($this->bound as $k => $stream) { - if ($stream === $is) { - unset($this->bound[$k]); - - return; - } - } - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - * - * @throws Swift_IoException - */ - public function flushBuffers() - { - $this->reset(); - } - - /** - * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1. - * - * @param string $hash 'rsa-sha1' or 'rsa-sha256' - * - * @throws Swift_SwiftException - * - * @return $this - */ - public function setHashAlgorithm($hash) - { - switch ($hash) { - case 'rsa-sha1': - $this->hashAlgorithm = 'rsa-sha1'; - break; - case 'rsa-sha256': - $this->hashAlgorithm = 'rsa-sha256'; - if (!\defined('OPENSSL_ALGO_SHA256')) { - throw new Swift_SwiftException('Unable to set sha256 as it is not supported by OpenSSL.'); - } - break; - default: - throw new Swift_SwiftException('Unable to set the hash algorithm, must be one of rsa-sha1 or rsa-sha256 (%s given).', $hash); - } - - return $this; - } - - /** - * Set the body canonicalization algorithm. - * - * @param string $canon - * - * @return $this - */ - public function setBodyCanon($canon) - { - if ('relaxed' == $canon) { - $this->bodyCanon = 'relaxed'; - } else { - $this->bodyCanon = 'simple'; - } - - return $this; - } - - /** - * Set the header canonicalization algorithm. - * - * @param string $canon - * - * @return $this - */ - public function setHeaderCanon($canon) - { - if ('relaxed' == $canon) { - $this->headerCanon = 'relaxed'; - } else { - $this->headerCanon = 'simple'; - } - - return $this; - } - - /** - * Set the signer identity. - * - * @param string $identity - * - * @return $this - */ - public function setSignerIdentity($identity) - { - $this->signerIdentity = $identity; - - return $this; - } - - /** - * Set the length of the body to sign. - * - * @param mixed $len (bool or int) - * - * @return $this - */ - public function setBodySignedLen($len) - { - if (true === $len) { - $this->showLen = true; - $this->maxLen = PHP_INT_MAX; - } elseif (false === $len) { - $this->showLen = false; - $this->maxLen = PHP_INT_MAX; - } else { - $this->showLen = true; - $this->maxLen = (int) $len; - } - - return $this; - } - - /** - * Set the signature timestamp. - * - * @param int $time A timestamp - * - * @return $this - */ - public function setSignatureTimestamp($time) - { - $this->signatureTimestamp = $time; - - return $this; - } - - /** - * Set the signature expiration timestamp. - * - * @param int $time A timestamp - * - * @return $this - */ - public function setSignatureExpiration($time) - { - $this->signatureExpiration = $time; - - return $this; - } - - /** - * Enable / disable the DebugHeaders. - * - * @param bool $debug - * - * @return Swift_Signers_DKIMSigner - */ - public function setDebugHeaders($debug) - { - $this->debugHeaders = (bool) $debug; - - return $this; - } - - /** - * Start Body. - */ - public function startBody() - { - // Init - switch ($this->hashAlgorithm) { - case 'rsa-sha256': - $this->bodyHashHandler = hash_init('sha256'); - break; - case 'rsa-sha1': - $this->bodyHashHandler = hash_init('sha1'); - break; - } - $this->bodyCanonLine = ''; - } - - /** - * End Body. - */ - public function endBody() - { - $this->endOfBody(); - } - - /** - * Returns the list of Headers Tampered by this plugin. - * - * @return array - */ - public function getAlteredHeaders() - { - if ($this->debugHeaders) { - return ['DKIM-Signature', 'X-DebugHash']; - } else { - return ['DKIM-Signature']; - } - } - - /** - * Adds an ignored Header. - * - * @param string $header_name - * - * @return Swift_Signers_DKIMSigner - */ - public function ignoreHeader($header_name) - { - $this->ignoredHeaders[strtolower($header_name ?? '')] = true; - - return $this; - } - - /** - * Set the headers to sign. - * - * @return Swift_Signers_DKIMSigner - */ - public function setHeaders(Swift_Mime_SimpleHeaderSet $headers) - { - $this->headerCanonData = ''; - // Loop through Headers - $listHeaders = $headers->listAll(); - foreach ($listHeaders as $hName) { - // Check if we need to ignore Header - if (!isset($this->ignoredHeaders[strtolower($hName ?? '')])) { - if ($headers->has($hName)) { - $tmp = $headers->getAll($hName); - foreach ($tmp as $header) { - if ('' != $header->getFieldBody()) { - $this->addHeader($header->toString()); - $this->signedHeaders[] = $header->getFieldName(); - } - } - } - } - } - - return $this; - } - - /** - * Add the signature to the given Headers. - * - * @return Swift_Signers_DKIMSigner - */ - public function addSignature(Swift_Mime_SimpleHeaderSet $headers) - { - // Prepare the DKIM-Signature - $params = ['v' => '1', 'a' => $this->hashAlgorithm, 'bh' => base64_encode($this->bodyHash ?? ''), 'd' => $this->domainName, 'h' => implode(': ', $this->signedHeaders), 'i' => $this->signerIdentity, 's' => $this->selector]; - if ('simple' != $this->bodyCanon) { - $params['c'] = $this->headerCanon.'/'.$this->bodyCanon; - } elseif ('simple' != $this->headerCanon) { - $params['c'] = $this->headerCanon; - } - if ($this->showLen) { - $params['l'] = $this->bodyLen; - } - if (true === $this->signatureTimestamp) { - $params['t'] = time(); - if (false !== $this->signatureExpiration) { - $params['x'] = $params['t'] + $this->signatureExpiration; - } - } else { - if (false !== $this->signatureTimestamp) { - $params['t'] = $this->signatureTimestamp; - } - if (false !== $this->signatureExpiration) { - $params['x'] = $this->signatureExpiration; - } - } - if ($this->debugHeaders) { - $params['z'] = implode('|', $this->debugHeadersData); - } - $string = ''; - foreach ($params as $k => $v) { - $string .= $k.'='.$v.'; '; - } - $string = trim($string); - $headers->addTextHeader('DKIM-Signature', $string); - // Add the last DKIM-Signature - $tmp = $headers->getAll('DKIM-Signature'); - $this->dkimHeader = end($tmp); - $this->addHeader(trim($this->dkimHeader->toString() ?? '')."\r\n b=", true); - if ($this->debugHeaders) { - $headers->addTextHeader('X-DebugHash', base64_encode($this->headerHash ?? '')); - } - $this->dkimHeader->setValue($string.' b='.trim(chunk_split(base64_encode($this->getEncryptedHash() ?? ''), 73, ' '))); - - return $this; - } - - /* Private helpers */ - - protected function addHeader($header, $is_sig = false) - { - switch ($this->headerCanon) { - case 'relaxed': - // Prepare Header and cascade - $exploded = explode(':', $header, 2); - $name = strtolower(trim($exploded[0])); - $value = str_replace("\r\n", '', $exploded[1]); - $value = preg_replace("/[ \t][ \t]+/", ' ', $value); - $header = $name.':'.trim($value).($is_sig ? '' : "\r\n"); - // no break - case 'simple': - // Nothing to do - } - $this->addToHeaderHash($header); - } - - protected function canonicalizeBody($string) - { - $len = \strlen($string); - $canon = ''; - $method = ('relaxed' == $this->bodyCanon); - for ($i = 0; $i < $len; ++$i) { - if ($this->bodyCanonIgnoreStart > 0) { - --$this->bodyCanonIgnoreStart; - continue; - } - switch ($string[$i]) { - case "\r": - $this->bodyCanonLastChar = "\r"; - break; - case "\n": - if ("\r" == $this->bodyCanonLastChar) { - if ($method) { - $this->bodyCanonSpace = false; - } - if ('' == $this->bodyCanonLine) { - ++$this->bodyCanonEmptyCounter; - } else { - $this->bodyCanonLine = ''; - $canon .= "\r\n"; - } - } else { - // Wooops Error - // todo handle it but should never happen - } - break; - case ' ': - case "\t": - if ($method) { - $this->bodyCanonSpace = true; - break; - } - // no break - default: - if ($this->bodyCanonEmptyCounter > 0) { - $canon .= str_repeat("\r\n", $this->bodyCanonEmptyCounter); - $this->bodyCanonEmptyCounter = 0; - } - if ($this->bodyCanonSpace) { - $this->bodyCanonLine .= ' '; - $canon .= ' '; - $this->bodyCanonSpace = false; - } - $this->bodyCanonLine .= $string[$i]; - $canon .= $string[$i]; - } - } - $this->addToBodyHash($canon); - } - - protected function endOfBody() - { - // Add trailing Line return if last line is non empty - if (\strlen($this->bodyCanonLine) > 0) { - $this->addToBodyHash("\r\n"); - } - $this->bodyHash = hash_final($this->bodyHashHandler, true); - } - - private function addToBodyHash($string) - { - $len = \strlen($string); - if ($len > ($new_len = ($this->maxLen - $this->bodyLen))) { - $string = substr($string, 0, $new_len); - $len = $new_len; - } - hash_update($this->bodyHashHandler, $string); - $this->bodyLen += $len; - } - - private function addToHeaderHash($header) - { - if ($this->debugHeaders) { - $this->debugHeadersData[] = trim($header ?? ''); - } - $this->headerCanonData .= $header; - } - - /** - * @throws Swift_SwiftException - * - * @return string - */ - private function getEncryptedHash() - { - $signature = ''; - switch ($this->hashAlgorithm) { - case 'rsa-sha1': - $algorithm = OPENSSL_ALGO_SHA1; - break; - case 'rsa-sha256': - $algorithm = OPENSSL_ALGO_SHA256; - break; - } - $pkeyId = openssl_get_privatekey($this->privateKey, $this->passphrase); - if (!$pkeyId) { - throw new Swift_SwiftException('Unable to load DKIM Private Key ['.openssl_error_string().']'); - } - if (openssl_sign($this->headerCanonData, $signature, $pkeyId, $algorithm)) { - return $signature; - } - throw new Swift_SwiftException('Unable to sign DKIM Hash ['.openssl_error_string().']'); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php deleted file mode 100644 index 5e2b67b65..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/DomainKeySigner.php +++ /dev/null @@ -1,504 +0,0 @@ - - */ -class Swift_Signers_DomainKeySigner implements Swift_Signers_HeaderSigner -{ - /** - * PrivateKey. - * - * @var string - */ - protected $privateKey; - - /** - * DomainName. - * - * @var string - */ - protected $domainName; - - /** - * Selector. - * - * @var string - */ - protected $selector; - - /** - * Hash algorithm used. - * - * @var string - */ - protected $hashAlgorithm = 'rsa-sha1'; - - /** - * Canonisation method. - * - * @var string - */ - protected $canon = 'simple'; - - /** - * Headers not being signed. - * - * @var array - */ - protected $ignoredHeaders = []; - - /** - * Signer identity. - * - * @var string - */ - protected $signerIdentity; - - /** - * Must we embed signed headers? - * - * @var bool - */ - protected $debugHeaders = false; - - // work variables - /** - * Headers used to generate hash. - * - * @var array - */ - private $signedHeaders = []; - - /** - * Stores the signature header. - * - * @var Swift_Mime_Headers_ParameterizedHeader - */ - protected $domainKeyHeader; - - /** - * Hash Handler. - * - * @var resource|null - */ - private $hashHandler; - - private $canonData = ''; - - private $bodyCanonEmptyCounter = 0; - - private $bodyCanonIgnoreStart = 2; - - private $bodyCanonSpace = false; - - private $bodyCanonLastChar = null; - - private $bodyCanonLine = ''; - - private $bound = []; - - /** - * Constructor. - * - * @param string $privateKey - * @param string $domainName - * @param string $selector - */ - public function __construct($privateKey, $domainName, $selector) - { - $this->privateKey = $privateKey; - $this->domainName = $domainName; - $this->signerIdentity = '@'.$domainName; - $this->selector = $selector; - } - - /** - * Resets internal states. - * - * @return $this - */ - public function reset() - { - $this->hashHandler = null; - $this->bodyCanonIgnoreStart = 2; - $this->bodyCanonEmptyCounter = 0; - $this->bodyCanonLastChar = null; - $this->bodyCanonSpace = false; - - return $this; - } - - /** - * Writes $bytes to the end of the stream. - * - * Writing may not happen immediately if the stream chooses to buffer. If - * you want to write these bytes with immediate effect, call {@link commit()} - * after calling write(). - * - * This method returns the sequence ID of the write (i.e. 1 for first, 2 for - * second, etc etc). - * - * @param string $bytes - * - * @return int - * - * @throws Swift_IoException - * - * @return $this - */ - public function write($bytes) - { - $this->canonicalizeBody($bytes); - foreach ($this->bound as $is) { - $is->write($bytes); - } - - return $this; - } - - /** - * For any bytes that are currently buffered inside the stream, force them - * off the buffer. - * - * @throws Swift_IoException - * - * @return $this - */ - public function commit() - { - // Nothing to do - return $this; - } - - /** - * Attach $is to this stream. - * - * The stream acts as an observer, receiving all data that is written. - * All {@link write()} and {@link flushBuffers()} operations will be mirrored. - * - * @return $this - */ - public function bind(Swift_InputByteStream $is) - { - // Don't have to mirror anything - $this->bound[] = $is; - - return $this; - } - - /** - * Remove an already bound stream. - * - * If $is is not bound, no errors will be raised. - * If the stream currently has any buffered data it will be written to $is - * before unbinding occurs. - * - * @return $this - */ - public function unbind(Swift_InputByteStream $is) - { - // Don't have to mirror anything - foreach ($this->bound as $k => $stream) { - if ($stream === $is) { - unset($this->bound[$k]); - - break; - } - } - - return $this; - } - - /** - * Flush the contents of the stream (empty it) and set the internal pointer - * to the beginning. - * - * @throws Swift_IoException - * - * @return $this - */ - public function flushBuffers() - { - $this->reset(); - - return $this; - } - - /** - * Set hash_algorithm, must be one of rsa-sha256 | rsa-sha1 defaults to rsa-sha256. - * - * @param string $hash - * - * @return $this - */ - public function setHashAlgorithm($hash) - { - $this->hashAlgorithm = 'rsa-sha1'; - - return $this; - } - - /** - * Set the canonicalization algorithm. - * - * @param string $canon simple | nofws defaults to simple - * - * @return $this - */ - public function setCanon($canon) - { - if ('nofws' == $canon) { - $this->canon = 'nofws'; - } else { - $this->canon = 'simple'; - } - - return $this; - } - - /** - * Set the signer identity. - * - * @param string $identity - * - * @return $this - */ - public function setSignerIdentity($identity) - { - $this->signerIdentity = $identity; - - return $this; - } - - /** - * Enable / disable the DebugHeaders. - * - * @param bool $debug - * - * @return $this - */ - public function setDebugHeaders($debug) - { - $this->debugHeaders = (bool) $debug; - - return $this; - } - - /** - * Start Body. - */ - public function startBody() - { - } - - /** - * End Body. - */ - public function endBody() - { - $this->endOfBody(); - } - - /** - * Returns the list of Headers Tampered by this plugin. - * - * @return array - */ - public function getAlteredHeaders() - { - if ($this->debugHeaders) { - return ['DomainKey-Signature', 'X-DebugHash']; - } - - return ['DomainKey-Signature']; - } - - /** - * Adds an ignored Header. - * - * @param string $header_name - * - * @return $this - */ - public function ignoreHeader($header_name) - { - $this->ignoredHeaders[strtolower($header_name ?? '')] = true; - - return $this; - } - - /** - * Set the headers to sign. - * - * @return $this - */ - public function setHeaders(Swift_Mime_SimpleHeaderSet $headers) - { - $this->startHash(); - $this->canonData = ''; - // Loop through Headers - $listHeaders = $headers->listAll(); - foreach ($listHeaders as $hName) { - // Check if we need to ignore Header - if (!isset($this->ignoredHeaders[strtolower($hName ?? '')])) { - if ($headers->has($hName)) { - $tmp = $headers->getAll($hName); - foreach ($tmp as $header) { - if ('' != $header->getFieldBody()) { - $this->addHeader($header->toString()); - $this->signedHeaders[] = $header->getFieldName(); - } - } - } - } - } - $this->endOfHeaders(); - - return $this; - } - - /** - * Add the signature to the given Headers. - * - * @return $this - */ - public function addSignature(Swift_Mime_SimpleHeaderSet $headers) - { - // Prepare the DomainKey-Signature Header - $params = ['a' => $this->hashAlgorithm, 'b' => chunk_split(base64_encode($this->getEncryptedHash() ?? ''), 73, ' '), 'c' => $this->canon, 'd' => $this->domainName, 'h' => implode(': ', $this->signedHeaders), 'q' => 'dns', 's' => $this->selector]; - $string = ''; - foreach ($params as $k => $v) { - $string .= $k.'='.$v.'; '; - } - $string = trim($string); - $headers->addTextHeader('DomainKey-Signature', $string); - - return $this; - } - - /* Private helpers */ - - protected function addHeader($header) - { - switch ($this->canon) { - case 'nofws': - // Prepare Header and cascade - $exploded = explode(':', $header, 2); - $name = strtolower(trim($exploded[0])); - $value = str_replace("\r\n", '', $exploded[1]); - $value = preg_replace("/[ \t][ \t]+/", ' ', $value); - $header = $name.':'.trim($value)."\r\n"; - // no break - case 'simple': - // Nothing to do - } - $this->addToHash($header); - } - - protected function endOfHeaders() - { - $this->bodyCanonEmptyCounter = 1; - } - - protected function canonicalizeBody($string) - { - $len = \strlen($string); - $canon = ''; - $nofws = ('nofws' == $this->canon); - for ($i = 0; $i < $len; ++$i) { - if ($this->bodyCanonIgnoreStart > 0) { - --$this->bodyCanonIgnoreStart; - continue; - } - switch ($string[$i]) { - case "\r": - $this->bodyCanonLastChar = "\r"; - break; - case "\n": - if ("\r" == $this->bodyCanonLastChar) { - if ($nofws) { - $this->bodyCanonSpace = false; - } - if ('' == $this->bodyCanonLine) { - ++$this->bodyCanonEmptyCounter; - } else { - $this->bodyCanonLine = ''; - $canon .= "\r\n"; - } - } else { - // Wooops Error - throw new Swift_SwiftException('Invalid new line sequence in mail found \n without preceding \r'); - } - break; - case ' ': - case "\t": - case "\x09": //HTAB - if ($nofws) { - $this->bodyCanonSpace = true; - break; - } - // no break - default: - if ($this->bodyCanonEmptyCounter > 0) { - $canon .= str_repeat("\r\n", $this->bodyCanonEmptyCounter); - $this->bodyCanonEmptyCounter = 0; - } - $this->bodyCanonLine .= $string[$i]; - $canon .= $string[$i]; - } - } - $this->addToHash($canon); - } - - protected function endOfBody() - { - if (\strlen($this->bodyCanonLine) > 0) { - $this->addToHash("\r\n"); - } - } - - private function addToHash($string) - { - $this->canonData .= $string; - hash_update($this->hashHandler, $string); - } - - private function startHash() - { - // Init - switch ($this->hashAlgorithm) { - case 'rsa-sha1': - $this->hashHandler = hash_init('sha1'); - break; - } - $this->bodyCanonLine = ''; - } - - /** - * @throws Swift_SwiftException - * - * @return string - */ - private function getEncryptedHash() - { - $signature = ''; - $pkeyId = openssl_get_privatekey($this->privateKey); - if (!$pkeyId) { - throw new Swift_SwiftException('Unable to load DomainKey Private Key ['.openssl_error_string().']'); - } - if (openssl_sign($this->canonData, $signature, $pkeyId, OPENSSL_ALGO_SHA1)) { - return $signature; - } - throw new Swift_SwiftException('Unable to sign DomainKey Hash ['.openssl_error_string().']'); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php deleted file mode 100644 index 6f5c20923..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/HeaderSigner.php +++ /dev/null @@ -1,61 +0,0 @@ - - */ -interface Swift_Signers_HeaderSigner extends Swift_Signer, Swift_InputByteStream -{ - /** - * Exclude an header from the signed headers. - * - * @param string $header_name - * - * @return self - */ - public function ignoreHeader($header_name); - - /** - * Prepare the Signer to get a new Body. - * - * @return self - */ - public function startBody(); - - /** - * Give the signal that the body has finished streaming. - * - * @return self - */ - public function endBody(); - - /** - * Give the headers already given. - * - * @return self - */ - public function setHeaders(Swift_Mime_SimpleHeaderSet $headers); - - /** - * Add the header(s) to the headerSet. - * - * @return self - */ - public function addSignature(Swift_Mime_SimpleHeaderSet $headers); - - /** - * Return the list of header a signer might tamper. - * - * @return array - */ - public function getAlteredHeaders(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php deleted file mode 100644 index 520bcc15e..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/OpenDKIMSigner.php +++ /dev/null @@ -1,183 +0,0 @@ - - * - * @deprecated since SwiftMailer 6.1.0; use Swift_Signers_DKIMSigner instead. - */ -class Swift_Signers_OpenDKIMSigner extends Swift_Signers_DKIMSigner -{ - private $peclLoaded = false; - - private $dkimHandler = null; - - private $dropFirstLF = true; - - const CANON_RELAXED = 1; - const CANON_SIMPLE = 2; - const SIG_RSA_SHA1 = 3; - const SIG_RSA_SHA256 = 4; - - public function __construct($privateKey, $domainName, $selector) - { - if (!\extension_loaded('opendkim')) { - throw new Swift_SwiftException('php-opendkim extension not found'); - } - - $this->peclLoaded = true; - - parent::__construct($privateKey, $domainName, $selector); - } - - public function addSignature(Swift_Mime_SimpleHeaderSet $headers) - { - $header = new Swift_Mime_Headers_OpenDKIMHeader('DKIM-Signature'); - $headerVal = $this->dkimHandler->getSignatureHeader(); - if (false === $headerVal || \is_int($headerVal)) { - throw new Swift_SwiftException('OpenDKIM Error: '.$this->dkimHandler->getError()); - } - $header->setValue($headerVal); - $headers->set($header); - - return $this; - } - - public function setHeaders(Swift_Mime_SimpleHeaderSet $headers) - { - $hash = 'rsa-sha1' == $this->hashAlgorithm ? OpenDKIMSign::ALG_RSASHA1 : OpenDKIMSign::ALG_RSASHA256; - $bodyCanon = 'simple' == $this->bodyCanon ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; - $headerCanon = 'simple' == $this->headerCanon ? OpenDKIMSign::CANON_SIMPLE : OpenDKIMSign::CANON_RELAXED; - $this->dkimHandler = new OpenDKIMSign($this->privateKey, $this->selector, $this->domainName, $headerCanon, $bodyCanon, $hash, -1); - // Hardcode signature Margin for now - $this->dkimHandler->setMargin(78); - - if (!is_numeric($this->signatureTimestamp)) { - OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, time()); - } else { - if (!OpenDKIM::setOption(OpenDKIM::OPTS_FIXEDTIME, $this->signatureTimestamp)) { - throw new Swift_SwiftException('Unable to force signature timestamp ['.openssl_error_string().']'); - } - } - if (isset($this->signerIdentity)) { - $this->dkimHandler->setSigner($this->signerIdentity); - } - $listHeaders = $headers->listAll(); - foreach ($listHeaders as $hName) { - // Check if we need to ignore Header - if (!isset($this->ignoredHeaders[strtolower($hName ?? '')])) { - $tmp = $headers->getAll($hName); - if ($headers->has($hName)) { - foreach ($tmp as $header) { - if ('' != $header->getFieldBody()) { - $htosign = $header->toString(); - $this->dkimHandler->header($htosign); - $this->signedHeaders[] = $header->getFieldName(); - } - } - } - } - } - - return $this; - } - - public function startBody() - { - if (!$this->peclLoaded) { - return parent::startBody(); - } - $this->dropFirstLF = true; - $this->dkimHandler->eoh(); - - return $this; - } - - public function endBody() - { - if (!$this->peclLoaded) { - return parent::endBody(); - } - $this->dkimHandler->eom(); - - return $this; - } - - public function reset() - { - $this->dkimHandler = null; - parent::reset(); - - return $this; - } - - /** - * Set the signature timestamp. - * - * @param int $time - * - * @return $this - */ - public function setSignatureTimestamp($time) - { - $this->signatureTimestamp = $time; - - return $this; - } - - /** - * Set the signature expiration timestamp. - * - * @param int $time - * - * @return $this - */ - public function setSignatureExpiration($time) - { - $this->signatureExpiration = $time; - - return $this; - } - - /** - * Enable / disable the DebugHeaders. - * - * @param bool $debug - * - * @return $this - */ - public function setDebugHeaders($debug) - { - $this->debugHeaders = (bool) $debug; - - return $this; - } - - // Protected - - protected function canonicalizeBody($string) - { - if (!$this->peclLoaded) { - return parent::canonicalizeBody($string); - } - if (true === $this->dropFirstLF) { - if ("\r" == $string[0] && "\n" == $string[1]) { - $string = substr($string, 2); - } - } - $this->dropFirstLF = false; - if (\strlen($string)) { - $this->dkimHandler->body($string); - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php b/swiftmailer/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php deleted file mode 100644 index 3dd3cd05f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Signers/SMimeSigner.php +++ /dev/null @@ -1,542 +0,0 @@ - - * @author Jan Flora - */ -class Swift_Signers_SMimeSigner implements Swift_Signers_BodySigner -{ - protected $signCertificate; - protected $signPrivateKey; - protected $encryptCert; - protected $signThenEncrypt = true; - protected $signLevel; - protected $encryptLevel; - protected $signOptions; - protected $encryptOptions; - protected $encryptCipher; - protected $extraCerts = null; - protected $wrapFullMessage = false; - - /** - * @var Swift_StreamFilters_StringReplacementFilterFactory - */ - protected $replacementFactory; - - /** - * @var Swift_Mime_SimpleHeaderFactory - */ - protected $headerFactory; - - /** - * Constructor. - * - * @param string|null $signCertificate - * @param string|null $signPrivateKey - * @param string|null $encryptCertificate - */ - public function __construct($signCertificate = null, $signPrivateKey = null, $encryptCertificate = null) - { - if (null !== $signPrivateKey) { - $this->setSignCertificate($signCertificate, $signPrivateKey); - } - - if (null !== $encryptCertificate) { - $this->setEncryptCertificate($encryptCertificate); - } - - $this->replacementFactory = Swift_DependencyContainer::getInstance() - ->lookup('transport.replacementfactory'); - - $this->signOptions = PKCS7_DETACHED; - $this->encryptCipher = OPENSSL_CIPHER_AES_128_CBC; - } - - /** - * Set the certificate location to use for signing. - * - * @see https://secure.php.net/manual/en/openssl.pkcs7.flags.php - * - * @param string $certificate - * @param string|array $privateKey If the key needs an passphrase use array('file-location', 'passphrase') instead - * @param int $signOptions Bitwise operator options for openssl_pkcs7_sign() - * @param string $extraCerts A file containing intermediate certificates needed by the signing certificate - * - * @return $this - */ - public function setSignCertificate($certificate, $privateKey = null, $signOptions = PKCS7_DETACHED, $extraCerts = null) - { - $this->signCertificate = 'file://'.str_replace('\\', '/', realpath($certificate)); - - if (null !== $privateKey) { - if (\is_array($privateKey)) { - $this->signPrivateKey = $privateKey; - $this->signPrivateKey[0] = 'file://'.str_replace('\\', '/', realpath($privateKey[0])); - } else { - $this->signPrivateKey = 'file://'.str_replace('\\', '/', realpath($privateKey)); - } - } - - $this->signOptions = $signOptions; - $this->extraCerts = $extraCerts ? realpath($extraCerts) : null; - - return $this; - } - - /** - * Set the certificate location to use for encryption. - * - * @see https://secure.php.net/manual/en/openssl.pkcs7.flags.php - * @see https://secure.php.net/manual/en/openssl.ciphers.php - * - * @param string|array $recipientCerts Either an single X.509 certificate, or an assoc array of X.509 certificates. - * @param int $cipher - * - * @return $this - */ - public function setEncryptCertificate($recipientCerts, $cipher = null) - { - if (\is_array($recipientCerts)) { - $this->encryptCert = []; - - foreach ($recipientCerts as $cert) { - $this->encryptCert[] = 'file://'.str_replace('\\', '/', realpath($cert)); - } - } else { - $this->encryptCert = 'file://'.str_replace('\\', '/', realpath($recipientCerts)); - } - - if (null !== $cipher) { - $this->encryptCipher = $cipher; - } - - return $this; - } - - /** - * @return string - */ - public function getSignCertificate() - { - return $this->signCertificate; - } - - /** - * @return string - */ - public function getSignPrivateKey() - { - return $this->signPrivateKey; - } - - /** - * Set perform signing before encryption. - * - * The default is to first sign the message and then encrypt. - * But some older mail clients, namely Microsoft Outlook 2000 will work when the message first encrypted. - * As this goes against the official specs, its recommended to only use 'encryption -> signing' when specifically targeting these 'broken' clients. - * - * @param bool $signThenEncrypt - * - * @return $this - */ - public function setSignThenEncrypt($signThenEncrypt = true) - { - $this->signThenEncrypt = $signThenEncrypt; - - return $this; - } - - /** - * @return bool - */ - public function isSignThenEncrypt() - { - return $this->signThenEncrypt; - } - - /** - * Resets internal states. - * - * @return $this - */ - public function reset() - { - return $this; - } - - /** - * Specify whether to wrap the entire MIME message in the S/MIME message. - * - * According to RFC5751 section 3.1: - * In order to protect outer, non-content-related message header fields - * (for instance, the "Subject", "To", "From", and "Cc" fields), the - * sending client MAY wrap a full MIME message in a message/rfc822 - * wrapper in order to apply S/MIME security services to these header - * fields. It is up to the receiving client to decide how to present - * this "inner" header along with the unprotected "outer" header. - * - * @param bool $wrap - * - * @return $this - */ - public function setWrapFullMessage($wrap) - { - $this->wrapFullMessage = $wrap; - } - - /** - * Change the Swift_Message to apply the signing. - * - * @return $this - */ - public function signMessage(Swift_Message $message) - { - if (null === $this->signCertificate && null === $this->encryptCert) { - return $this; - } - - if ($this->signThenEncrypt) { - $this->smimeSignMessage($message); - $this->smimeEncryptMessage($message); - } else { - $this->smimeEncryptMessage($message); - $this->smimeSignMessage($message); - } - } - - /** - * Return the list of header a signer might tamper. - * - * @return array - */ - public function getAlteredHeaders() - { - return ['Content-Type', 'Content-Transfer-Encoding', 'Content-Disposition']; - } - - /** - * Sign a Swift message. - */ - protected function smimeSignMessage(Swift_Message $message) - { - // If we don't have a certificate we can't sign the message - if (null === $this->signCertificate) { - return; - } - - // Work on a clone of the original message - $signMessage = clone $message; - $signMessage->clearSigners(); - - if ($this->wrapFullMessage) { - // The original message essentially becomes the body of the new - // wrapped message - $signMessage = $this->wrapMimeMessage($signMessage); - } else { - // Only keep header needed to parse the body correctly - $this->clearAllHeaders($signMessage); - $this->copyHeaders( - $message, - $signMessage, - [ - 'Content-Type', - 'Content-Transfer-Encoding', - 'Content-Disposition', - ] - ); - } - - // Copy the cloned message into a temporary file stream - $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); - $signMessage->toByteStream($messageStream); - $messageStream->commit(); - $signedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); - - // Sign the message using openssl - if (!openssl_pkcs7_sign( - $messageStream->getPath(), - $signedMessageStream->getPath(), - $this->signCertificate, - $this->signPrivateKey, - [], - $this->signOptions, - $this->extraCerts - ) - ) { - throw new Swift_IoException(sprintf('Failed to sign S/Mime message. Error: "%s".', openssl_error_string())); - } - - // Parse the resulting signed message content back into the Swift message - // preserving the original headers - $this->parseSSLOutput($signedMessageStream, $message); - } - - /** - * Encrypt a Swift message. - */ - protected function smimeEncryptMessage(Swift_Message $message) - { - // If we don't have a certificate we can't encrypt the message - if (null === $this->encryptCert) { - return; - } - - // Work on a clone of the original message - $encryptMessage = clone $message; - $encryptMessage->clearSigners(); - - if ($this->wrapFullMessage) { - // The original message essentially becomes the body of the new - // wrapped message - $encryptMessage = $this->wrapMimeMessage($encryptMessage); - } else { - // Only keep header needed to parse the body correctly - $this->clearAllHeaders($encryptMessage); - $this->copyHeaders( - $message, - $encryptMessage, - [ - 'Content-Type', - 'Content-Transfer-Encoding', - 'Content-Disposition', - ] - ); - } - - // Convert the message content (including headers) to a string - // and place it in a temporary file - $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); - $encryptMessage->toByteStream($messageStream); - $messageStream->commit(); - $encryptedMessageStream = new Swift_ByteStream_TemporaryFileByteStream(); - - // Encrypt the message - if (!openssl_pkcs7_encrypt( - $messageStream->getPath(), - $encryptedMessageStream->getPath(), - $this->encryptCert, - [], - 0, - $this->encryptCipher - ) - ) { - throw new Swift_IoException(sprintf('Failed to encrypt S/Mime message. Error: "%s".', openssl_error_string())); - } - - // Parse the resulting signed message content back into the Swift message - // preserving the original headers - $this->parseSSLOutput($encryptedMessageStream, $message); - } - - /** - * Copy named headers from one Swift message to another. - */ - protected function copyHeaders( - Swift_Message $fromMessage, - Swift_Message $toMessage, - array $headers = [] - ) { - foreach ($headers as $header) { - $this->copyHeader($fromMessage, $toMessage, $header); - } - } - - /** - * Copy a single header from one Swift message to another. - * - * @param string $headerName - */ - protected function copyHeader(Swift_Message $fromMessage, Swift_Message $toMessage, $headerName) - { - $header = $fromMessage->getHeaders()->get($headerName); - if (!$header) { - return; - } - $headers = $toMessage->getHeaders(); - switch ($header->getFieldType()) { - case Swift_Mime_Header::TYPE_TEXT: - $headers->addTextHeader($header->getFieldName(), $header->getValue()); - break; - case Swift_Mime_Header::TYPE_PARAMETERIZED: - $headers->addParameterizedHeader( - $header->getFieldName(), - $header->getValue(), - $header->getParameters() - ); - break; - } - } - - /** - * Remove all headers from a Swift message. - */ - protected function clearAllHeaders(Swift_Message $message) - { - $headers = $message->getHeaders(); - foreach ($headers->listAll() as $header) { - $headers->removeAll($header); - } - } - - /** - * Wraps a Swift_Message in a message/rfc822 MIME part. - * - * @return Swift_MimePart - */ - protected function wrapMimeMessage(Swift_Message $message) - { - // Start by copying the original message into a message stream - $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); - $message->toByteStream($messageStream); - $messageStream->commit(); - - // Create a new MIME part that wraps the original stream - $wrappedMessage = new Swift_MimePart($messageStream, 'message/rfc822'); - $wrappedMessage->setEncoder(new Swift_Mime_ContentEncoder_PlainContentEncoder('7bit')); - - return $wrappedMessage; - } - - protected function parseSSLOutput(Swift_InputByteStream $inputStream, Swift_Message $message) - { - $messageStream = new Swift_ByteStream_TemporaryFileByteStream(); - $this->copyFromOpenSSLOutput($inputStream, $messageStream); - - $this->streamToMime($messageStream, $message); - } - - /** - * Merges an OutputByteStream from OpenSSL to a Swift_Message. - */ - protected function streamToMime(Swift_OutputByteStream $fromStream, Swift_Message $message) - { - // Parse the stream into headers and body - list($headers, $messageStream) = $this->parseStream($fromStream); - - // Get the original message headers - $messageHeaders = $message->getHeaders(); - - // Let the stream determine the headers describing the body content, - // since the body of the original message is overwritten by the body - // coming from the stream. - // These are all content-* headers. - - // Default transfer encoding is 7bit if not set - $encoding = ''; - // Remove all existing transfer encoding headers - $messageHeaders->removeAll('Content-Transfer-Encoding'); - // See whether the stream sets the transfer encoding - if (isset($headers['content-transfer-encoding'])) { - $encoding = $headers['content-transfer-encoding']; - } - - // We use the null content encoder, since the body is already encoded - // according to the transfer encoding specified in the stream - $message->setEncoder(new Swift_Mime_ContentEncoder_NullContentEncoder($encoding)); - - // Set the disposition, if present - if (isset($headers['content-disposition'])) { - $messageHeaders->addTextHeader('Content-Disposition', $headers['content-disposition']); - } - - // Copy over the body from the stream using the content type dictated - // by the stream content - $message->setChildren([]); - $message->setBody($messageStream, $headers['content-type']); - } - - /** - * This message will parse the headers of a MIME email byte stream - * and return an array that contains the headers as an associative - * array and the email body as a string. - * - * @return array - */ - protected function parseStream(Swift_OutputByteStream $emailStream) - { - $bufferLength = 78; - $headerData = ''; - $headerBodySeparator = "\r\n\r\n"; - - $emailStream->setReadPointer(0); - - // Read out the headers section from the stream to a string - while (false !== ($buffer = $emailStream->read($bufferLength))) { - $headerData .= $buffer; - - $headersPosEnd = strpos($headerData, $headerBodySeparator); - - // Stop reading if we found the end of the headers - if (false !== $headersPosEnd) { - break; - } - } - - // Split the header data into lines - $headerData = trim(substr($headerData, 0, $headersPosEnd)); - $headerLines = explode("\r\n", $headerData); - unset($headerData); - - $headers = []; - $currentHeaderName = ''; - - // Transform header lines into an associative array - foreach ($headerLines as $headerLine) { - // Handle headers that span multiple lines - if (false === strpos($headerLine, ':')) { - $headers[$currentHeaderName] .= ' '.trim($headerLine ?? ''); - continue; - } - - $header = explode(':', $headerLine, 2); - $currentHeaderName = strtolower($header[0] ?? ''); - $headers[$currentHeaderName] = trim($header[1] ?? ''); - } - - // Read the entire email body into a byte stream - $bodyStream = new Swift_ByteStream_TemporaryFileByteStream(); - - // Skip the header and separator and point to the body - $emailStream->setReadPointer($headersPosEnd + \strlen($headerBodySeparator)); - - while (false !== ($buffer = $emailStream->read($bufferLength))) { - $bodyStream->write($buffer); - } - - $bodyStream->commit(); - - return [$headers, $bodyStream]; - } - - protected function copyFromOpenSSLOutput(Swift_OutputByteStream $fromStream, Swift_InputByteStream $toStream) - { - $bufferLength = 4096; - $filteredStream = new Swift_ByteStream_TemporaryFileByteStream(); - $filteredStream->addFilter($this->replacementFactory->createFilter("\r\n", "\n"), 'CRLF to LF'); - $filteredStream->addFilter($this->replacementFactory->createFilter("\n", "\r\n"), 'LF to CRLF'); - - while (false !== ($buffer = $fromStream->read($bufferLength))) { - $filteredStream->write($buffer); - } - - $filteredStream->flushBuffers(); - - while (false !== ($buffer = $filteredStream->read($bufferLength))) { - $toStream->write($buffer); - } - - $toStream->commit(); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php deleted file mode 100644 index 56b62323a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php +++ /dev/null @@ -1,45 +0,0 @@ -createDependenciesFor('transport.smtp') - ); - - $this->setHost($host); - $this->setPort($port); - $this->setEncryption($encryption); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Spool.php b/swiftmailer/swiftmailer/lib/classes/Swift/Spool.php deleted file mode 100644 index 9d0e8fee2..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Spool.php +++ /dev/null @@ -1,53 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Interface for spools. - * - * @author Fabien Potencier - */ -interface Swift_Spool -{ - /** - * Starts this Spool mechanism. - */ - public function start(); - - /** - * Stops this Spool mechanism. - */ - public function stop(); - - /** - * Tests if this Spool mechanism has started. - * - * @return bool - */ - public function isStarted(); - - /** - * Queues a message. - * - * @param Swift_Mime_SimpleMessage $message The message to store - * - * @return bool Whether the operation has succeeded - */ - public function queueMessage(Swift_Mime_SimpleMessage $message); - - /** - * Sends messages using the given transport instance. - * - * @param Swift_Transport $transport A transport instance - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int The number of sent emails - */ - public function flushQueue(Swift_Transport $transport, &$failedRecipients = null); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/SpoolTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/SpoolTransport.php deleted file mode 100644 index c08e0fb17..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/SpoolTransport.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Stores Messages in a queue. - * - * @author Fabien Potencier - */ -class Swift_SpoolTransport extends Swift_Transport_SpoolTransport -{ - /** - * Create a new SpoolTransport. - */ - public function __construct(Swift_Spool $spool) - { - $arguments = Swift_DependencyContainer::getInstance() - ->createDependenciesFor('transport.spool'); - - $arguments[] = $spool; - - \call_user_func_array( - [$this, 'Swift_Transport_SpoolTransport::__construct'], - $arguments - ); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilter.php b/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilter.php deleted file mode 100644 index 362be2e8d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilter.php +++ /dev/null @@ -1,35 +0,0 @@ -index = []; - $this->tree = []; - $this->replace = []; - $this->repSize = []; - - $tree = null; - $i = null; - $last_size = $size = 0; - foreach ($search as $i => $search_element) { - if (null !== $tree) { - $tree[-1] = min(\count($replace) - 1, $i - 1); - $tree[-2] = $last_size; - } - $tree = &$this->tree; - if (\is_array($search_element)) { - foreach ($search_element as $k => $char) { - $this->index[$char] = true; - if (!isset($tree[$char])) { - $tree[$char] = []; - } - $tree = &$tree[$char]; - } - $last_size = $k + 1; - $size = max($size, $last_size); - } else { - $last_size = 1; - if (!isset($tree[$search_element])) { - $tree[$search_element] = []; - } - $tree = &$tree[$search_element]; - $size = max($last_size, $size); - $this->index[$search_element] = true; - } - } - if (null !== $i) { - $tree[-1] = min(\count($replace) - 1, $i); - $tree[-2] = $last_size; - $this->treeMaxLen = $size; - } - foreach ($replace as $rep) { - if (!\is_array($rep)) { - $rep = [$rep]; - } - $this->replace[] = $rep; - } - for ($i = \count($this->replace) - 1; $i >= 0; --$i) { - $this->replace[$i] = $rep = $this->filter($this->replace[$i], $i); - $this->repSize[$i] = \count($rep); - } - } - - /** - * Returns true if based on the buffer passed more bytes should be buffered. - * - * @param array $buffer - * - * @return bool - */ - public function shouldBuffer($buffer) - { - $endOfBuffer = end($buffer); - - return isset($this->index[$endOfBuffer]); - } - - /** - * Perform the actual replacements on $buffer and return the result. - * - * @param array $buffer - * @param int $minReplaces - * - * @return array - */ - public function filter($buffer, $minReplaces = -1) - { - if (0 == $this->treeMaxLen) { - return $buffer; - } - - $newBuffer = []; - $buf_size = \count($buffer); - $last_size = 0; - for ($i = 0; $i < $buf_size; ++$i) { - $search_pos = $this->tree; - $last_found = PHP_INT_MAX; - // We try to find if the next byte is part of a search pattern - for ($j = 0; $j <= $this->treeMaxLen; ++$j) { - // We have a new byte for a search pattern - if (isset($buffer[$p = $i + $j]) && isset($search_pos[$buffer[$p]])) { - $search_pos = $search_pos[$buffer[$p]]; - // We have a complete pattern, save, in case we don't find a better match later - if (isset($search_pos[-1]) && $search_pos[-1] < $last_found - && $search_pos[-1] > $minReplaces) { - $last_found = $search_pos[-1]; - $last_size = $search_pos[-2]; - } - } - // We got a complete pattern - elseif (PHP_INT_MAX !== $last_found) { - // Adding replacement datas to output buffer - $rep_size = $this->repSize[$last_found]; - for ($j = 0; $j < $rep_size; ++$j) { - $newBuffer[] = $this->replace[$last_found][$j]; - } - // We Move cursor forward - $i += $last_size - 1; - // Edge Case, last position in buffer - if ($i >= $buf_size) { - $newBuffer[] = $buffer[$i]; - } - - // We start the next loop - continue 2; - } else { - // this byte is not in a pattern and we haven't found another pattern - break; - } - } - // Normal byte, move it to output buffer - $newBuffer[] = $buffer[$i]; - } - - return $newBuffer; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php b/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php deleted file mode 100644 index 50a63f1aa..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilter.php +++ /dev/null @@ -1,70 +0,0 @@ -search = $search; - $this->replace = $replace; - } - - /** - * Returns true if based on the buffer passed more bytes should be buffered. - * - * @param string $buffer - * - * @return bool - */ - public function shouldBuffer($buffer) - { - if ('' === $buffer) { - return false; - } - - $endOfBuffer = substr($buffer, -1); - foreach ((array) $this->search as $needle) { - if (false !== strpos($needle, $endOfBuffer)) { - return true; - } - } - - return false; - } - - /** - * Perform the actual replacements on $buffer and return the result. - * - * @param string $buffer - * - * @return string - */ - public function filter($buffer) - { - return str_replace($this->search, $this->replace, $buffer); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php b/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php deleted file mode 100644 index 783b8896d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/StreamFilters/StringReplacementFilterFactory.php +++ /dev/null @@ -1,45 +0,0 @@ -filters[$search][$replace])) { - if (!isset($this->filters[$search])) { - $this->filters[$search] = []; - } - - if (!isset($this->filters[$search][$replace])) { - $this->filters[$search][$replace] = []; - } - - $this->filters[$search][$replace] = new Swift_StreamFilters_StringReplacementFilter($search, $replace); - } - - return $this->filters[$search][$replace]; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/SwiftException.php b/swiftmailer/swiftmailer/lib/classes/Swift/SwiftException.php deleted file mode 100644 index 15e68b18e..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/SwiftException.php +++ /dev/null @@ -1,28 +0,0 @@ -ping()) { - * $transport->stop(); - * $transport->start(); - * } - * - * The Transport mechanism will be started, if it is not already. - * - * It is undefined if the Transport mechanism attempts to restart as long as - * the return value reflects whether the mechanism is now functional. - * - * @return bool TRUE if the transport is alive - */ - public function ping(); - - /** - * Send the given Message. - * - * Recipient/sender data will be retrieved from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * This is the responsibility of the send method to start the transport if needed. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null); - - /** - * Register a plugin in the Transport. - */ - public function registerPlugin(Swift_Events_EventListener $plugin); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php deleted file mode 100644 index d2dbd7a66..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php +++ /dev/null @@ -1,541 +0,0 @@ -buffer = $buf; - $this->eventDispatcher = $dispatcher; - $this->addressEncoder = $addressEncoder ?? new Swift_AddressEncoder_IdnAddressEncoder(); - $this->setLocalDomain($localDomain); - } - - /** - * Set the name of the local domain which Swift will identify itself as. - * - * This should be a fully-qualified domain name and should be truly the domain - * you're using. - * - * If your server does not have a domain name, use the IP address. This will - * automatically be wrapped in square brackets as described in RFC 5321, - * section 4.1.3. - * - * @param string $domain - * - * @return $this - */ - public function setLocalDomain($domain) - { - if ('[' !== substr($domain, 0, 1)) { - if (filter_var($domain, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) { - $domain = '['.$domain.']'; - } elseif (filter_var($domain, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) { - $domain = '[IPv6:'.$domain.']'; - } - } - - $this->domain = $domain; - - return $this; - } - - /** - * Get the name of the domain Swift will identify as. - * - * If an IP address was specified, this will be returned wrapped in square - * brackets as described in RFC 5321, section 4.1.3. - * - * @return string - */ - public function getLocalDomain() - { - return $this->domain; - } - - /** - * Sets the source IP. - * - * @param string $source - */ - public function setSourceIp($source) - { - $this->sourceIp = $source; - } - - /** - * Returns the IP used to connect to the destination. - * - * @return string - */ - public function getSourceIp() - { - return $this->sourceIp; - } - - public function setAddressEncoder(Swift_AddressEncoder $addressEncoder) - { - $this->addressEncoder = $addressEncoder; - } - - public function getAddressEncoder() - { - return $this->addressEncoder; - } - - /** - * Start the SMTP connection. - */ - public function start() - { - if (!$this->started) { - if ($evt = $this->eventDispatcher->createTransportChangeEvent($this)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeTransportStarted'); - if ($evt->bubbleCancelled()) { - return; - } - } - - try { - $this->buffer->initialize($this->getBufferParams()); - } catch (Swift_TransportException $e) { - $this->throwException($e); - } - $this->readGreeting(); - $this->doHeloCommand(); - - if ($evt) { - $this->eventDispatcher->dispatchEvent($evt, 'transportStarted'); - } - - $this->started = true; - } - } - - /** - * Test if an SMTP connection has been established. - * - * @return bool - */ - public function isStarted() - { - return $this->started; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retrieved from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - if (!$this->isStarted()) { - $this->start(); - } - - $sent = 0; - $failedRecipients = (array) $failedRecipients; - - if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) { - return 0; - } - } - - if (!$reversePath = $this->getReversePath($message)) { - $this->throwException(new Swift_TransportException('Cannot send message without a sender address')); - } - - $to = (array) $message->getTo(); - $cc = (array) $message->getCc(); - $bcc = (array) $message->getBcc(); - $tos = array_merge($to, $cc, $bcc); - - $message->setBcc([]); - - try { - $sent += $this->sendTo($message, $reversePath, $tos, $failedRecipients); - } finally { - $message->setBcc($bcc); - } - - if ($evt) { - if ($sent == \count($to) + \count($cc) + \count($bcc)) { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - } elseif ($sent > 0) { - $evt->setResult(Swift_Events_SendEvent::RESULT_TENTATIVE); - } else { - $evt->setResult(Swift_Events_SendEvent::RESULT_FAILED); - } - $evt->setFailedRecipients($failedRecipients); - $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $message->generateId(); //Make sure a new Message ID is used - - return $sent; - } - - /** - * Stop the SMTP connection. - */ - public function stop() - { - if ($this->started) { - if ($evt = $this->eventDispatcher->createTransportChangeEvent($this)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeTransportStopped'); - if ($evt->bubbleCancelled()) { - return; - } - } - - try { - $this->executeCommand("QUIT\r\n", [221]); - } catch (Swift_TransportException $e) { - } - - try { - $this->buffer->terminate(); - - if ($evt) { - $this->eventDispatcher->dispatchEvent($evt, 'transportStopped'); - } - } catch (Swift_TransportException $e) { - $this->throwException($e); - } - } - $this->started = false; - } - - /** - * {@inheritdoc} - */ - public function ping() - { - try { - if (!$this->isStarted()) { - $this->start(); - } - - $this->executeCommand("NOOP\r\n", [250]); - } catch (Swift_TransportException $e) { - try { - $this->stop(); - } catch (Swift_TransportException $e) { - } - - return false; - } - - return true; - } - - /** - * Register a plugin. - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->eventDispatcher->bindEventListener($plugin); - } - - /** - * Reset the current mail transaction. - */ - public function reset() - { - $this->executeCommand("RSET\r\n", [250], $failures, true); - } - - /** - * Get the IoBuffer where read/writes are occurring. - * - * @return Swift_Transport_IoBuffer - */ - public function getBuffer() - { - return $this->buffer; - } - - /** - * Run a command against the buffer, expecting the given response codes. - * - * If no response codes are given, the response will not be validated. - * If codes are given, an exception will be thrown on an invalid response. - * If the command is RCPT TO, and the pipeline is non-empty, no exception - * will be thrown; instead the failing address is added to $failures. - * - * @param string $command - * @param int[] $codes - * @param string[] $failures An array of failures by-reference - * @param bool $pipeline Do not wait for response - * @param string $address the address, if command is RCPT TO - * - * @return string|null The server response, or null if pipelining is enabled - */ - public function executeCommand($command, $codes = [], &$failures = null, $pipeline = false, $address = null) - { - $failures = (array) $failures; - $seq = $this->buffer->write($command); - if ($evt = $this->eventDispatcher->createCommandEvent($this, $command, $codes)) { - $this->eventDispatcher->dispatchEvent($evt, 'commandSent'); - } - - $this->pipeline[] = [$command, $seq, $codes, $address]; - - if ($pipeline && $this->pipelining) { - return null; - } - - $response = null; - - while ($this->pipeline) { - list($command, $seq, $codes, $address) = array_shift($this->pipeline); - $response = $this->getFullResponse($seq); - try { - $this->assertResponseCode($response, $codes); - } catch (Swift_TransportException $e) { - if ($this->pipeline && $address) { - $failures[] = $address; - } else { - $this->throwException($e); - } - } - } - - return $response; - } - - /** Read the opening SMTP greeting */ - protected function readGreeting() - { - $this->assertResponseCode($this->getFullResponse(0), [220]); - } - - /** Send the HELO welcome */ - protected function doHeloCommand() - { - $this->executeCommand( - sprintf("HELO %s\r\n", $this->domain), [250] - ); - } - - /** Send the MAIL FROM command */ - protected function doMailFromCommand($address) - { - $address = $this->addressEncoder->encodeString($address); - $this->executeCommand( - sprintf("MAIL FROM:<%s>\r\n", $address), [250], $failures, true - ); - } - - /** Send the RCPT TO command */ - protected function doRcptToCommand($address) - { - $address = $this->addressEncoder->encodeString($address); - $this->executeCommand( - sprintf("RCPT TO:<%s>\r\n", $address), [250, 251, 252], $failures, true, $address - ); - } - - /** Send the DATA command */ - protected function doDataCommand(&$failedRecipients) - { - $this->executeCommand("DATA\r\n", [354], $failedRecipients); - } - - /** Stream the contents of the message over the buffer */ - protected function streamMessage(Swift_Mime_SimpleMessage $message) - { - $this->buffer->setWriteTranslations(["\r\n." => "\r\n.."]); - try { - $message->toByteStream($this->buffer); - $this->buffer->flushBuffers(); - } catch (Swift_TransportException $e) { - $this->throwException($e); - } - $this->buffer->setWriteTranslations([]); - $this->executeCommand("\r\n.\r\n", [250]); - } - - /** Determine the best-use reverse path for this message */ - protected function getReversePath(Swift_Mime_SimpleMessage $message) - { - $return = $message->getReturnPath(); - $sender = $message->getSender(); - $from = $message->getFrom(); - $path = null; - if (!empty($return)) { - $path = $return; - } elseif (!empty($sender)) { - // Don't use array_keys - reset($sender); // Reset Pointer to first pos - $path = key($sender); // Get key - } elseif (!empty($from)) { - reset($from); // Reset Pointer to first pos - $path = key($from); // Get key - } - - return $path; - } - - /** Throw a TransportException, first sending it to any listeners */ - protected function throwException(Swift_TransportException $e) - { - if ($evt = $this->eventDispatcher->createTransportExceptionEvent($this, $e)) { - $this->eventDispatcher->dispatchEvent($evt, 'exceptionThrown'); - if (!$evt->bubbleCancelled()) { - throw $e; - } - } else { - throw $e; - } - } - - /** Throws an Exception if a response code is incorrect */ - protected function assertResponseCode($response, $wanted) - { - if (!$response) { - $this->throwException(new Swift_TransportException('Expected response code '.implode('/', $wanted).' but got an empty response')); - } - - list($code) = sscanf($response, '%3d'); - $valid = (empty($wanted) || \in_array($code, $wanted)); - - if ($evt = $this->eventDispatcher->createResponseEvent($this, $response, - $valid)) { - $this->eventDispatcher->dispatchEvent($evt, 'responseReceived'); - } - - if (!$valid) { - $this->throwException(new Swift_TransportException('Expected response code '.implode('/', $wanted).' but got code "'.$code.'", with message "'.$response.'"', $code)); - } - } - - /** Get an entire multi-line response using its sequence number */ - protected function getFullResponse($seq) - { - $response = ''; - try { - do { - $line = $this->buffer->readLine($seq); - $response .= $line; - } while (null !== $line && false !== $line && ' ' != $line[3]); - } catch (Swift_TransportException $e) { - $this->throwException($e); - } catch (Swift_IoException $e) { - $this->throwException(new Swift_TransportException($e->getMessage(), 0, $e)); - } - - return $response; - } - - /** Send an email to the given recipients from the given reverse path */ - private function doMailTransaction($message, $reversePath, array $recipients, array &$failedRecipients) - { - $sent = 0; - $this->doMailFromCommand($reversePath); - foreach ($recipients as $forwardPath) { - try { - $this->doRcptToCommand($forwardPath); - ++$sent; - } catch (Swift_TransportException $e) { - $failedRecipients[] = $forwardPath; - } catch (Swift_AddressEncoderException $e) { - $failedRecipients[] = $forwardPath; - } - } - - if (0 != $sent) { - $sent += \count($failedRecipients); - $this->doDataCommand($failedRecipients); - $sent -= \count($failedRecipients); - - $this->streamMessage($message); - } else { - $this->reset(); - } - - return $sent; - } - - /** Send a message to the given To: recipients */ - private function sendTo(Swift_Mime_SimpleMessage $message, $reversePath, array $to, array &$failedRecipients) - { - if (empty($to)) { - return 0; - } - - return $this->doMailTransaction($message, $reversePath, array_keys($to), - $failedRecipients); - } - - /** - * Destructor. - */ - public function __destruct() - { - try { - $this->stop(); - } catch (Exception $e) { - } - } - - public function __sleep() - { - throw new \BadMethodCallException('Cannot serialize '.__CLASS__); - } - - public function __wakeup() - { - throw new \BadMethodCallException('Cannot unserialize '.__CLASS__); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php deleted file mode 100644 index bb3a16150..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php +++ /dev/null @@ -1,75 +0,0 @@ -executeCommand("AUTH CRAM-MD5\r\n", [334]); - $challenge = base64_decode(substr($challenge, 4)); - $message = base64_encode( - $username.' '.$this->getResponse($password, $challenge) - ); - $agent->executeCommand(sprintf("%s\r\n", $message), [235]); - - return true; - } catch (Swift_TransportException $e) { - $agent->executeCommand("RSET\r\n", [250]); - - throw $e; - } - } - - /** - * Generate a CRAM-MD5 response from a server challenge. - * - * @param string $secret - * @param string $challenge - * - * @return string - */ - private function getResponse($secret, $challenge) - { - if (\strlen($secret) > 64) { - $secret = pack('H32', md5($secret)); - } - - if (\strlen($secret) < 64) { - $secret = str_pad($secret, 64, \chr(0)); - } - - $k_ipad = substr($secret, 0, 64) ^ str_repeat(\chr(0x36), 64); - $k_opad = substr($secret, 0, 64) ^ str_repeat(\chr(0x5C), 64); - - $inner = pack('H32', md5($k_ipad.$challenge)); - $digest = md5($k_opad.$inner); - - return $digest; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php deleted file mode 100644 index 0b9d81b8a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php +++ /dev/null @@ -1,45 +0,0 @@ -executeCommand("AUTH LOGIN\r\n", [334]); - $agent->executeCommand(sprintf("%s\r\n", base64_encode($username ?? '')), [334]); - $agent->executeCommand(sprintf("%s\r\n", base64_encode($password ?? '')), [235]); - - return true; - } catch (Swift_TransportException $e) { - $agent->executeCommand("RSET\r\n", [250]); - - throw $e; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php deleted file mode 100644 index 41931fdd2..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/NTLMAuthenticator.php +++ /dev/null @@ -1,681 +0,0 @@ - - */ -class Swift_Transport_Esmtp_Auth_NTLMAuthenticator implements Swift_Transport_Esmtp_Authenticator -{ - const NTLMSIG = "NTLMSSP\x00"; - const DESCONST = 'KGS!@#$%'; - - /** - * Get the name of the AUTH mechanism this Authenticator handles. - * - * @return string - */ - public function getAuthKeyword() - { - return 'NTLM'; - } - - /** - * {@inheritdoc} - * - * @throws \LogicException - */ - public function authenticate(Swift_Transport_SmtpAgent $agent, $username, $password) - { - if (!\function_exists('openssl_encrypt')) { - throw new LogicException('The OpenSSL extension must be enabled to use the NTLM authenticator.'); - } - - if (!\function_exists('bcmul')) { - throw new LogicException('The BCMath functions must be enabled to use the NTLM authenticator.'); - } - - try { - // execute AUTH command and filter out the code at the beginning - // AUTH NTLM xxxx - $response = base64_decode(substr(trim($this->sendMessage1($agent) ?? ''), 4)); - - // extra parameters for our unit cases - $timestamp = \func_num_args() > 3 ? func_get_arg(3) : $this->getCorrectTimestamp(bcmul(microtime(true), '1000')); - $client = \func_num_args() > 4 ? func_get_arg(4) : random_bytes(8); - - // Message 3 response - $this->sendMessage3($response, $username, $password, $timestamp, $client, $agent); - - return true; - } catch (Swift_TransportException $e) { - $agent->executeCommand("RSET\r\n", [250]); - - throw $e; - } - } - - protected function si2bin($si, $bits = 32) - { - $bin = null; - if ($si >= -2 ** ($bits - 1) && ($si <= 2 ** ($bits - 1))) { - // positive or zero - if ($si >= 0) { - $bin = base_convert($si, 10, 2); - // pad to $bits bit - $bin_length = \strlen($bin); - if ($bin_length < $bits) { - $bin = str_repeat('0', $bits - $bin_length).$bin; - } - } else { - // negative - $si = -$si - 2 ** $bits; - $bin = base_convert($si, 10, 2); - $bin_length = \strlen($bin); - if ($bin_length > $bits) { - $bin = str_repeat('1', $bits - $bin_length).$bin; - } - } - } - - return $bin; - } - - /** - * Send our auth message and returns the response. - * - * @return string SMTP Response - */ - protected function sendMessage1(Swift_Transport_SmtpAgent $agent) - { - $message = $this->createMessage1(); - - return $agent->executeCommand(sprintf("AUTH %s %s\r\n", $this->getAuthKeyword(), base64_encode($message)), [334]); - } - - /** - * Fetch all details of our response (message 2). - * - * @param string $response - * - * @return array our response parsed - */ - protected function parseMessage2($response) - { - $responseHex = bin2hex($response); - $length = floor(hexdec(substr($responseHex, 28, 4)) / 256) * 2; - $offset = floor(hexdec(substr($responseHex, 32, 4)) / 256) * 2; - $challenge = hex2bin(substr($responseHex, 48, 16)); - $context = hex2bin(substr($responseHex, 64, 16)); - $targetInfoH = hex2bin(substr($responseHex, 80, 16)); - $targetName = hex2bin(substr($responseHex, $offset, $length)); - $offset = floor(hexdec(substr($responseHex, 88, 4)) / 256) * 2; - $targetInfoBlock = substr($responseHex, $offset); - list($domainName, $serverName, $DNSDomainName, $DNSServerName, $terminatorByte) = $this->readSubBlock($targetInfoBlock); - - return [ - $challenge, - $context, - $targetInfoH, - $targetName, - $domainName, - $serverName, - $DNSDomainName, - $DNSServerName, - hex2bin($targetInfoBlock), - $terminatorByte, - ]; - } - - /** - * Read the blob information in from message2. - * - * @return array - */ - protected function readSubBlock($block) - { - // remove terminatorByte cause it's always the same - $block = substr($block, 0, -8); - - $length = \strlen($block); - $offset = 0; - $data = []; - while ($offset < $length) { - $blockLength = hexdec(substr(substr($block, $offset, 8), -4)) / 256; - $offset += 8; - $data[] = hex2bin(substr($block, $offset, $blockLength * 2)); - $offset += $blockLength * 2; - } - - if (3 == \count($data)) { - $data[] = $data[2]; - $data[2] = ''; - } - - $data[] = $this->createByte('00'); - - return $data; - } - - /** - * Send our final message with all our data. - * - * @param string $response Message 1 response (message 2) - * @param string $username - * @param string $password - * @param string $timestamp - * @param string $client - * @param bool $v2 Use version2 of the protocol - * - * @return string - */ - protected function sendMessage3($response, $username, $password, $timestamp, $client, Swift_Transport_SmtpAgent $agent, $v2 = true) - { - list($domain, $username) = $this->getDomainAndUsername($username); - //$challenge, $context, $targetInfoH, $targetName, $domainName, $workstation, $DNSDomainName, $DNSServerName, $blob, $ter - list($challenge, , , , , $workstation, , , $blob) = $this->parseMessage2($response); - - if (!$v2) { - // LMv1 - $lmResponse = $this->createLMPassword($password, $challenge); - // NTLMv1 - $ntlmResponse = $this->createNTLMPassword($password, $challenge); - } else { - // LMv2 - $lmResponse = $this->createLMv2Password($password, $username, $domain, $challenge, $client); - // NTLMv2 - $ntlmResponse = $this->createNTLMv2Hash($password, $username, $domain, $challenge, $blob, $timestamp, $client); - } - - $message = $this->createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse); - - return $agent->executeCommand(sprintf("%s\r\n", base64_encode($message)), [235]); - } - - /** - * Create our message 1. - * - * @return string - */ - protected function createMessage1() - { - return self::NTLMSIG - .$this->createByte('01') // Message 1 -.$this->createByte('0702'); // Flags - } - - /** - * Create our message 3. - * - * @param string $domain - * @param string $username - * @param string $workstation - * @param string $lmResponse - * @param string $ntlmResponse - * - * @return string - */ - protected function createMessage3($domain, $username, $workstation, $lmResponse, $ntlmResponse) - { - // Create security buffers - $domainSec = $this->createSecurityBuffer($domain, 64); - $domainInfo = $this->readSecurityBuffer(bin2hex($domainSec)); - $userSec = $this->createSecurityBuffer($username, ($domainInfo[0] + $domainInfo[1]) / 2); - $userInfo = $this->readSecurityBuffer(bin2hex($userSec)); - $workSec = $this->createSecurityBuffer($workstation, ($userInfo[0] + $userInfo[1]) / 2); - $workInfo = $this->readSecurityBuffer(bin2hex($workSec)); - $lmSec = $this->createSecurityBuffer($lmResponse, ($workInfo[0] + $workInfo[1]) / 2, true); - $lmInfo = $this->readSecurityBuffer(bin2hex($lmSec)); - $ntlmSec = $this->createSecurityBuffer($ntlmResponse, ($lmInfo[0] + $lmInfo[1]) / 2, true); - - return self::NTLMSIG - .$this->createByte('03') // TYPE 3 message -.$lmSec // LM response header -.$ntlmSec // NTLM response header -.$domainSec // Domain header -.$userSec // User header -.$workSec // Workstation header -.$this->createByte('000000009a', 8) // session key header (empty) -.$this->createByte('01020000') // FLAGS -.$this->convertTo16bit($domain) // domain name -.$this->convertTo16bit($username) // username -.$this->convertTo16bit($workstation) // workstation -.$lmResponse - .$ntlmResponse; - } - - /** - * @param string $timestamp Epoch timestamp in microseconds - * @param string $client Random bytes - * @param string $targetInfo - * - * @return string - */ - protected function createBlob($timestamp, $client, $targetInfo) - { - return $this->createByte('0101') - .$this->createByte('00') - .$timestamp - .$client - .$this->createByte('00') - .$targetInfo - .$this->createByte('00'); - } - - /** - * Get domain and username from our username. - * - * @example DOMAIN\username - * - * @param string $name - * - * @return array - */ - protected function getDomainAndUsername($name) - { - if (false !== strpos($name, '\\')) { - return explode('\\', $name); - } - - if (false !== strpos($name, '@')) { - list($user, $domain) = explode('@', $name); - - return [$domain, $user]; - } - - // no domain passed - return ['', $name]; - } - - /** - * Create LMv1 response. - * - * @param string $password - * @param string $challenge - * - * @return string - */ - protected function createLMPassword($password, $challenge) - { - // FIRST PART - $password = $this->createByte(strtoupper($password), 14, false); - list($key1, $key2) = str_split($password, 7); - - $desKey1 = $this->createDesKey($key1); - $desKey2 = $this->createDesKey($key2); - - $constantDecrypt = $this->createByte($this->desEncrypt(self::DESCONST, $desKey1).$this->desEncrypt(self::DESCONST, $desKey2), 21, false); - - // SECOND PART - list($key1, $key2, $key3) = str_split($constantDecrypt, 7); - - $desKey1 = $this->createDesKey($key1); - $desKey2 = $this->createDesKey($key2); - $desKey3 = $this->createDesKey($key3); - - return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); - } - - /** - * Create NTLMv1 response. - * - * @param string $password - * @param string $challenge - * - * @return string - */ - protected function createNTLMPassword($password, $challenge) - { - // FIRST PART - $ntlmHash = $this->createByte($this->md4Encrypt($password), 21, false); - list($key1, $key2, $key3) = str_split($ntlmHash, 7); - - $desKey1 = $this->createDesKey($key1); - $desKey2 = $this->createDesKey($key2); - $desKey3 = $this->createDesKey($key3); - - return $this->desEncrypt($challenge, $desKey1).$this->desEncrypt($challenge, $desKey2).$this->desEncrypt($challenge, $desKey3); - } - - /** - * Convert a normal timestamp to a tenth of a microtime epoch time. - * - * @param string $time - * - * @return string - */ - protected function getCorrectTimestamp($time) - { - // Get our timestamp (tricky!) - $time = number_format($time, 0, '.', ''); // save microtime to string - $time = bcadd($time, '11644473600000', 0); // add epoch time - $time = bcmul($time, 10000, 0); // tenths of a microsecond. - - $binary = $this->si2bin($time, 64); // create 64 bit binary string - $timestamp = ''; - for ($i = 0; $i < 8; ++$i) { - $timestamp .= \chr(bindec(substr($binary, -(($i + 1) * 8), 8))); - } - - return $timestamp; - } - - /** - * Create LMv2 response. - * - * @param string $password - * @param string $username - * @param string $domain - * @param string $challenge NTLM Challenge - * @param string $client Random string - * - * @return string - */ - protected function createLMv2Password($password, $username, $domain, $challenge, $client) - { - $lmPass = '00'; // by default 00 - // if $password > 15 than we can't use this method - if (\strlen($password) <= 15) { - $ntlmHash = $this->md4Encrypt($password); - $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); - - $lmPass = bin2hex($this->md5Encrypt($ntml2Hash, $challenge.$client).$client); - } - - return $this->createByte($lmPass, 24); - } - - /** - * Create NTLMv2 response. - * - * @param string $password - * @param string $username - * @param string $domain - * @param string $challenge Hex values - * @param string $targetInfo Hex values - * @param string $timestamp - * @param string $client Random bytes - * - * @return string - * - * @see http://davenport.sourceforge.net/ntlm.html#theNtlmResponse - */ - protected function createNTLMv2Hash($password, $username, $domain, $challenge, $targetInfo, $timestamp, $client) - { - $ntlmHash = $this->md4Encrypt($password); - $ntml2Hash = $this->md5Encrypt($ntlmHash, $this->convertTo16bit(strtoupper($username).$domain)); - - // create blob - $blob = $this->createBlob($timestamp, $client, $targetInfo); - - $ntlmv2Response = $this->md5Encrypt($ntml2Hash, $challenge.$blob); - - return $ntlmv2Response.$blob; - } - - protected function createDesKey($key) - { - $material = [bin2hex($key[0])]; - $len = \strlen($key); - for ($i = 1; $i < $len; ++$i) { - list($high, $low) = str_split(bin2hex($key[$i])); - $v = $this->castToByte(\ord($key[$i - 1]) << (7 + 1 - $i) | $this->uRShift(hexdec(dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xf)), $i)); - $material[] = str_pad(substr(dechex($v), -2), 2, '0', STR_PAD_LEFT); // cast to byte - } - $material[] = str_pad(substr(dechex($this->castToByte(\ord($key[6]) << 1)), -2), 2, '0'); - - // odd parity - foreach ($material as $k => $v) { - $b = $this->castToByte(hexdec($v)); - $needsParity = 0 == (($this->uRShift($b, 7) ^ $this->uRShift($b, 6) ^ $this->uRShift($b, 5) - ^ $this->uRShift($b, 4) ^ $this->uRShift($b, 3) ^ $this->uRShift($b, 2) - ^ $this->uRShift($b, 1)) & 0x01); - - list($high, $low) = str_split($v); - if ($needsParity) { - $material[$k] = dechex(hexdec($high) | 0x0).dechex(hexdec($low) | 0x1); - } else { - $material[$k] = dechex(hexdec($high) & 0xf).dechex(hexdec($low) & 0xe); - } - } - - return hex2bin(implode('', $material)); - } - - /** HELPER FUNCTIONS */ - - /** - * Create our security buffer depending on length and offset. - * - * @param string $value Value we want to put in - * @param int $offset start of value - * @param bool $is16 Do we 16bit string or not? - * - * @return string - */ - protected function createSecurityBuffer($value, $offset, $is16 = false) - { - $length = \strlen(bin2hex($value)); - $length = $is16 ? $length / 2 : $length; - $length = $this->createByte(str_pad(dechex($length), 2, '0', STR_PAD_LEFT), 2); - - return $length.$length.$this->createByte(dechex($offset), 4); - } - - /** - * Read our security buffer to fetch length and offset of our value. - * - * @param string $value Securitybuffer in hex - * - * @return array array with length and offset - */ - protected function readSecurityBuffer($value) - { - $length = floor(hexdec(substr($value, 0, 4)) / 256) * 2; - $offset = floor(hexdec(substr($value, 8, 4)) / 256) * 2; - - return [$length, $offset]; - } - - /** - * Cast to byte java equivalent to (byte). - * - * @param int $v - * - * @return int - */ - protected function castToByte($v) - { - return (($v + 128) % 256) - 128; - } - - /** - * Java unsigned right bitwise - * $a >>> $b. - * - * @param int $a - * @param int $b - * - * @return int - */ - protected function uRShift($a, $b) - { - if (0 == $b) { - return $a; - } - - return ($a >> $b) & ~(1 << (8 * PHP_INT_SIZE - 1) >> ($b - 1)); - } - - /** - * Right padding with 0 to certain length. - * - * @param string $input - * @param int $bytes Length of bytes - * @param bool $isHex Did we provided hex value - * - * @return string - */ - protected function createByte($input, $bytes = 4, $isHex = true) - { - if ($isHex) { - $byte = hex2bin(str_pad($input, $bytes * 2, '00')); - } else { - $byte = str_pad($input, $bytes, "\x00"); - } - - return $byte; - } - - /** ENCRYPTION ALGORITHMS */ - - /** - * DES Encryption. - * - * @param string $value An 8-byte string - * @param string $key - * - * @return string - */ - protected function desEncrypt($value, $key) - { - return substr(openssl_encrypt($value, 'DES-ECB', $key, \OPENSSL_RAW_DATA), 0, 8); - } - - /** - * MD5 Encryption. - * - * @param string $key Encryption key - * @param string $msg Message to encrypt - * - * @return string - */ - protected function md5Encrypt($key, $msg) - { - $blocksize = 64; - if (\strlen($key) > $blocksize) { - $key = pack('H*', md5($key)); - } - - $key = str_pad($key, $blocksize, "\0"); - $ipadk = $key ^ str_repeat("\x36", $blocksize); - $opadk = $key ^ str_repeat("\x5c", $blocksize); - - return pack('H*', md5($opadk.pack('H*', md5($ipadk.$msg)))); - } - - /** - * MD4 Encryption. - * - * @param string $input - * - * @return string - * - * @see https://secure.php.net/manual/en/ref.hash.php - */ - protected function md4Encrypt($input) - { - $input = $this->convertTo16bit($input); - - return \function_exists('hash') ? hex2bin(hash('md4', $input)) : mhash(MHASH_MD4, $input); - } - - /** - * Convert UTF-8 to UTF-16. - * - * @param string $input - * - * @return string - */ - protected function convertTo16bit($input) - { - return iconv('UTF-8', 'UTF-16LE', $input); - } - - /** - * @param string $message - */ - protected function debug($message) - { - $message = bin2hex($message); - $messageId = substr($message, 16, 8); - echo substr($message, 0, 16)." NTLMSSP Signature
\n"; - echo $messageId." Type Indicator
\n"; - - if ('02000000' == $messageId) { - $map = [ - 'Challenge', - 'Context', - 'Target Information Security Buffer', - 'Target Name Data', - 'NetBIOS Domain Name', - 'NetBIOS Server Name', - 'DNS Domain Name', - 'DNS Server Name', - 'BLOB', - 'Target Information Terminator', - ]; - - $data = $this->parseMessage2(hex2bin($message)); - - foreach ($map as $key => $value) { - echo bin2hex($data[$key]).' - '.$data[$key].' ||| '.$value."
\n"; - } - } elseif ('03000000' == $messageId) { - $i = 0; - $data[$i++] = substr($message, 24, 16); - list($lmLength, $lmOffset) = $this->readSecurityBuffer($data[$i - 1]); - - $data[$i++] = substr($message, 40, 16); - list($ntmlLength, $ntmlOffset) = $this->readSecurityBuffer($data[$i - 1]); - - $data[$i++] = substr($message, 56, 16); - list($targetLength, $targetOffset) = $this->readSecurityBuffer($data[$i - 1]); - - $data[$i++] = substr($message, 72, 16); - list($userLength, $userOffset) = $this->readSecurityBuffer($data[$i - 1]); - - $data[$i++] = substr($message, 88, 16); - list($workLength, $workOffset) = $this->readSecurityBuffer($data[$i - 1]); - - $data[$i++] = substr($message, 104, 16); - $data[$i++] = substr($message, 120, 8); - $data[$i++] = substr($message, $targetOffset, $targetLength); - $data[$i++] = substr($message, $userOffset, $userLength); - $data[$i++] = substr($message, $workOffset, $workLength); - $data[$i++] = substr($message, $lmOffset, $lmLength); - $data[$i] = substr($message, $ntmlOffset, $ntmlLength); - - $map = [ - 'LM Response Security Buffer', - 'NTLM Response Security Buffer', - 'Target Name Security Buffer', - 'User Name Security Buffer', - 'Workstation Name Security Buffer', - 'Session Key Security Buffer', - 'Flags', - 'Target Name Data', - 'User Name Data', - 'Workstation Name Data', - 'LM Response Data', - 'NTLM Response Data', - ]; - - foreach ($map as $key => $value) { - echo $data[$key].' - '.hex2bin($data[$key]).' ||| '.$value."
\n"; - } - } - - echo '

'; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php deleted file mode 100644 index 41d0a50a8..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php +++ /dev/null @@ -1,44 +0,0 @@ -executeCommand(sprintf("AUTH PLAIN %s\r\n", $message), [235]); - - return true; - } catch (Swift_TransportException $e) { - $agent->executeCommand("RSET\r\n", [250]); - - throw $e; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php deleted file mode 100644 index 859f22f3d..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Auth/XOAuth2Authenticator.php +++ /dev/null @@ -1,64 +0,0 @@ - - * $transport = (new Swift_SmtpTransport('smtp.gmail.com', 587, 'tls')) - * ->setAuthMode('XOAUTH2') - * ->setUsername('YOUR_EMAIL_ADDRESS') - * ->setPassword('YOUR_ACCESS_TOKEN'); - * - * - * @author xu.li - * - * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol - */ -class Swift_Transport_Esmtp_Auth_XOAuth2Authenticator implements Swift_Transport_Esmtp_Authenticator -{ - /** - * Get the name of the AUTH mechanism this Authenticator handles. - * - * @return string - */ - public function getAuthKeyword() - { - return 'XOAUTH2'; - } - - /** - * {@inheritdoc} - */ - public function authenticate(Swift_Transport_SmtpAgent $agent, $email, $token) - { - try { - $param = $this->constructXOAuth2Params($email, $token); - $agent->executeCommand('AUTH XOAUTH2 '.$param."\r\n", [235]); - - return true; - } catch (Swift_TransportException $e) { - $agent->executeCommand("RSET\r\n", [250]); - - throw $e; - } - } - - /** - * Construct the auth parameter. - * - * @see https://developers.google.com/google-apps/gmail/xoauth2_protocol#the_sasl_xoauth2_mechanism - */ - protected function constructXOAuth2Params($email, $token) - { - return base64_encode("user=$email\1auth=Bearer $token\1\1"); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php deleted file mode 100644 index 53a90a873..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/AuthHandler.php +++ /dev/null @@ -1,268 +0,0 @@ -setAuthenticators($authenticators); - } - - /** - * Set the Authenticators which can process a login request. - * - * @param Swift_Transport_Esmtp_Authenticator[] $authenticators - */ - public function setAuthenticators(array $authenticators) - { - $this->authenticators = $authenticators; - } - - /** - * Get the Authenticators which can process a login request. - * - * @return Swift_Transport_Esmtp_Authenticator[] - */ - public function getAuthenticators() - { - return $this->authenticators; - } - - /** - * Set the username to authenticate with. - * - * @param string $username - */ - public function setUsername($username) - { - $this->username = $username; - } - - /** - * Get the username to authenticate with. - * - * @return string - */ - public function getUsername() - { - return $this->username; - } - - /** - * Set the password to authenticate with. - * - * @param string $password - */ - public function setPassword($password) - { - $this->password = $password; - } - - /** - * Get the password to authenticate with. - * - * @return string - */ - public function getPassword() - { - return $this->password; - } - - /** - * Set the auth mode to use to authenticate. - * - * @param string $mode - */ - public function setAuthMode($mode) - { - $this->auth_mode = $mode; - } - - /** - * Get the auth mode to use to authenticate. - * - * @return string - */ - public function getAuthMode() - { - return $this->auth_mode; - } - - /** - * Get the name of the ESMTP extension this handles. - * - * @return string - */ - public function getHandledKeyword() - { - return 'AUTH'; - } - - /** - * Set the parameters which the EHLO greeting indicated. - * - * @param string[] $parameters - */ - public function setKeywordParams(array $parameters) - { - $this->esmtpParams = $parameters; - } - - /** - * Runs immediately after a EHLO has been issued. - * - * @param Swift_Transport_SmtpAgent $agent to read/write - */ - public function afterEhlo(Swift_Transport_SmtpAgent $agent) - { - if ($this->username) { - $count = 0; - $errors = []; - foreach ($this->getAuthenticatorsForAgent() as $authenticator) { - if (\in_array(strtolower($authenticator->getAuthKeyword() ?? ''), array_map('strtolower', $this->esmtpParams))) { - ++$count; - try { - if ($authenticator->authenticate($agent, $this->username, $this->password)) { - return; - } - } catch (Swift_TransportException $e) { - // keep the error message, but tries the other authenticators - $errors[] = [$authenticator->getAuthKeyword(), $e->getMessage()]; - } - } - } - - $message = 'Failed to authenticate on SMTP server with username "'.$this->username.'" using '.$count.' possible authenticators.'; - foreach ($errors as $error) { - $message .= ' Authenticator '.$error[0].' returned '.$error[1].'.'; - } - throw new Swift_TransportException($message); - } - } - - /** - * Not used. - */ - public function getMailParams() - { - return []; - } - - /** - * Not used. - */ - public function getRcptParams() - { - return []; - } - - /** - * Not used. - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false) - { - } - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * - * This method is called to ensure extensions can be execute in an appropriate order. - * - * @param string $esmtpKeyword to compare with - * - * @return int - */ - public function getPriorityOver($esmtpKeyword) - { - return 0; - } - - /** - * Returns an array of method names which are exposed to the Esmtp class. - * - * @return string[] - */ - public function exposeMixinMethods() - { - return ['setUsername', 'getUsername', 'setPassword', 'getPassword', 'setAuthMode', 'getAuthMode']; - } - - /** - * Not used. - */ - public function resetState() - { - } - - /** - * Returns the authenticator list for the given agent. - * - * @return array - */ - protected function getAuthenticatorsForAgent() - { - if (!$mode = strtolower($this->auth_mode ?? '')) { - return $this->authenticators; - } - - foreach ($this->authenticators as $authenticator) { - if (strtolower($authenticator->getAuthKeyword() ?? '') == $mode) { - return [$authenticator]; - } - } - - throw new Swift_TransportException('Auth mode '.$mode.' is invalid'); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php deleted file mode 100644 index f692a6fe4..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/Authenticator.php +++ /dev/null @@ -1,36 +0,0 @@ -encoding = $encoding; - } - - /** - * Get the name of the ESMTP extension this handles. - * - * @return string - */ - public function getHandledKeyword() - { - return '8BITMIME'; - } - - /** - * Not used. - */ - public function setKeywordParams(array $parameters) - { - } - - /** - * Not used. - */ - public function afterEhlo(Swift_Transport_SmtpAgent $agent) - { - } - - /** - * Get params which are appended to MAIL FROM:<>. - * - * @return string[] - */ - public function getMailParams() - { - return ['BODY='.$this->encoding]; - } - - /** - * Not used. - */ - public function getRcptParams() - { - return []; - } - - /** - * Not used. - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false) - { - } - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * - * This method is called to ensure extensions can be execute in an appropriate order. - * - * @param string $esmtpKeyword to compare with - * - * @return int - */ - public function getPriorityOver($esmtpKeyword) - { - return 0; - } - - /** - * Not used. - */ - public function exposeMixinMethods() - { - return []; - } - - /** - * Not used. - */ - public function resetState() - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php deleted file mode 100644 index 7d0252a01..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/Esmtp/SmtpUtf8Handler.php +++ /dev/null @@ -1,107 +0,0 @@ -. - * - * @return string[] - */ - public function getMailParams() - { - return ['SMTPUTF8']; - } - - /** - * Not used. - */ - public function getRcptParams() - { - return []; - } - - /** - * Not used. - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false) - { - } - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * - * This method is called to ensure extensions can be execute in an appropriate order. - * - * @param string $esmtpKeyword to compare with - * - * @return int - */ - public function getPriorityOver($esmtpKeyword) - { - return 0; - } - - /** - * Not used. - */ - public function exposeMixinMethods() - { - return []; - } - - /** - * Not used. - */ - public function resetState() - { - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php deleted file mode 100644 index b8ea36e2f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpHandler.php +++ /dev/null @@ -1,86 +0,0 @@ -. - * - * @return string[] - */ - public function getMailParams(); - - /** - * Get params which are appended to RCPT TO:<>. - * - * @return string[] - */ - public function getRcptParams(); - - /** - * Runs when a command is due to be sent. - * - * @param Swift_Transport_SmtpAgent $agent to read/write - * @param string $command to send - * @param int[] $codes expected in response - * @param string[] $failedRecipients to collect failures - * @param bool $stop to be set true by-reference if the command is now sent - */ - public function onCommand(Swift_Transport_SmtpAgent $agent, $command, $codes = [], &$failedRecipients = null, &$stop = false); - - /** - * Returns +1, -1 or 0 according to the rules for usort(). - * - * This method is called to ensure extensions can be execute in an appropriate order. - * - * @param string $esmtpKeyword to compare with - * - * @return int - */ - public function getPriorityOver($esmtpKeyword); - - /** - * Returns an array of method names which are exposed to the Esmtp class. - * - * @return string[] - */ - public function exposeMixinMethods(); - - /** - * Tells this handler to clear any buffers and reset its state. - */ - public function resetState(); -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php deleted file mode 100644 index 36545f51f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/EsmtpTransport.php +++ /dev/null @@ -1,446 +0,0 @@ - 'tcp', - 'host' => 'localhost', - 'port' => 25, - 'timeout' => 30, - 'blocking' => 1, - 'tls' => false, - 'type' => Swift_Transport_IoBuffer::TYPE_SOCKET, - 'stream_context_options' => [], - ]; - - /** - * Creates a new EsmtpTransport using the given I/O buffer. - * - * @param Swift_Transport_EsmtpHandler[] $extensionHandlers - * @param string $localDomain - */ - public function __construct(Swift_Transport_IoBuffer $buf, array $extensionHandlers, Swift_Events_EventDispatcher $dispatcher, $localDomain = '127.0.0.1', Swift_AddressEncoder $addressEncoder = null) - { - parent::__construct($buf, $dispatcher, $localDomain, $addressEncoder); - $this->setExtensionHandlers($extensionHandlers); - } - - /** - * Set the host to connect to. - * - * Literal IPv6 addresses should be wrapped in square brackets. - * - * @param string $host - * - * @return $this - */ - public function setHost($host) - { - $this->params['host'] = $host; - - return $this; - } - - /** - * Get the host to connect to. - * - * @return string - */ - public function getHost() - { - return $this->params['host']; - } - - /** - * Set the port to connect to. - * - * @param int $port - * - * @return $this - */ - public function setPort($port) - { - $this->params['port'] = (int) $port; - - return $this; - } - - /** - * Get the port to connect to. - * - * @return int - */ - public function getPort() - { - return $this->params['port']; - } - - /** - * Set the connection timeout. - * - * @param int $timeout seconds - * - * @return $this - */ - public function setTimeout($timeout) - { - $this->params['timeout'] = (int) $timeout; - $this->buffer->setParam('timeout', (int) $timeout); - - return $this; - } - - /** - * Get the connection timeout. - * - * @return int - */ - public function getTimeout() - { - return $this->params['timeout']; - } - - /** - * Set the encryption type (tls or ssl). - * - * @param string $encryption - * - * @return $this - */ - public function setEncryption($encryption) - { - $encryption = strtolower($encryption ?? ''); - if ('tls' == $encryption) { - $this->params['protocol'] = 'tcp'; - $this->params['tls'] = true; - } else { - $this->params['protocol'] = $encryption; - $this->params['tls'] = false; - } - - return $this; - } - - /** - * Get the encryption type. - * - * @return string - */ - public function getEncryption() - { - return $this->params['tls'] ? 'tls' : $this->params['protocol']; - } - - /** - * Sets the stream context options. - * - * @param array $options - * - * @return $this - */ - public function setStreamOptions($options) - { - $this->params['stream_context_options'] = $options; - - return $this; - } - - /** - * Returns the stream context options. - * - * @return array - */ - public function getStreamOptions() - { - return $this->params['stream_context_options']; - } - - /** - * Sets the source IP. - * - * IPv6 addresses should be wrapped in square brackets. - * - * @param string $source - * - * @return $this - */ - public function setSourceIp($source) - { - $this->params['sourceIp'] = $source; - - return $this; - } - - /** - * Returns the IP used to connect to the destination. - * - * @return string - */ - public function getSourceIp() - { - return $this->params['sourceIp'] ?? null; - } - - /** - * Sets whether SMTP pipelining is enabled. - * - * By default, support is auto-detected using the PIPELINING SMTP extension. - * Use this function to override that in the unlikely event of compatibility - * issues. - * - * @param bool $enabled - * - * @return $this - */ - public function setPipelining($enabled) - { - $this->pipelining = $enabled; - - return $this; - } - - /** - * Returns whether SMTP pipelining is enabled. - * - * @return bool|null a boolean if pipelining is explicitly enabled or disabled, - * or null if support is auto-detected - */ - public function getPipelining() - { - return $this->pipelining; - } - - /** - * Set ESMTP extension handlers. - * - * @param Swift_Transport_EsmtpHandler[] $handlers - * - * @return $this - */ - public function setExtensionHandlers(array $handlers) - { - $assoc = []; - foreach ($handlers as $handler) { - $assoc[$handler->getHandledKeyword()] = $handler; - } - uasort($assoc, function ($a, $b) { - return $a->getPriorityOver($b->getHandledKeyword()); - }); - $this->handlers = $assoc; - $this->setHandlerParams(); - - return $this; - } - - /** - * Get ESMTP extension handlers. - * - * @return Swift_Transport_EsmtpHandler[] - */ - public function getExtensionHandlers() - { - return array_values($this->handlers); - } - - /** - * Run a command against the buffer, expecting the given response codes. - * - * If no response codes are given, the response will not be validated. - * If codes are given, an exception will be thrown on an invalid response. - * - * @param string $command - * @param int[] $codes - * @param string[] $failures An array of failures by-reference - * @param bool $pipeline Do not wait for response - * @param string $address the address, if command is RCPT TO - * - * @return string|null The server response, or null if pipelining is enabled - */ - public function executeCommand($command, $codes = [], &$failures = null, $pipeline = false, $address = null) - { - $failures = (array) $failures; - $stopSignal = false; - $response = null; - foreach ($this->getActiveHandlers() as $handler) { - $response = $handler->onCommand( - $this, $command, $codes, $failures, $stopSignal - ); - if ($stopSignal) { - return $response; - } - } - - return parent::executeCommand($command, $codes, $failures, $pipeline, $address); - } - - /** Mixin handling method for ESMTP handlers */ - public function __call($method, $args) - { - foreach ($this->handlers as $handler) { - if (\in_array(strtolower($method), - array_map('strtolower', (array) $handler->exposeMixinMethods()) - )) { - $return = \call_user_func_array([$handler, $method], $args); - // Allow fluid method calls - if (null === $return && 'set' == substr($method, 0, 3)) { - return $this; - } else { - return $return; - } - } - } - trigger_error('Call to undefined method '.$method, E_USER_ERROR); - } - - /** Get the params to initialize the buffer */ - protected function getBufferParams() - { - return $this->params; - } - - /** Overridden to perform EHLO instead */ - protected function doHeloCommand() - { - try { - $response = $this->executeCommand( - sprintf("EHLO %s\r\n", $this->domain), [250] - ); - } catch (Swift_TransportException $e) { - return parent::doHeloCommand(); - } - - if ($this->params['tls']) { - try { - $this->executeCommand("STARTTLS\r\n", [220]); - - if (!$this->buffer->startTLS()) { - throw new Swift_TransportException('Unable to connect with TLS encryption'); - } - - try { - $response = $this->executeCommand( - sprintf("EHLO %s\r\n", $this->domain), [250] - ); - } catch (Swift_TransportException $e) { - return parent::doHeloCommand(); - } - } catch (Swift_TransportException $e) { - $this->throwException($e); - } - } - - $this->capabilities = $this->getCapabilities($response); - if (!isset($this->pipelining)) { - $this->pipelining = isset($this->capabilities['PIPELINING']); - } - - $this->setHandlerParams(); - foreach ($this->getActiveHandlers() as $handler) { - $handler->afterEhlo($this); - } - } - - /** Overridden to add Extension support */ - protected function doMailFromCommand($address) - { - $address = $this->addressEncoder->encodeString($address); - $handlers = $this->getActiveHandlers(); - $params = []; - foreach ($handlers as $handler) { - $params = array_merge($params, (array) $handler->getMailParams()); - } - $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; - $this->executeCommand( - sprintf("MAIL FROM:<%s>%s\r\n", $address, $paramStr), [250], $failures, true - ); - } - - /** Overridden to add Extension support */ - protected function doRcptToCommand($address) - { - $address = $this->addressEncoder->encodeString($address); - $handlers = $this->getActiveHandlers(); - $params = []; - foreach ($handlers as $handler) { - $params = array_merge($params, (array) $handler->getRcptParams()); - } - $paramStr = !empty($params) ? ' '.implode(' ', $params) : ''; - $this->executeCommand( - sprintf("RCPT TO:<%s>%s\r\n", $address, $paramStr), [250, 251, 252], $failures, true, $address - ); - } - - /** Determine ESMTP capabilities by function group */ - private function getCapabilities($ehloResponse) - { - $capabilities = []; - $ehloResponse = trim($ehloResponse ?? ''); - $lines = explode("\r\n", $ehloResponse); - array_shift($lines); - foreach ($lines as $line) { - if (preg_match('/^[0-9]{3}[ -]([A-Z0-9-]+)((?:[ =].*)?)$/Di', $line, $matches)) { - $keyword = strtoupper($matches[1]); - $paramStr = strtoupper(ltrim($matches[2], ' =')); - $params = !empty($paramStr) ? explode(' ', $paramStr) : []; - $capabilities[$keyword] = $params; - } - } - - return $capabilities; - } - - /** Set parameters which are used by each extension handler */ - private function setHandlerParams() - { - foreach ($this->handlers as $keyword => $handler) { - if (\array_key_exists($keyword, $this->capabilities)) { - $handler->setKeywordParams($this->capabilities[$keyword]); - } - } - } - - /** Get ESMTP handlers which are currently ok to use */ - private function getActiveHandlers() - { - $handlers = []; - foreach ($this->handlers as $keyword => $handler) { - if (\array_key_exists($keyword, $this->capabilities)) { - $handlers[] = $handler; - } - } - - return $handlers; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php deleted file mode 100644 index 1a4b4754f..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/FailoverTransport.php +++ /dev/null @@ -1,103 +0,0 @@ -transports); - for ($i = 0; $i < $maxTransports - && $transport = $this->getNextTransport(); ++$i) { - if ($transport->ping()) { - return true; - } else { - $this->killCurrentTransport(); - } - } - - return \count($this->transports) > 0; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retrieved from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - $maxTransports = \count($this->transports); - $sent = 0; - $this->lastUsedTransport = null; - - for ($i = 0; $i < $maxTransports - && $transport = $this->getNextTransport(); ++$i) { - try { - if (!$transport->isStarted()) { - $transport->start(); - } - - if ($sent = $transport->send($message, $failedRecipients)) { - $this->lastUsedTransport = $transport; - - return $sent; - } - } catch (Swift_TransportException $e) { - $this->killCurrentTransport(); - } - } - - if (0 == \count($this->transports)) { - throw new Swift_TransportException('All Transports in FailoverTransport failed, or no Transports available'); - } - - return $sent; - } - - protected function getNextTransport() - { - if (!isset($this->currentTransport)) { - $this->currentTransport = parent::getNextTransport(); - } - - return $this->currentTransport; - } - - protected function killCurrentTransport() - { - $this->currentTransport = null; - parent::killCurrentTransport(); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php deleted file mode 100644 index 50f1e5e40..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/IoBuffer.php +++ /dev/null @@ -1,65 +0,0 @@ -transports = $transports; - $this->deadTransports = []; - } - - /** - * Get $transports to delegate to. - * - * @return Swift_Transport[] - */ - public function getTransports() - { - return array_merge($this->transports, $this->deadTransports); - } - - /** - * Get the Transport used in the last successful send operation. - * - * @return Swift_Transport - */ - public function getLastUsedTransport() - { - return $this->lastUsedTransport; - } - - /** - * Test if this Transport mechanism has started. - * - * @return bool - */ - public function isStarted() - { - return \count($this->transports) > 0; - } - - /** - * Start this Transport mechanism. - */ - public function start() - { - $this->transports = array_merge($this->transports, $this->deadTransports); - } - - /** - * Stop this Transport mechanism. - */ - public function stop() - { - foreach ($this->transports as $transport) { - $transport->stop(); - } - } - - /** - * {@inheritdoc} - */ - public function ping() - { - foreach ($this->transports as $transport) { - if (!$transport->ping()) { - $this->killCurrentTransport(); - } - } - - return \count($this->transports) > 0; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retrieved from the Message API. - * The return value is the number of recipients who were accepted for delivery. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - $maxTransports = \count($this->transports); - $sent = 0; - $this->lastUsedTransport = null; - - for ($i = 0; $i < $maxTransports - && $transport = $this->getNextTransport(); ++$i) { - try { - if (!$transport->isStarted()) { - $transport->start(); - } - if ($sent = $transport->send($message, $failedRecipients)) { - $this->lastUsedTransport = $transport; - break; - } - } catch (Swift_TransportException $e) { - $this->killCurrentTransport(); - } - } - - if (0 == \count($this->transports)) { - throw new Swift_TransportException('All Transports in LoadBalancedTransport failed, or no Transports available'); - } - - return $sent; - } - - /** - * Register a plugin. - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - foreach ($this->transports as $transport) { - $transport->registerPlugin($plugin); - } - } - - /** - * Rotates the transport list around and returns the first instance. - * - * @return Swift_Transport - */ - protected function getNextTransport() - { - if ($next = array_shift($this->transports)) { - $this->transports[] = $next; - } - - return $next; - } - - /** - * Tag the currently used (top of stack) transport as dead/useless. - */ - protected function killCurrentTransport() - { - if ($transport = array_pop($this->transports)) { - try { - $transport->stop(); - } catch (Exception $e) { - } - $this->deadTransports[] = $transport; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php deleted file mode 100644 index 7d910db5a..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/NullTransport.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Pretends messages have been sent, but just ignores them. - * - * @author Fabien Potencier - */ -class Swift_Transport_NullTransport implements Swift_Transport -{ - /** The event dispatcher from the plugin API */ - private $eventDispatcher; - - /** - * Constructor. - */ - public function __construct(Swift_Events_EventDispatcher $eventDispatcher) - { - $this->eventDispatcher = $eventDispatcher; - } - - /** - * Tests if this Transport mechanism has started. - * - * @return bool - */ - public function isStarted() - { - return true; - } - - /** - * Starts this Transport mechanism. - */ - public function start() - { - } - - /** - * Stops this Transport mechanism. - */ - public function stop() - { - } - - /** - * {@inheritdoc} - */ - public function ping() - { - return true; - } - - /** - * Sends the given message. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int The number of sent emails - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) { - return 0; - } - } - - if ($evt) { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $count = ( - \count((array) $message->getTo()) - + \count((array) $message->getCc()) - + \count((array) $message->getBcc()) - ); - - return $count; - } - - /** - * Register a plugin. - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->eventDispatcher->bindEventListener($plugin); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php deleted file mode 100644 index 65a434d11..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SendmailTransport.php +++ /dev/null @@ -1,158 +0,0 @@ - 30, - 'blocking' => 1, - 'command' => '/usr/sbin/sendmail -bs', - 'type' => Swift_Transport_IoBuffer::TYPE_PROCESS, - ]; - - /** - * Create a new SendmailTransport with $buf for I/O. - * - * @param string $localDomain - */ - public function __construct(Swift_Transport_IoBuffer $buf, Swift_Events_EventDispatcher $dispatcher, $localDomain = '127.0.0.1', Swift_AddressEncoder $addressEncoder = null) - { - parent::__construct($buf, $dispatcher, $localDomain, $addressEncoder); - } - - /** - * Start the standalone SMTP session if running in -bs mode. - */ - public function start() - { - if (false !== strpos($this->getCommand(), ' -bs')) { - parent::start(); - } - } - - /** - * Set the command to invoke. - * - * If using -t mode you are strongly advised to include -oi or -i in the flags. - * For example: /usr/sbin/sendmail -oi -t - * Swift will append a -f flag if one is not present. - * - * The recommended mode is "-bs" since it is interactive and failure notifications - * are hence possible. - * - * @param string $command - * - * @return $this - */ - public function setCommand($command) - { - $this->params['command'] = $command; - - return $this; - } - - /** - * Get the sendmail command which will be invoked. - * - * @return string - */ - public function getCommand() - { - return $this->params['command']; - } - - /** - * Send the given Message. - * - * Recipient/sender data will be retrieved from the Message API. - * - * The return value is the number of recipients who were accepted for delivery. - * NOTE: If using 'sendmail -t' you will not be aware of any failures until - * they bounce (i.e. send() will always return 100% success). - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - $failedRecipients = (array) $failedRecipients; - $command = $this->getCommand(); - $buffer = $this->getBuffer(); - $count = 0; - - if (false !== strpos($command, ' -t')) { - if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) { - return 0; - } - } - - if (false === strpos($command, ' -f')) { - $command .= ' -f'.escapeshellarg($this->getReversePath($message) ?? ''); - } - - $buffer->initialize(array_merge($this->params, ['command' => $command])); - - if (false === strpos($command, ' -i') && false === strpos($command, ' -oi')) { - $buffer->setWriteTranslations(["\r\n" => "\n", "\n." => "\n.."]); - } else { - $buffer->setWriteTranslations(["\r\n" => "\n"]); - } - - $count = \count((array) $message->getTo()) - + \count((array) $message->getCc()) - + \count((array) $message->getBcc()) - ; - $message->toByteStream($buffer); - $buffer->flushBuffers(); - $buffer->setWriteTranslations([]); - $buffer->terminate(); - - if ($evt) { - $evt->setResult(Swift_Events_SendEvent::RESULT_SUCCESS); - $evt->setFailedRecipients($failedRecipients); - $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - $message->generateId(); - } elseif (false !== strpos($command, ' -bs')) { - $count = parent::send($message, $failedRecipients); - } else { - $this->throwException(new Swift_TransportException( - 'Unsupported sendmail command flags ['.$command.']. '. - 'Must be one of "-bs" or "-t" but can include additional flags.' - )); - } - - return $count; - } - - /** Get the params to initialize the buffer */ - protected function getBufferParams() - { - return $this->params; - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php deleted file mode 100644 index e8ce65c26..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/SmtpAgent.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -/** - * Stores Messages in a queue. - * - * @author Fabien Potencier - */ -class Swift_Transport_SpoolTransport implements Swift_Transport -{ - /** The spool instance */ - private $spool; - - /** The event dispatcher from the plugin API */ - private $eventDispatcher; - - /** - * Constructor. - */ - public function __construct(Swift_Events_EventDispatcher $eventDispatcher, Swift_Spool $spool = null) - { - $this->eventDispatcher = $eventDispatcher; - $this->spool = $spool; - } - - /** - * Sets the spool object. - * - * @return $this - */ - public function setSpool(Swift_Spool $spool) - { - $this->spool = $spool; - - return $this; - } - - /** - * Get the spool object. - * - * @return Swift_Spool - */ - public function getSpool() - { - return $this->spool; - } - - /** - * Tests if this Transport mechanism has started. - * - * @return bool - */ - public function isStarted() - { - return true; - } - - /** - * Starts this Transport mechanism. - */ - public function start() - { - } - - /** - * Stops this Transport mechanism. - */ - public function stop() - { - } - - /** - * {@inheritdoc} - */ - public function ping() - { - return true; - } - - /** - * Sends the given message. - * - * @param string[] $failedRecipients An array of failures by-reference - * - * @return int The number of sent e-mail's - */ - public function send(Swift_Mime_SimpleMessage $message, &$failedRecipients = null) - { - if ($evt = $this->eventDispatcher->createSendEvent($this, $message)) { - $this->eventDispatcher->dispatchEvent($evt, 'beforeSendPerformed'); - if ($evt->bubbleCancelled()) { - return 0; - } - } - - $success = $this->spool->queueMessage($message); - - if ($evt) { - $evt->setResult($success ? Swift_Events_SendEvent::RESULT_SPOOLED : Swift_Events_SendEvent::RESULT_FAILED); - $this->eventDispatcher->dispatchEvent($evt, 'sendPerformed'); - } - - return 1; - } - - /** - * Register a plugin. - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - $this->eventDispatcher->bindEventListener($plugin); - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php b/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php deleted file mode 100644 index 70782ada0..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php +++ /dev/null @@ -1,319 +0,0 @@ -replacementFactory = $replacementFactory; - } - - /** - * Perform any initialization needed, using the given $params. - * - * Parameters will vary depending upon the type of IoBuffer used. - */ - public function initialize(array $params) - { - $this->params = $params; - switch ($params['type']) { - case self::TYPE_PROCESS: - $this->establishProcessConnection(); - break; - case self::TYPE_SOCKET: - default: - $this->establishSocketConnection(); - break; - } - } - - /** - * Set an individual param on the buffer (e.g. switching to SSL). - * - * @param string $param - * @param mixed $value - */ - public function setParam($param, $value) - { - if (isset($this->stream)) { - switch ($param) { - case 'timeout': - if ($this->stream) { - stream_set_timeout($this->stream, $value); - } - break; - - case 'blocking': - if ($this->stream) { - stream_set_blocking($this->stream, 1); - } - } - } - $this->params[$param] = $value; - } - - public function startTLS() - { - // STREAM_CRYPTO_METHOD_TLS_CLIENT only allow tls1.0 connections (some php versions) - // To support modern tls we allow explicit tls1.0, tls1.1, tls1.2 - // Ssl3 and older are not allowed because they are vulnerable - // @TODO make tls arguments configurable - return stream_socket_enable_crypto($this->stream, true, STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT); - } - - /** - * Perform any shutdown logic needed. - */ - public function terminate() - { - if (isset($this->stream)) { - switch ($this->params['type']) { - case self::TYPE_PROCESS: - fclose($this->in); - fclose($this->out); - proc_close($this->stream); - break; - case self::TYPE_SOCKET: - default: - fclose($this->stream); - break; - } - } - $this->stream = null; - $this->out = null; - $this->in = null; - } - - /** - * Set an array of string replacements which should be made on data written - * to the buffer. - * - * This could replace LF with CRLF for example. - * - * @param string[] $replacements - */ - public function setWriteTranslations(array $replacements) - { - foreach ($this->translations as $search => $replace) { - if (!isset($replacements[$search])) { - $this->removeFilter($search); - unset($this->translations[$search]); - } - } - - foreach ($replacements as $search => $replace) { - if (!isset($this->translations[$search])) { - $this->addFilter( - $this->replacementFactory->createFilter($search, $replace), $search - ); - $this->translations[$search] = true; - } - } - } - - /** - * Get a line of output (including any CRLF). - * - * The $sequence number comes from any writes and may or may not be used - * depending upon the implementation. - * - * @param int $sequence of last write to scan from - * - * @return string - * - * @throws Swift_IoException - */ - public function readLine($sequence) - { - if (isset($this->out) && !feof($this->out)) { - $line = fgets($this->out); - if (0 == \strlen($line)) { - $metas = stream_get_meta_data($this->out); - if ($metas['timed_out']) { - throw new Swift_IoException('Connection to '.$this->getReadConnectionDescription().' Timed Out'); - } - } - - return $line; - } - } - - /** - * Reads $length bytes from the stream into a string and moves the pointer - * through the stream by $length. - * - * If less bytes exist than are requested the remaining bytes are given instead. - * If no bytes are remaining at all, boolean false is returned. - * - * @param int $length - * - * @return string|bool - * - * @throws Swift_IoException - */ - public function read($length) - { - if (isset($this->out) && !feof($this->out)) { - $ret = fread($this->out, $length); - if (0 == \strlen($ret)) { - $metas = stream_get_meta_data($this->out); - if ($metas['timed_out']) { - throw new Swift_IoException('Connection to '.$this->getReadConnectionDescription().' Timed Out'); - } - } - - return $ret; - } - } - - /** Not implemented */ - public function setReadPointer($byteOffset) - { - } - - /** Flush the stream contents */ - protected function flush() - { - if (isset($this->in)) { - fflush($this->in); - } - } - - /** Write this bytes to the stream */ - protected function doCommit($bytes) - { - if (isset($this->in)) { - $bytesToWrite = \strlen($bytes); - $totalBytesWritten = 0; - - while ($totalBytesWritten < $bytesToWrite) { - $bytesWritten = fwrite($this->in, substr($bytes, $totalBytesWritten)); - if (false === $bytesWritten || 0 === $bytesWritten) { - break; - } - - $totalBytesWritten += $bytesWritten; - } - - if ($totalBytesWritten > 0) { - return ++$this->sequence; - } - } - } - - /** - * Establishes a connection to a remote server. - */ - private function establishSocketConnection() - { - $host = $this->params['host']; - if (!empty($this->params['protocol'])) { - $host = $this->params['protocol'].'://'.$host; - } - $timeout = 15; - if (!empty($this->params['timeout'])) { - $timeout = $this->params['timeout']; - } - $options = []; - if (!empty($this->params['sourceIp'])) { - $options['socket']['bindto'] = $this->params['sourceIp'].':0'; - } - - if (isset($this->params['stream_context_options'])) { - $options = array_merge($options, $this->params['stream_context_options']); - } - $streamContext = stream_context_create($options); - - set_error_handler(function ($type, $msg) { - throw new Swift_TransportException('Connection could not be established with host '.$this->params['host'].' :'.$msg); - }); - try { - $this->stream = stream_socket_client($host.':'.$this->params['port'], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext); - } finally { - restore_error_handler(); - } - - if (!empty($this->params['blocking'])) { - stream_set_blocking($this->stream, 1); - } else { - stream_set_blocking($this->stream, 0); - } - stream_set_timeout($this->stream, $timeout); - $this->in = &$this->stream; - $this->out = &$this->stream; - } - - /** - * Opens a process for input/output. - */ - private function establishProcessConnection() - { - $command = $this->params['command']; - $descriptorSpec = [ - 0 => ['pipe', 'r'], - 1 => ['pipe', 'w'], - 2 => ['pipe', 'w'], - ]; - $pipes = []; - $this->stream = proc_open($command, $descriptorSpec, $pipes); - stream_set_blocking($pipes[2], 0); - if ($err = stream_get_contents($pipes[2])) { - throw new Swift_TransportException('Process could not be started ['.$err.']'); - } - $this->in = &$pipes[0]; - $this->out = &$pipes[1]; - } - - private function getReadConnectionDescription() - { - switch ($this->params['type']) { - case self::TYPE_PROCESS: - return 'Process '.$this->params['command']; - break; - - case self::TYPE_SOCKET: - default: - $host = $this->params['host']; - if (!empty($this->params['protocol'])) { - $host = $this->params['protocol'].'://'.$host; - } - $host .= ':'.$this->params['port']; - - return $host; - break; - } - } -} diff --git a/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php b/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php deleted file mode 100644 index c7417455b..000000000 --- a/swiftmailer/swiftmailer/lib/classes/Swift/TransportException.php +++ /dev/null @@ -1,28 +0,0 @@ -register('cache') - ->asAliasOf('cache.array') - - ->register('tempdir') - ->asValue('/tmp') - - ->register('cache.null') - ->asSharedInstanceOf('Swift_KeyCache_NullKeyCache') - - ->register('cache.array') - ->asSharedInstanceOf('Swift_KeyCache_ArrayKeyCache') - ->withDependencies(['cache.inputstream']) - - ->register('cache.disk') - ->asSharedInstanceOf('Swift_KeyCache_DiskKeyCache') - ->withDependencies(['cache.inputstream', 'tempdir']) - - ->register('cache.inputstream') - ->asNewInstanceOf('Swift_KeyCache_SimpleKeyCacheInputStream') -; diff --git a/swiftmailer/swiftmailer/lib/dependency_maps/message_deps.php b/swiftmailer/swiftmailer/lib/dependency_maps/message_deps.php deleted file mode 100644 index 64d69d215..000000000 --- a/swiftmailer/swiftmailer/lib/dependency_maps/message_deps.php +++ /dev/null @@ -1,9 +0,0 @@ -register('message.message') - ->asNewInstanceOf('Swift_Message') - - ->register('message.mimepart') - ->asNewInstanceOf('Swift_MimePart') -; diff --git a/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php b/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php deleted file mode 100644 index 307756c89..000000000 --- a/swiftmailer/swiftmailer/lib/dependency_maps/mime_deps.php +++ /dev/null @@ -1,134 +0,0 @@ -register('properties.charset') - ->asValue('utf-8') - - ->register('email.validator') - ->asSharedInstanceOf('Egulias\EmailValidator\EmailValidator') - - ->register('mime.idgenerator.idright') - // As SERVER_NAME can come from the user in certain configurations, check that - // it does not contain forbidden characters (see RFC 952 and RFC 2181). Use - // preg_replace() instead of preg_match() to prevent DoS attacks with long host names. - ->asValue(!empty($_SERVER['SERVER_NAME']) && '' === preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'swift.generated') - - ->register('mime.idgenerator') - ->asSharedInstanceOf('Swift_Mime_IdGenerator') - ->withDependencies([ - 'mime.idgenerator.idright', - ]) - - ->register('mime.message') - ->asNewInstanceOf('Swift_Mime_SimpleMessage') - ->withDependencies([ - 'mime.headerset', - 'mime.textcontentencoder', - 'cache', - 'mime.idgenerator', - 'properties.charset', - ]) - - ->register('mime.part') - ->asNewInstanceOf('Swift_Mime_MimePart') - ->withDependencies([ - 'mime.headerset', - 'mime.textcontentencoder', - 'cache', - 'mime.idgenerator', - 'properties.charset', - ]) - - ->register('mime.attachment') - ->asNewInstanceOf('Swift_Mime_Attachment') - ->withDependencies([ - 'mime.headerset', - 'mime.base64contentencoder', - 'cache', - 'mime.idgenerator', - ]) - ->addConstructorValue($swift_mime_types) - - ->register('mime.embeddedfile') - ->asNewInstanceOf('Swift_Mime_EmbeddedFile') - ->withDependencies([ - 'mime.headerset', - 'mime.base64contentencoder', - 'cache', - 'mime.idgenerator', - ]) - ->addConstructorValue($swift_mime_types) - - ->register('mime.headerfactory') - ->asNewInstanceOf('Swift_Mime_SimpleHeaderFactory') - ->withDependencies([ - 'mime.qpheaderencoder', - 'mime.rfc2231encoder', - 'email.validator', - 'properties.charset', - 'address.idnaddressencoder', - ]) - - ->register('mime.headerset') - ->asNewInstanceOf('Swift_Mime_SimpleHeaderSet') - ->withDependencies(['mime.headerfactory', 'properties.charset']) - - ->register('mime.qpheaderencoder') - ->asNewInstanceOf('Swift_Mime_HeaderEncoder_QpHeaderEncoder') - ->withDependencies(['mime.charstream']) - - ->register('mime.base64headerencoder') - ->asNewInstanceOf('Swift_Mime_HeaderEncoder_Base64HeaderEncoder') - ->withDependencies(['mime.charstream']) - - ->register('mime.charstream') - ->asNewInstanceOf('Swift_CharacterStream_NgCharacterStream') - ->withDependencies(['mime.characterreaderfactory', 'properties.charset']) - - ->register('mime.bytecanonicalizer') - ->asSharedInstanceOf('Swift_StreamFilters_ByteArrayReplacementFilter') - ->addConstructorValue([[0x0D, 0x0A], [0x0D], [0x0A]]) - ->addConstructorValue([[0x0A], [0x0A], [0x0D, 0x0A]]) - - ->register('mime.characterreaderfactory') - ->asSharedInstanceOf('Swift_CharacterReaderFactory_SimpleCharacterReaderFactory') - - ->register('mime.textcontentencoder') - ->asAliasOf('mime.qpcontentencoder') - - ->register('mime.safeqpcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoder') - ->withDependencies(['mime.charstream', 'mime.bytecanonicalizer']) - - ->register('mime.rawcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_RawContentEncoder') - - ->register('mime.nativeqpcontentencoder') - ->withDependencies(['properties.charset']) - ->asNewInstanceOf('Swift_Mime_ContentEncoder_NativeQpContentEncoder') - - ->register('mime.qpcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_QpContentEncoderProxy') - ->withDependencies(['mime.safeqpcontentencoder', 'mime.nativeqpcontentencoder', 'properties.charset']) - - ->register('mime.7bitcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') - ->addConstructorValue('7bit') - ->addConstructorValue(true) - - ->register('mime.8bitcontentencoder') - ->asNewInstanceOf('Swift_Mime_ContentEncoder_PlainContentEncoder') - ->addConstructorValue('8bit') - ->addConstructorValue(true) - - ->register('mime.base64contentencoder') - ->asSharedInstanceOf('Swift_Mime_ContentEncoder_Base64ContentEncoder') - - ->register('mime.rfc2231encoder') - ->asNewInstanceOf('Swift_Encoder_Rfc2231Encoder') - ->withDependencies(['mime.charstream']) -; - -unset($swift_mime_types); diff --git a/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php b/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php deleted file mode 100644 index 34a63c78e..000000000 --- a/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php +++ /dev/null @@ -1,97 +0,0 @@ -register('transport.localdomain') - // As SERVER_NAME can come from the user in certain configurations, check that - // it does not contain forbidden characters (see RFC 952 and RFC 2181). Use - // preg_replace() instead of preg_match() to prevent DoS attacks with long host names. - ->asValue(!empty($_SERVER['SERVER_NAME']) && '' === preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $_SERVER['SERVER_NAME']) ? trim($_SERVER['SERVER_NAME'], '[]') : '127.0.0.1') - - ->register('transport.smtp') - ->asNewInstanceOf('Swift_Transport_EsmtpTransport') - ->withDependencies([ - 'transport.buffer', - 'transport.smtphandlers', - 'transport.eventdispatcher', - 'transport.localdomain', - 'address.idnaddressencoder', - ]) - - ->register('transport.sendmail') - ->asNewInstanceOf('Swift_Transport_SendmailTransport') - ->withDependencies([ - 'transport.buffer', - 'transport.eventdispatcher', - 'transport.localdomain', - ]) - - ->register('transport.loadbalanced') - ->asNewInstanceOf('Swift_Transport_LoadBalancedTransport') - - ->register('transport.failover') - ->asNewInstanceOf('Swift_Transport_FailoverTransport') - - ->register('transport.spool') - ->asNewInstanceOf('Swift_Transport_SpoolTransport') - ->withDependencies(['transport.eventdispatcher']) - - ->register('transport.null') - ->asNewInstanceOf('Swift_Transport_NullTransport') - ->withDependencies(['transport.eventdispatcher']) - - ->register('transport.buffer') - ->asNewInstanceOf('Swift_Transport_StreamBuffer') - ->withDependencies(['transport.replacementfactory']) - - ->register('transport.smtphandlers') - ->asArray() - ->withDependencies(['transport.authhandler']) - - ->register('transport.authhandler') - ->asNewInstanceOf('Swift_Transport_Esmtp_AuthHandler') - ->withDependencies(['transport.authhandlers']) - - ->register('transport.authhandlers') - ->asArray() - ->withDependencies([ - 'transport.crammd5auth', - 'transport.loginauth', - 'transport.plainauth', - 'transport.ntlmauth', - 'transport.xoauth2auth', - ]) - - ->register('transport.smtputf8handler') - ->asNewInstanceOf('Swift_Transport_Esmtp_SmtpUtf8Handler') - - ->register('transport.8bitmimehandler') - ->asNewInstanceOf('Swift_Transport_Esmtp_EightBitMimeHandler') - ->addConstructorValue('8BITMIME') - - ->register('transport.crammd5auth') - ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_CramMd5Authenticator') - - ->register('transport.loginauth') - ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_LoginAuthenticator') - - ->register('transport.plainauth') - ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_PlainAuthenticator') - - ->register('transport.xoauth2auth') - ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_XOAuth2Authenticator') - - ->register('transport.ntlmauth') - ->asNewInstanceOf('Swift_Transport_Esmtp_Auth_NTLMAuthenticator') - - ->register('transport.eventdispatcher') - ->asNewInstanceOf('Swift_Events_SimpleEventDispatcher') - - ->register('transport.replacementfactory') - ->asSharedInstanceOf('Swift_StreamFilters_StringReplacementFilterFactory') - - ->register('address.idnaddressencoder') - ->asNewInstanceOf('Swift_AddressEncoder_IdnAddressEncoder') - - ->register('address.utf8addressencoder') - ->asNewInstanceOf('Swift_AddressEncoder_Utf8AddressEncoder') -; diff --git a/swiftmailer/swiftmailer/lib/mime_types.php b/swiftmailer/swiftmailer/lib/mime_types.php deleted file mode 100644 index 72c6fd2af..000000000 --- a/swiftmailer/swiftmailer/lib/mime_types.php +++ /dev/null @@ -1,1007 +0,0 @@ - 'text/vnd.in3d.3dml', - '3ds' => 'image/x-3ds', - '3g2' => 'video/3gpp2', - '3gp' => 'video/3gpp', - '7z' => 'application/x-7z-compressed', - 'aab' => 'application/x-authorware-bin', - 'aac' => 'audio/x-aac', - 'aam' => 'application/x-authorware-map', - 'aas' => 'application/x-authorware-seg', - 'abw' => 'application/x-abiword', - 'ac' => 'application/pkix-attr-cert', - 'acc' => 'application/vnd.americandynamics.acc', - 'ace' => 'application/x-ace-compressed', - 'acu' => 'application/vnd.acucobol', - 'acutc' => 'application/vnd.acucorp', - 'adp' => 'audio/adpcm', - 'aep' => 'application/vnd.audiograph', - 'afm' => 'application/x-font-type1', - 'afp' => 'application/vnd.ibm.modcap', - 'ahead' => 'application/vnd.ahead.space', - 'ai' => 'application/postscript', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'air' => 'application/vnd.adobe.air-application-installer-package+zip', - 'ait' => 'application/vnd.dvb.ait', - 'ami' => 'application/vnd.amiga.ami', - 'apk' => 'application/vnd.android.package-archive', - 'appcache' => 'text/cache-manifest', - 'apr' => 'application/vnd.lotus-approach', - 'aps' => 'application/postscript', - 'arc' => 'application/x-freearc', - 'asc' => 'application/pgp-signature', - 'asf' => 'video/x-ms-asf', - 'asm' => 'text/x-asm', - 'aso' => 'application/vnd.accpac.simply.aso', - 'asx' => 'video/x-ms-asf', - 'atc' => 'application/vnd.acucorp', - 'atom' => 'application/atom+xml', - 'atomcat' => 'application/atomcat+xml', - 'atomsvc' => 'application/atomsvc+xml', - 'atx' => 'application/vnd.antix.game-component', - 'au' => 'audio/basic', - 'avi' => 'video/x-msvideo', - 'aw' => 'application/applixware', - 'azf' => 'application/vnd.airzip.filesecure.azf', - 'azs' => 'application/vnd.airzip.filesecure.azs', - 'azw' => 'application/vnd.amazon.ebook', - 'bat' => 'application/x-msdownload', - 'bcpio' => 'application/x-bcpio', - 'bdf' => 'application/x-font-bdf', - 'bdm' => 'application/vnd.syncml.dm+wbxml', - 'bed' => 'application/vnd.realvnc.bed', - 'bh2' => 'application/vnd.fujitsu.oasysprs', - 'bin' => 'application/octet-stream', - 'blb' => 'application/x-blorb', - 'blorb' => 'application/x-blorb', - 'bmi' => 'application/vnd.bmi', - 'bmp' => 'image/bmp', - 'book' => 'application/vnd.framemaker', - 'box' => 'application/vnd.previewsystems.box', - 'boz' => 'application/x-bzip2', - 'bpk' => 'application/octet-stream', - 'btif' => 'image/prs.btif', - 'bz' => 'application/x-bzip', - 'bz2' => 'application/x-bzip2', - 'c' => 'text/x-c', - 'c11amc' => 'application/vnd.cluetrust.cartomobile-config', - 'c11amz' => 'application/vnd.cluetrust.cartomobile-config-pkg', - 'c4d' => 'application/vnd.clonk.c4group', - 'c4f' => 'application/vnd.clonk.c4group', - 'c4g' => 'application/vnd.clonk.c4group', - 'c4p' => 'application/vnd.clonk.c4group', - 'c4u' => 'application/vnd.clonk.c4group', - 'cab' => 'application/vnd.ms-cab-compressed', - 'caf' => 'audio/x-caf', - 'cap' => 'application/vnd.tcpdump.pcap', - 'car' => 'application/vnd.curl.car', - 'cat' => 'application/vnd.ms-pki.seccat', - 'cb7' => 'application/x-cbr', - 'cba' => 'application/x-cbr', - 'cbr' => 'application/x-cbr', - 'cbt' => 'application/x-cbr', - 'cbz' => 'application/x-cbr', - 'cc' => 'text/x-c', - 'cct' => 'application/x-director', - 'ccxml' => 'application/ccxml+xml', - 'cdbcmsg' => 'application/vnd.contact.cmsg', - 'cdf' => 'application/x-netcdf', - 'cdkey' => 'application/vnd.mediastation.cdkey', - 'cdmia' => 'application/cdmi-capability', - 'cdmic' => 'application/cdmi-container', - 'cdmid' => 'application/cdmi-domain', - 'cdmio' => 'application/cdmi-object', - 'cdmiq' => 'application/cdmi-queue', - 'cdx' => 'chemical/x-cdx', - 'cdxml' => 'application/vnd.chemdraw+xml', - 'cdy' => 'application/vnd.cinderella', - 'cer' => 'application/pkix-cert', - 'cfs' => 'application/x-cfs-compressed', - 'cgm' => 'image/cgm', - 'chat' => 'application/x-chat', - 'chm' => 'application/vnd.ms-htmlhelp', - 'chrt' => 'application/vnd.kde.kchart', - 'cif' => 'chemical/x-cif', - 'cii' => 'application/vnd.anser-web-certificate-issue-initiation', - 'cil' => 'application/vnd.ms-artgalry', - 'cla' => 'application/vnd.claymore', - 'class' => 'application/java-vm', - 'clkk' => 'application/vnd.crick.clicker.keyboard', - 'clkp' => 'application/vnd.crick.clicker.palette', - 'clkt' => 'application/vnd.crick.clicker.template', - 'clkw' => 'application/vnd.crick.clicker.wordbank', - 'clkx' => 'application/vnd.crick.clicker', - 'clp' => 'application/x-msclip', - 'cmc' => 'application/vnd.cosmocaller', - 'cmdf' => 'chemical/x-cmdf', - 'cml' => 'chemical/x-cml', - 'cmp' => 'application/vnd.yellowriver-custom-menu', - 'cmx' => 'image/x-cmx', - 'cod' => 'application/vnd.rim.cod', - 'com' => 'application/x-msdownload', - 'conf' => 'text/plain', - 'cpio' => 'application/x-cpio', - 'cpp' => 'text/x-c', - 'cpt' => 'application/mac-compactpro', - 'crd' => 'application/x-mscardfile', - 'crl' => 'application/pkix-crl', - 'crt' => 'application/x-x509-ca-cert', - 'csh' => 'application/x-csh', - 'csml' => 'chemical/x-csml', - 'csp' => 'application/vnd.commonspace', - 'css' => 'text/css', - 'cst' => 'application/x-director', - 'csv' => 'text/csv', - 'cu' => 'application/cu-seeme', - 'curl' => 'text/vnd.curl', - 'cww' => 'application/prs.cww', - 'cxt' => 'application/x-director', - 'cxx' => 'text/x-c', - 'dae' => 'model/vnd.collada+xml', - 'daf' => 'application/vnd.mobius.daf', - 'dart' => 'application/vnd.dart', - 'dataless' => 'application/vnd.fdsn.seed', - 'davmount' => 'application/davmount+xml', - 'dbk' => 'application/docbook+xml', - 'dcr' => 'application/x-director', - 'dcurl' => 'text/vnd.curl.dcurl', - 'dd2' => 'application/vnd.oma.dd2+xml', - 'ddd' => 'application/vnd.fujixerox.ddd', - 'deb' => 'application/x-debian-package', - 'def' => 'text/plain', - 'deploy' => 'application/octet-stream', - 'der' => 'application/x-x509-ca-cert', - 'dfac' => 'application/vnd.dreamfactory', - 'dgc' => 'application/x-dgc-compressed', - 'dic' => 'text/x-c', - 'dir' => 'application/x-director', - 'dis' => 'application/vnd.mobius.dis', - 'dist' => 'application/octet-stream', - 'distz' => 'application/octet-stream', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'dll' => 'application/x-msdownload', - 'dmg' => 'application/x-apple-diskimage', - 'dmp' => 'application/vnd.tcpdump.pcap', - 'dms' => 'application/octet-stream', - 'dna' => 'application/vnd.dna', - 'doc' => 'application/msword', - 'docm' => 'application/vnd.ms-word.document.macroenabled.12', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'dot' => 'application/msword', - 'dotm' => 'application/vnd.ms-word.template.macroenabled.12', - 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', - 'dp' => 'application/vnd.osgi.dp', - 'dpg' => 'application/vnd.dpgraph', - 'dra' => 'audio/vnd.dra', - 'dsc' => 'text/prs.lines.tag', - 'dssc' => 'application/dssc+der', - 'dtb' => 'application/x-dtbook+xml', - 'dtd' => 'application/xml-dtd', - 'dts' => 'audio/vnd.dts', - 'dtshd' => 'audio/vnd.dts.hd', - 'dump' => 'application/octet-stream', - 'dvb' => 'video/vnd.dvb.file', - 'dvi' => 'application/x-dvi', - 'dwf' => 'model/vnd.dwf', - 'dwg' => 'image/vnd.dwg', - 'dxf' => 'image/vnd.dxf', - 'dxp' => 'application/vnd.spotfire.dxp', - 'dxr' => 'application/x-director', - 'ecelp4800' => 'audio/vnd.nuera.ecelp4800', - 'ecelp7470' => 'audio/vnd.nuera.ecelp7470', - 'ecelp9600' => 'audio/vnd.nuera.ecelp9600', - 'ecma' => 'application/ecmascript', - 'edm' => 'application/vnd.novadigm.edm', - 'edx' => 'application/vnd.novadigm.edx', - 'efif' => 'application/vnd.picsel', - 'ei6' => 'application/vnd.pg.osasli', - 'elc' => 'application/octet-stream', - 'emf' => 'application/x-msmetafile', - 'eml' => 'message/rfc822', - 'emma' => 'application/emma+xml', - 'emz' => 'application/x-msmetafile', - 'eol' => 'audio/vnd.digital-winds', - 'eot' => 'application/vnd.ms-fontobject', - 'eps' => 'application/postscript', - 'epub' => 'application/epub+zip', - 'es3' => 'application/vnd.eszigno3+xml', - 'esa' => 'application/vnd.osgi.subsystem', - 'esf' => 'application/vnd.epson.esf', - 'et3' => 'application/vnd.eszigno3+xml', - 'etx' => 'text/x-setext', - 'eva' => 'application/x-eva', - 'evy' => 'application/x-envoy', - 'exe' => 'application/x-msdownload', - 'exi' => 'application/exi', - 'ext' => 'application/vnd.novadigm.ext', - 'ez' => 'application/andrew-inset', - 'ez2' => 'application/vnd.ezpix-album', - 'ez3' => 'application/vnd.ezpix-package', - 'f' => 'text/x-fortran', - 'f4v' => 'video/x-f4v', - 'f77' => 'text/x-fortran', - 'f90' => 'text/x-fortran', - 'fbs' => 'image/vnd.fastbidsheet', - 'fcdt' => 'application/vnd.adobe.formscentral.fcdt', - 'fcs' => 'application/vnd.isac.fcs', - 'fdf' => 'application/vnd.fdf', - 'fe_launch' => 'application/vnd.denovo.fcselayout-link', - 'fg5' => 'application/vnd.fujitsu.oasysgp', - 'fgd' => 'application/x-director', - 'fh' => 'image/x-freehand', - 'fh4' => 'image/x-freehand', - 'fh5' => 'image/x-freehand', - 'fh7' => 'image/x-freehand', - 'fhc' => 'image/x-freehand', - 'fig' => 'application/x-xfig', - 'flac' => 'audio/x-flac', - 'fli' => 'video/x-fli', - 'flo' => 'application/vnd.micrografx.flo', - 'flv' => 'video/x-flv', - 'flw' => 'application/vnd.kde.kivio', - 'flx' => 'text/vnd.fmi.flexstor', - 'fly' => 'text/vnd.fly', - 'fm' => 'application/vnd.framemaker', - 'fnc' => 'application/vnd.frogans.fnc', - 'for' => 'text/x-fortran', - 'fpx' => 'image/vnd.fpx', - 'frame' => 'application/vnd.framemaker', - 'fsc' => 'application/vnd.fsc.weblaunch', - 'fst' => 'image/vnd.fst', - 'ftc' => 'application/vnd.fluxtime.clip', - 'fti' => 'application/vnd.anser-web-funds-transfer-initiation', - 'fvt' => 'video/vnd.fvt', - 'fxp' => 'application/vnd.adobe.fxp', - 'fxpl' => 'application/vnd.adobe.fxp', - 'fzs' => 'application/vnd.fuzzysheet', - 'g2w' => 'application/vnd.geoplan', - 'g3' => 'image/g3fax', - 'g3w' => 'application/vnd.geospace', - 'gac' => 'application/vnd.groove-account', - 'gam' => 'application/x-tads', - 'gbr' => 'application/rpki-ghostbusters', - 'gca' => 'application/x-gca-compressed', - 'gdl' => 'model/vnd.gdl', - 'geo' => 'application/vnd.dynageo', - 'gex' => 'application/vnd.geometry-explorer', - 'ggb' => 'application/vnd.geogebra.file', - 'ggt' => 'application/vnd.geogebra.tool', - 'ghf' => 'application/vnd.groove-help', - 'gif' => 'image/gif', - 'gim' => 'application/vnd.groove-identity-message', - 'gml' => 'application/gml+xml', - 'gmx' => 'application/vnd.gmx', - 'gnumeric' => 'application/x-gnumeric', - 'gph' => 'application/vnd.flographit', - 'gpx' => 'application/gpx+xml', - 'gqf' => 'application/vnd.grafeq', - 'gqs' => 'application/vnd.grafeq', - 'gram' => 'application/srgs', - 'gramps' => 'application/x-gramps-xml', - 'gre' => 'application/vnd.geometry-explorer', - 'grv' => 'application/vnd.groove-injector', - 'grxml' => 'application/srgs+xml', - 'gsf' => 'application/x-font-ghostscript', - 'gtar' => 'application/x-gtar', - 'gtm' => 'application/vnd.groove-tool-message', - 'gtw' => 'model/vnd.gtw', - 'gv' => 'text/vnd.graphviz', - 'gxf' => 'application/gxf', - 'gxt' => 'application/vnd.geonext', - 'gz' => 'application/x-gzip', - 'h' => 'text/x-c', - 'h261' => 'video/h261', - 'h263' => 'video/h263', - 'h264' => 'video/h264', - 'hal' => 'application/vnd.hal+xml', - 'hbci' => 'application/vnd.hbci', - 'hdf' => 'application/x-hdf', - 'hh' => 'text/x-c', - 'hlp' => 'application/winhlp', - 'hpgl' => 'application/vnd.hp-hpgl', - 'hpid' => 'application/vnd.hp-hpid', - 'hps' => 'application/vnd.hp-hps', - 'hqx' => 'application/mac-binhex40', - 'htke' => 'application/vnd.kenameaapp', - 'htm' => 'text/html', - 'html' => 'text/html', - 'hvd' => 'application/vnd.yamaha.hv-dic', - 'hvp' => 'application/vnd.yamaha.hv-voice', - 'hvs' => 'application/vnd.yamaha.hv-script', - 'i2g' => 'application/vnd.intergeo', - 'icc' => 'application/vnd.iccprofile', - 'ice' => 'x-conference/x-cooltalk', - 'icm' => 'application/vnd.iccprofile', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ief' => 'image/ief', - 'ifb' => 'text/calendar', - 'ifm' => 'application/vnd.shana.informed.formdata', - 'iges' => 'model/iges', - 'igl' => 'application/vnd.igloader', - 'igm' => 'application/vnd.insors.igm', - 'igs' => 'model/iges', - 'igx' => 'application/vnd.micrografx.igx', - 'iif' => 'application/vnd.shana.informed.interchange', - 'imp' => 'application/vnd.accpac.simply.imp', - 'ims' => 'application/vnd.ms-ims', - 'in' => 'text/plain', - 'ink' => 'application/inkml+xml', - 'inkml' => 'application/inkml+xml', - 'install' => 'application/x-install-instructions', - 'iota' => 'application/vnd.astraea-software.iota', - 'ipfix' => 'application/ipfix', - 'ipk' => 'application/vnd.shana.informed.package', - 'irm' => 'application/vnd.ibm.rights-management', - 'irp' => 'application/vnd.irepository.package+xml', - 'iso' => 'application/x-iso9660-image', - 'itp' => 'application/vnd.shana.informed.formtemplate', - 'ivp' => 'application/vnd.immervision-ivp', - 'ivu' => 'application/vnd.immervision-ivu', - 'jad' => 'text/vnd.sun.j2me.app-descriptor', - 'jam' => 'application/vnd.jam', - 'jar' => 'application/java-archive', - 'java' => 'text/x-java-source', - 'jisp' => 'application/vnd.jisp', - 'jlt' => 'application/vnd.hp-jlyt', - 'jnlp' => 'application/x-java-jnlp-file', - 'joda' => 'application/vnd.joost.joda-archive', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'jpgm' => 'video/jpm', - 'jpgv' => 'video/jpeg', - 'jpm' => 'video/jpm', - 'js' => 'application/javascript', - 'json' => 'application/json', - 'jsonml' => 'application/jsonml+json', - 'kar' => 'audio/midi', - 'karbon' => 'application/vnd.kde.karbon', - 'kfo' => 'application/vnd.kde.kformula', - 'kia' => 'application/vnd.kidspiration', - 'kml' => 'application/vnd.google-earth.kml+xml', - 'kmz' => 'application/vnd.google-earth.kmz', - 'kne' => 'application/vnd.kinar', - 'knp' => 'application/vnd.kinar', - 'kon' => 'application/vnd.kde.kontour', - 'kpr' => 'application/vnd.kde.kpresenter', - 'kpt' => 'application/vnd.kde.kpresenter', - 'kpxx' => 'application/vnd.ds-keypoint', - 'ksp' => 'application/vnd.kde.kspread', - 'ktr' => 'application/vnd.kahootz', - 'ktx' => 'image/ktx', - 'ktz' => 'application/vnd.kahootz', - 'kwd' => 'application/vnd.kde.kword', - 'kwt' => 'application/vnd.kde.kword', - 'lasxml' => 'application/vnd.las.las+xml', - 'latex' => 'application/x-latex', - 'lbd' => 'application/vnd.llamagraphics.life-balance.desktop', - 'lbe' => 'application/vnd.llamagraphics.life-balance.exchange+xml', - 'les' => 'application/vnd.hhe.lesson-player', - 'lha' => 'application/x-lzh-compressed', - 'link66' => 'application/vnd.route66.link66+xml', - 'list' => 'text/plain', - 'list3820' => 'application/vnd.ibm.modcap', - 'listafp' => 'application/vnd.ibm.modcap', - 'lnk' => 'application/x-ms-shortcut', - 'log' => 'text/plain', - 'lostxml' => 'application/lost+xml', - 'lrf' => 'application/octet-stream', - 'lrm' => 'application/vnd.ms-lrm', - 'ltf' => 'application/vnd.frogans.ltf', - 'lvp' => 'audio/vnd.lucent.voice', - 'lwp' => 'application/vnd.lotus-wordpro', - 'lzh' => 'application/x-lzh-compressed', - 'm13' => 'application/x-msmediaview', - 'm14' => 'application/x-msmediaview', - 'm1v' => 'video/mpeg', - 'm21' => 'application/mp21', - 'm2a' => 'audio/mpeg', - 'm2v' => 'video/mpeg', - 'm3a' => 'audio/mpeg', - 'm3u' => 'audio/x-mpegurl', - 'm3u8' => 'application/vnd.apple.mpegurl', - 'm4a' => 'audio/mp4', - 'm4u' => 'video/vnd.mpegurl', - 'm4v' => 'video/x-m4v', - 'ma' => 'application/mathematica', - 'mads' => 'application/mads+xml', - 'mag' => 'application/vnd.ecowin.chart', - 'maker' => 'application/vnd.framemaker', - 'man' => 'text/troff', - 'mar' => 'application/octet-stream', - 'mathml' => 'application/mathml+xml', - 'mb' => 'application/mathematica', - 'mbk' => 'application/vnd.mobius.mbk', - 'mbox' => 'application/mbox', - 'mc1' => 'application/vnd.medcalcdata', - 'mcd' => 'application/vnd.mcd', - 'mcurl' => 'text/vnd.curl.mcurl', - 'mdb' => 'application/x-msaccess', - 'mdi' => 'image/vnd.ms-modi', - 'me' => 'text/troff', - 'mesh' => 'model/mesh', - 'meta4' => 'application/metalink4+xml', - 'metalink' => 'application/metalink+xml', - 'mets' => 'application/mets+xml', - 'mfm' => 'application/vnd.mfmp', - 'mft' => 'application/rpki-manifest', - 'mgp' => 'application/vnd.osgeo.mapguide.package', - 'mgz' => 'application/vnd.proteus.magazine', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mie' => 'application/x-mie', - 'mif' => 'application/vnd.mif', - 'mime' => 'message/rfc822', - 'mj2' => 'video/mj2', - 'mjp2' => 'video/mj2', - 'mk3d' => 'video/x-matroska', - 'mka' => 'audio/x-matroska', - 'mks' => 'video/x-matroska', - 'mkv' => 'video/x-matroska', - 'mlp' => 'application/vnd.dolby.mlp', - 'mmd' => 'application/vnd.chipnuts.karaoke-mmd', - 'mmf' => 'application/vnd.smaf', - 'mmr' => 'image/vnd.fujixerox.edmics-mmr', - 'mng' => 'video/x-mng', - 'mny' => 'application/x-msmoney', - 'mobi' => 'application/x-mobipocket-ebook', - 'mods' => 'application/mods+xml', - 'mov' => 'video/quicktime', - 'movie' => 'video/x-sgi-movie', - 'mp2' => 'audio/mpeg', - 'mp21' => 'application/mp21', - 'mp2a' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mp4a' => 'audio/mp4', - 'mp4s' => 'application/mp4', - 'mp4v' => 'video/mp4', - 'mpc' => 'application/vnd.mophun.certificate', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpg4' => 'video/mp4', - 'mpga' => 'audio/mpeg', - 'mpkg' => 'application/vnd.apple.installer+xml', - 'mpm' => 'application/vnd.blueice.multipass', - 'mpn' => 'application/vnd.mophun.application', - 'mpp' => 'application/vnd.ms-project', - 'mpt' => 'application/vnd.ms-project', - 'mpy' => 'application/vnd.ibm.minipay', - 'mqy' => 'application/vnd.mobius.mqy', - 'mrc' => 'application/marc', - 'mrcx' => 'application/marcxml+xml', - 'ms' => 'text/troff', - 'mscml' => 'application/mediaservercontrol+xml', - 'mseed' => 'application/vnd.fdsn.mseed', - 'mseq' => 'application/vnd.mseq', - 'msf' => 'application/vnd.epson.msf', - 'msh' => 'model/mesh', - 'msi' => 'application/x-msdownload', - 'msl' => 'application/vnd.mobius.msl', - 'msty' => 'application/vnd.muvee.style', - 'mts' => 'model/vnd.mts', - 'mus' => 'application/vnd.musician', - 'musicxml' => 'application/vnd.recordare.musicxml+xml', - 'mvb' => 'application/x-msmediaview', - 'mwf' => 'application/vnd.mfer', - 'mxf' => 'application/mxf', - 'mxl' => 'application/vnd.recordare.musicxml', - 'mxml' => 'application/xv+xml', - 'mxs' => 'application/vnd.triscape.mxs', - 'mxu' => 'video/vnd.mpegurl', - 'n-gage' => 'application/vnd.nokia.n-gage.symbian.install', - 'n3' => 'text/n3', - 'nb' => 'application/mathematica', - 'nbp' => 'application/vnd.wolfram.player', - 'nc' => 'application/x-netcdf', - 'ncx' => 'application/x-dtbncx+xml', - 'nfo' => 'text/x-nfo', - 'ngdat' => 'application/vnd.nokia.n-gage.data', - 'nitf' => 'application/vnd.nitf', - 'nlu' => 'application/vnd.neurolanguage.nlu', - 'nml' => 'application/vnd.enliven', - 'nnd' => 'application/vnd.noblenet-directory', - 'nns' => 'application/vnd.noblenet-sealer', - 'nnw' => 'application/vnd.noblenet-web', - 'npx' => 'image/vnd.net-fpx', - 'nsc' => 'application/x-conference', - 'nsf' => 'application/vnd.lotus-notes', - 'ntf' => 'application/vnd.nitf', - 'nzb' => 'application/x-nzb', - 'oa2' => 'application/vnd.fujitsu.oasys2', - 'oa3' => 'application/vnd.fujitsu.oasys3', - 'oas' => 'application/vnd.fujitsu.oasys', - 'obd' => 'application/x-msbinder', - 'obj' => 'application/x-tgif', - 'oda' => 'application/oda', - 'odb' => 'application/vnd.oasis.opendocument.database', - 'odc' => 'application/vnd.oasis.opendocument.chart', - 'odf' => 'application/vnd.oasis.opendocument.formula', - 'odft' => 'application/vnd.oasis.opendocument.formula-template', - 'odg' => 'application/vnd.oasis.opendocument.graphics', - 'odi' => 'application/vnd.oasis.opendocument.image', - 'odm' => 'application/vnd.oasis.opendocument.text-master', - 'odp' => 'application/vnd.oasis.opendocument.presentation', - 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', - 'odt' => 'application/vnd.oasis.opendocument.text', - 'oga' => 'audio/ogg', - 'ogg' => 'audio/ogg', - 'ogv' => 'video/ogg', - 'ogx' => 'application/ogg', - 'omdoc' => 'application/omdoc+xml', - 'onepkg' => 'application/onenote', - 'onetmp' => 'application/onenote', - 'onetoc' => 'application/onenote', - 'onetoc2' => 'application/onenote', - 'opf' => 'application/oebps-package+xml', - 'opml' => 'text/x-opml', - 'oprc' => 'application/vnd.palm', - 'org' => 'application/vnd.lotus-organizer', - 'osf' => 'application/vnd.yamaha.openscoreformat', - 'osfpvg' => 'application/vnd.yamaha.openscoreformat.osfpvg+xml', - 'otc' => 'application/vnd.oasis.opendocument.chart-template', - 'otf' => 'application/x-font-otf', - 'otg' => 'application/vnd.oasis.opendocument.graphics-template', - 'oth' => 'application/vnd.oasis.opendocument.text-web', - 'oti' => 'application/vnd.oasis.opendocument.image-template', - 'otp' => 'application/vnd.oasis.opendocument.presentation-template', - 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', - 'ott' => 'application/vnd.oasis.opendocument.text-template', - 'oxps' => 'application/oxps', - 'oxt' => 'application/vnd.openofficeorg.extension', - 'p' => 'text/x-pascal', - 'p10' => 'application/pkcs10', - 'p12' => 'application/x-pkcs12', - 'p7b' => 'application/x-pkcs7-certificates', - 'p7c' => 'application/pkcs7-mime', - 'p7m' => 'application/pkcs7-mime', - 'p7r' => 'application/x-pkcs7-certreqresp', - 'p7s' => 'application/pkcs7-signature', - 'p8' => 'application/pkcs8', - 'pas' => 'text/x-pascal', - 'paw' => 'application/vnd.pawaafile', - 'pbd' => 'application/vnd.powerbuilder6', - 'pbm' => 'image/x-portable-bitmap', - 'pcap' => 'application/vnd.tcpdump.pcap', - 'pcf' => 'application/x-font-pcf', - 'pcl' => 'application/vnd.hp-pcl', - 'pclxl' => 'application/vnd.hp-pclxl', - 'pct' => 'image/x-pict', - 'pcurl' => 'application/vnd.curl.pcurl', - 'pcx' => 'image/x-pcx', - 'pdb' => 'application/vnd.palm', - 'pdf' => 'application/pdf', - 'pfa' => 'application/x-font-type1', - 'pfb' => 'application/x-font-type1', - 'pfm' => 'application/x-font-type1', - 'pfr' => 'application/font-tdpfr', - 'pfx' => 'application/x-pkcs12', - 'pgm' => 'image/x-portable-graymap', - 'pgn' => 'application/x-chess-pgn', - 'pgp' => 'application/pgp-encrypted', - 'php' => 'application/x-php', - 'php3' => 'application/x-php', - 'php4' => 'application/x-php', - 'php5' => 'application/x-php', - 'pic' => 'image/x-pict', - 'pkg' => 'application/octet-stream', - 'pki' => 'application/pkixcmp', - 'pkipath' => 'application/pkix-pkipath', - 'plb' => 'application/vnd.3gpp.pic-bw-large', - 'plc' => 'application/vnd.mobius.plc', - 'plf' => 'application/vnd.pocketlearn', - 'pls' => 'application/pls+xml', - 'pml' => 'application/vnd.ctc-posml', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'portpkg' => 'application/vnd.macports.portpkg', - 'pot' => 'application/vnd.ms-powerpoint', - 'potm' => 'application/vnd.ms-powerpoint.template.macroenabled.12', - 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', - 'ppam' => 'application/vnd.ms-powerpoint.addin.macroenabled.12', - 'ppd' => 'application/vnd.cups-ppd', - 'ppm' => 'image/x-portable-pixmap', - 'pps' => 'application/vnd.ms-powerpoint', - 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', - 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroenabled.12', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'pqa' => 'application/vnd.palm', - 'prc' => 'application/x-mobipocket-ebook', - 'pre' => 'application/vnd.lotus-freelance', - 'prf' => 'application/pics-rules', - 'ps' => 'application/postscript', - 'psb' => 'application/vnd.3gpp.pic-bw-small', - 'psd' => 'image/vnd.adobe.photoshop', - 'psf' => 'application/x-font-linux-psf', - 'pskcxml' => 'application/pskc+xml', - 'ptid' => 'application/vnd.pvi.ptid1', - 'pub' => 'application/x-mspublisher', - 'pvb' => 'application/vnd.3gpp.pic-bw-var', - 'pwn' => 'application/vnd.3m.post-it-notes', - 'pya' => 'audio/vnd.ms-playready.media.pya', - 'pyv' => 'video/vnd.ms-playready.media.pyv', - 'qam' => 'application/vnd.epson.quickanime', - 'qbo' => 'application/vnd.intu.qbo', - 'qfx' => 'application/vnd.intu.qfx', - 'qps' => 'application/vnd.publishare-delta-tree', - 'qt' => 'video/quicktime', - 'qwd' => 'application/vnd.quark.quarkxpress', - 'qwt' => 'application/vnd.quark.quarkxpress', - 'qxb' => 'application/vnd.quark.quarkxpress', - 'qxd' => 'application/vnd.quark.quarkxpress', - 'qxl' => 'application/vnd.quark.quarkxpress', - 'qxt' => 'application/vnd.quark.quarkxpress', - 'ra' => 'audio/x-pn-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'rar' => 'application/x-rar-compressed', - 'ras' => 'image/x-cmu-raster', - 'rcprofile' => 'application/vnd.ipunplugged.rcprofile', - 'rdf' => 'application/rdf+xml', - 'rdz' => 'application/vnd.data-vision.rdz', - 'rep' => 'application/vnd.businessobjects', - 'res' => 'application/x-dtbresource+xml', - 'rgb' => 'image/x-rgb', - 'rif' => 'application/reginfo+xml', - 'rip' => 'audio/vnd.rip', - 'ris' => 'application/x-research-info-systems', - 'rl' => 'application/resource-lists+xml', - 'rlc' => 'image/vnd.fujixerox.edmics-rlc', - 'rld' => 'application/resource-lists-diff+xml', - 'rm' => 'application/vnd.rn-realmedia', - 'rmi' => 'audio/midi', - 'rmp' => 'audio/x-pn-realaudio-plugin', - 'rms' => 'application/vnd.jcp.javame.midlet-rms', - 'rmvb' => 'application/vnd.rn-realmedia-vbr', - 'rnc' => 'application/relax-ng-compact-syntax', - 'roa' => 'application/rpki-roa', - 'roff' => 'text/troff', - 'rp9' => 'application/vnd.cloanto.rp9', - 'rpss' => 'application/vnd.nokia.radio-presets', - 'rpst' => 'application/vnd.nokia.radio-preset', - 'rq' => 'application/sparql-query', - 'rs' => 'application/rls-services+xml', - 'rsd' => 'application/rsd+xml', - 'rss' => 'application/rss+xml', - 'rtf' => 'application/rtf', - 'rtx' => 'text/richtext', - 's' => 'text/x-asm', - 's3m' => 'audio/s3m', - 'saf' => 'application/vnd.yamaha.smaf-audio', - 'sbml' => 'application/sbml+xml', - 'sc' => 'application/vnd.ibm.secure-container', - 'scd' => 'application/x-msschedule', - 'scm' => 'application/vnd.lotus-screencam', - 'scq' => 'application/scvp-cv-request', - 'scs' => 'application/scvp-cv-response', - 'scurl' => 'text/vnd.curl.scurl', - 'sda' => 'application/vnd.stardivision.draw', - 'sdc' => 'application/vnd.stardivision.calc', - 'sdd' => 'application/vnd.stardivision.impress', - 'sdkd' => 'application/vnd.solent.sdkm+xml', - 'sdkm' => 'application/vnd.solent.sdkm+xml', - 'sdp' => 'application/sdp', - 'sdw' => 'application/vnd.stardivision.writer', - 'see' => 'application/vnd.seemail', - 'seed' => 'application/vnd.fdsn.seed', - 'sema' => 'application/vnd.sema', - 'semd' => 'application/vnd.semd', - 'semf' => 'application/vnd.semf', - 'ser' => 'application/java-serialized-object', - 'setpay' => 'application/set-payment-initiation', - 'setreg' => 'application/set-registration-initiation', - 'sfd-hdstx' => 'application/vnd.hydrostatix.sof-data', - 'sfs' => 'application/vnd.spotfire.sfs', - 'sfv' => 'text/x-sfv', - 'sgi' => 'image/sgi', - 'sgl' => 'application/vnd.stardivision.writer-global', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'shf' => 'application/shf+xml', - 'sid' => 'image/x-mrsid-image', - 'sig' => 'application/pgp-signature', - 'sil' => 'audio/silk', - 'silo' => 'model/mesh', - 'sis' => 'application/vnd.symbian.install', - 'sisx' => 'application/vnd.symbian.install', - 'sit' => 'application/x-stuffit', - 'sitx' => 'application/x-stuffitx', - 'skd' => 'application/vnd.koan', - 'skm' => 'application/vnd.koan', - 'skp' => 'application/vnd.koan', - 'skt' => 'application/vnd.koan', - 'sldm' => 'application/vnd.ms-powerpoint.slide.macroenabled.12', - 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', - 'slt' => 'application/vnd.epson.salt', - 'sm' => 'application/vnd.stepmania.stepchart', - 'smf' => 'application/vnd.stardivision.math', - 'smi' => 'application/smil+xml', - 'smil' => 'application/smil+xml', - 'smv' => 'video/x-smv', - 'smzip' => 'application/vnd.stepmania.package', - 'snd' => 'audio/basic', - 'snf' => 'application/x-font-snf', - 'so' => 'application/octet-stream', - 'spc' => 'application/x-pkcs7-certificates', - 'spf' => 'application/vnd.yamaha.smaf-phrase', - 'spl' => 'application/x-futuresplash', - 'spot' => 'text/vnd.in3d.spot', - 'spp' => 'application/scvp-vp-response', - 'spq' => 'application/scvp-vp-request', - 'spx' => 'audio/ogg', - 'sql' => 'application/x-sql', - 'src' => 'application/x-wais-source', - 'srt' => 'application/x-subrip', - 'sru' => 'application/sru+xml', - 'srx' => 'application/sparql-results+xml', - 'ssdl' => 'application/ssdl+xml', - 'sse' => 'application/vnd.kodak-descriptor', - 'ssf' => 'application/vnd.epson.ssf', - 'ssml' => 'application/ssml+xml', - 'st' => 'application/vnd.sailingtracker.track', - 'stc' => 'application/vnd.sun.xml.calc.template', - 'std' => 'application/vnd.sun.xml.draw.template', - 'stf' => 'application/vnd.wt.stf', - 'sti' => 'application/vnd.sun.xml.impress.template', - 'stk' => 'application/hyperstudio', - 'stl' => 'application/vnd.ms-pki.stl', - 'str' => 'application/vnd.pg.format', - 'stw' => 'application/vnd.sun.xml.writer.template', - 'sub' => 'text/vnd.dvb.subtitle', - 'sus' => 'application/vnd.sus-calendar', - 'susp' => 'application/vnd.sus-calendar', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'svc' => 'application/vnd.dvb.service', - 'svd' => 'application/vnd.svd', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - 'swa' => 'application/x-director', - 'swf' => 'application/x-shockwave-flash', - 'swi' => 'application/vnd.aristanetworks.swi', - 'sxc' => 'application/vnd.sun.xml.calc', - 'sxd' => 'application/vnd.sun.xml.draw', - 'sxg' => 'application/vnd.sun.xml.writer.global', - 'sxi' => 'application/vnd.sun.xml.impress', - 'sxm' => 'application/vnd.sun.xml.math', - 'sxw' => 'application/vnd.sun.xml.writer', - 't' => 'text/troff', - 't3' => 'application/x-t3vm-image', - 'taglet' => 'application/vnd.mynfc', - 'tao' => 'application/vnd.tao.intent-module-archive', - 'tar' => 'application/x-tar', - 'tcap' => 'application/vnd.3gpp2.tcap', - 'tcl' => 'application/x-tcl', - 'teacher' => 'application/vnd.smart.teacher', - 'tei' => 'application/tei+xml', - 'teicorpus' => 'application/tei+xml', - 'tex' => 'application/x-tex', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'text' => 'text/plain', - 'tfi' => 'application/thraud+xml', - 'tfm' => 'application/x-tex-tfm', - 'tga' => 'image/x-tga', - 'thmx' => 'application/vnd.ms-officetheme', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tmo' => 'application/vnd.tmobile-livetv', - 'torrent' => 'application/x-bittorrent', - 'tpl' => 'application/vnd.groove-tool-template', - 'tpt' => 'application/vnd.trid.tpt', - 'tr' => 'text/troff', - 'tra' => 'application/vnd.trueapp', - 'trm' => 'application/x-msterminal', - 'tsd' => 'application/timestamped-data', - 'tsv' => 'text/tab-separated-values', - 'ttc' => 'application/x-font-ttf', - 'ttf' => 'application/x-font-ttf', - 'ttl' => 'text/turtle', - 'twd' => 'application/vnd.simtech-mindmapper', - 'twds' => 'application/vnd.simtech-mindmapper', - 'txd' => 'application/vnd.genomatix.tuxedo', - 'txf' => 'application/vnd.mobius.txf', - 'txt' => 'text/plain', - 'u32' => 'application/x-authorware-bin', - 'udeb' => 'application/x-debian-package', - 'ufd' => 'application/vnd.ufdl', - 'ufdl' => 'application/vnd.ufdl', - 'ulx' => 'application/x-glulx', - 'umj' => 'application/vnd.umajin', - 'unityweb' => 'application/vnd.unity', - 'uoml' => 'application/vnd.uoml+xml', - 'uri' => 'text/uri-list', - 'uris' => 'text/uri-list', - 'urls' => 'text/uri-list', - 'ustar' => 'application/x-ustar', - 'utz' => 'application/vnd.uiq.theme', - 'uu' => 'text/x-uuencode', - 'uva' => 'audio/vnd.dece.audio', - 'uvd' => 'application/vnd.dece.data', - 'uvf' => 'application/vnd.dece.data', - 'uvg' => 'image/vnd.dece.graphic', - 'uvh' => 'video/vnd.dece.hd', - 'uvi' => 'image/vnd.dece.graphic', - 'uvm' => 'video/vnd.dece.mobile', - 'uvp' => 'video/vnd.dece.pd', - 'uvs' => 'video/vnd.dece.sd', - 'uvt' => 'application/vnd.dece.ttml+xml', - 'uvu' => 'video/vnd.uvvu.mp4', - 'uvv' => 'video/vnd.dece.video', - 'uvva' => 'audio/vnd.dece.audio', - 'uvvd' => 'application/vnd.dece.data', - 'uvvf' => 'application/vnd.dece.data', - 'uvvg' => 'image/vnd.dece.graphic', - 'uvvh' => 'video/vnd.dece.hd', - 'uvvi' => 'image/vnd.dece.graphic', - 'uvvm' => 'video/vnd.dece.mobile', - 'uvvp' => 'video/vnd.dece.pd', - 'uvvs' => 'video/vnd.dece.sd', - 'uvvt' => 'application/vnd.dece.ttml+xml', - 'uvvu' => 'video/vnd.uvvu.mp4', - 'uvvv' => 'video/vnd.dece.video', - 'uvvx' => 'application/vnd.dece.unspecified', - 'uvvz' => 'application/vnd.dece.zip', - 'uvx' => 'application/vnd.dece.unspecified', - 'uvz' => 'application/vnd.dece.zip', - 'vcard' => 'text/vcard', - 'vcd' => 'application/x-cdlink', - 'vcf' => 'text/x-vcard', - 'vcg' => 'application/vnd.groove-vcard', - 'vcs' => 'text/x-vcalendar', - 'vcx' => 'application/vnd.vcx', - 'vis' => 'application/vnd.visionary', - 'viv' => 'video/vnd.vivo', - 'vob' => 'video/x-ms-vob', - 'vor' => 'application/vnd.stardivision.writer', - 'vox' => 'application/x-authorware-bin', - 'vrml' => 'model/vrml', - 'vsd' => 'application/vnd.visio', - 'vsf' => 'application/vnd.vsf', - 'vss' => 'application/vnd.visio', - 'vst' => 'application/vnd.visio', - 'vsw' => 'application/vnd.visio', - 'vtu' => 'model/vnd.vtu', - 'vxml' => 'application/voicexml+xml', - 'w3d' => 'application/x-director', - 'wad' => 'application/x-doom', - 'wav' => 'audio/x-wav', - 'wax' => 'audio/x-ms-wax', - 'wbmp' => 'image/vnd.wap.wbmp', - 'wbs' => 'application/vnd.criticaltools.wbs+xml', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wcm' => 'application/vnd.ms-works', - 'wdb' => 'application/vnd.ms-works', - 'wdp' => 'image/vnd.ms-photo', - 'weba' => 'audio/webm', - 'webm' => 'video/webm', - 'webp' => 'image/webp', - 'wg' => 'application/vnd.pmi.widget', - 'wgt' => 'application/widget', - 'wks' => 'application/vnd.ms-works', - 'wm' => 'video/x-ms-wm', - 'wma' => 'audio/x-ms-wma', - 'wmd' => 'application/x-ms-wmd', - 'wmf' => 'application/x-msmetafile', - 'wml' => 'text/vnd.wap.wml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmls' => 'text/vnd.wap.wmlscript', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wmv' => 'video/x-ms-wmv', - 'wmx' => 'video/x-ms-wmx', - 'wmz' => 'application/x-msmetafile', - 'woff' => 'application/font-woff', - 'wpd' => 'application/vnd.wordperfect', - 'wpl' => 'application/vnd.ms-wpl', - 'wps' => 'application/vnd.ms-works', - 'wqd' => 'application/vnd.wqd', - 'wri' => 'application/x-mswrite', - 'wrl' => 'model/vrml', - 'wsdl' => 'application/wsdl+xml', - 'wspolicy' => 'application/wspolicy+xml', - 'wtb' => 'application/vnd.webturbo', - 'wvx' => 'video/x-ms-wvx', - 'x32' => 'application/x-authorware-bin', - 'x3d' => 'model/x3d+xml', - 'x3db' => 'model/x3d+binary', - 'x3dbz' => 'model/x3d+binary', - 'x3dv' => 'model/x3d+vrml', - 'x3dvz' => 'model/x3d+vrml', - 'x3dz' => 'model/x3d+xml', - 'xaml' => 'application/xaml+xml', - 'xap' => 'application/x-silverlight-app', - 'xar' => 'application/vnd.xara', - 'xbap' => 'application/x-ms-xbap', - 'xbd' => 'application/vnd.fujixerox.docuworks.binder', - 'xbm' => 'image/x-xbitmap', - 'xdf' => 'application/xcap-diff+xml', - 'xdm' => 'application/vnd.syncml.dm+xml', - 'xdp' => 'application/vnd.adobe.xdp+xml', - 'xdssc' => 'application/dssc+xml', - 'xdw' => 'application/vnd.fujixerox.docuworks', - 'xenc' => 'application/xenc+xml', - 'xer' => 'application/patch-ops-error+xml', - 'xfdf' => 'application/vnd.adobe.xfdf', - 'xfdl' => 'application/vnd.xfdl', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'xhvml' => 'application/xv+xml', - 'xif' => 'image/vnd.xiff', - 'xla' => 'application/vnd.ms-excel', - 'xlam' => 'application/vnd.ms-excel.addin.macroenabled.12', - 'xlc' => 'application/vnd.ms-excel', - 'xlf' => 'application/x-xliff+xml', - 'xlm' => 'application/vnd.ms-excel', - 'xls' => 'application/vnd.ms-excel', - 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroenabled.12', - 'xlsm' => 'application/vnd.ms-excel.sheet.macroenabled.12', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xlt' => 'application/vnd.ms-excel', - 'xltm' => 'application/vnd.ms-excel.template.macroenabled.12', - 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', - 'xlw' => 'application/vnd.ms-excel', - 'xm' => 'audio/xm', - 'xml' => 'application/xml', - 'xo' => 'application/vnd.olpc-sugar', - 'xop' => 'application/xop+xml', - 'xpi' => 'application/x-xpinstall', - 'xpl' => 'application/xproc+xml', - 'xpm' => 'image/x-xpixmap', - 'xpr' => 'application/vnd.is-xpr', - 'xps' => 'application/vnd.ms-xpsdocument', - 'xpw' => 'application/vnd.intercon.formnet', - 'xpx' => 'application/vnd.intercon.formnet', - 'xsl' => 'application/xml', - 'xslt' => 'application/xslt+xml', - 'xsm' => 'application/vnd.syncml+xml', - 'xspf' => 'application/xspf+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'xvm' => 'application/xv+xml', - 'xvml' => 'application/xv+xml', - 'xwd' => 'image/x-xwindowdump', - 'xyz' => 'chemical/x-xyz', - 'xz' => 'application/x-xz', - 'yang' => 'application/yang', - 'yin' => 'application/yin+xml', - 'z1' => 'application/x-zmachine', - 'z2' => 'application/x-zmachine', - 'z3' => 'application/x-zmachine', - 'z4' => 'application/x-zmachine', - 'z5' => 'application/x-zmachine', - 'z6' => 'application/x-zmachine', - 'z7' => 'application/x-zmachine', - 'z8' => 'application/x-zmachine', - 'zaz' => 'application/vnd.zzazz.deck+xml', - 'zip' => 'application/zip', - 'zir' => 'application/vnd.zul', - 'zirz' => 'application/vnd.zul', - 'zmm' => 'application/vnd.handheld-entertainment+xml', - '123' => 'application/vnd.lotus-1-2-3', -]; diff --git a/swiftmailer/swiftmailer/lib/preferences.php b/swiftmailer/swiftmailer/lib/preferences.php deleted file mode 100644 index 27b7065db..000000000 --- a/swiftmailer/swiftmailer/lib/preferences.php +++ /dev/null @@ -1,19 +0,0 @@ -setCharset('utf-8'); - -// Without these lines the default caching mechanism is "array" but this uses a lot of memory. -// If possible, use a disk cache to enable attaching large attachments etc. -// You can override the default temporary directory by setting the TMPDIR environment variable. -if (@is_writable($tmpDir = sys_get_temp_dir())) { - $preferences->setTempDir($tmpDir)->setCacheType('disk'); -} diff --git a/swiftmailer/swiftmailer/lib/swift_required.php b/swiftmailer/swiftmailer/lib/swift_required.php deleted file mode 100644 index d696056aa..000000000 --- a/swiftmailer/swiftmailer/lib/swift_required.php +++ /dev/null @@ -1,22 +0,0 @@ - 'application/x-php', - 'php3' => 'application/x-php', - 'php4' => 'application/x-php', - 'php5' => 'application/x-php', - 'zip' => 'application/zip', - 'gif' => 'image/gif', - 'png' => 'image/png', - 'css' => 'text/css', - 'js' => 'text/javascript', - 'txt' => 'text/plain', - 'aif' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'avi' => 'video/avi', - 'bmp' => 'image/bmp', - 'bz2' => 'application/x-bz2', - 'csv' => 'text/csv', - 'dmg' => 'application/x-apple-diskimage', - 'doc' => 'application/msword', - 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', - 'eml' => 'message/rfc822', - 'aps' => 'application/postscript', - 'exe' => 'application/x-ms-dos-executable', - 'flv' => 'video/x-flv', - 'gz' => 'application/x-gzip', - 'hqx' => 'application/stuffit', - 'htm' => 'text/html', - 'html' => 'text/html', - 'jar' => 'application/x-java-archive', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'm3u' => 'audio/x-mpegurl', - 'm4a' => 'audio/mp4', - 'mdb' => 'application/x-msaccess', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mov' => 'video/quicktime', - 'mp3' => 'audio/mpeg', - 'mp4' => 'video/mp4', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'odg' => 'vnd.oasis.opendocument.graphics', - 'odp' => 'vnd.oasis.opendocument.presentation', - 'odt' => 'vnd.oasis.opendocument.text', - 'ods' => 'vnd.oasis.opendocument.spreadsheet', - 'ogg' => 'audio/ogg', - 'pdf' => 'application/pdf', - 'ppt' => 'application/vnd.ms-powerpoint', - 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', - 'ps' => 'application/postscript', - 'rar' => 'application/x-rar-compressed', - 'rtf' => 'application/rtf', - 'tar' => 'application/x-tar', - 'sit' => 'application/x-stuffit', - 'svg' => 'image/svg+xml', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'ttf' => 'application/x-font-truetype', - 'vcf' => 'text/x-vcard', - 'wav' => 'audio/wav', - 'wma' => 'audio/x-ms-wma', - 'wmv' => 'audio/x-ms-wmv', - 'xls' => 'application/vnd.ms-excel', - 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - 'xml' => 'application/xml', - ]; - - // wrap array for generating file - foreach ($valid_mime_types_preset as $extension => $mime_type) { - // generate array for mimetype to extension resolver (only first match) - $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; - } - - // all extensions from second match - foreach ($matches[2] as $i => $extensions) { - // explode multiple extensions from string - $extensions = explode(' ', strtolower($extensions ?? '')); - - // force array for foreach - if (!\is_array($extensions)) { - $extensions = [$extensions]; - } - - foreach ($extensions as $extension) { - // get mime type - $mime_type = $matches[1][$i]; - - // check if string length lower than 10 - if (\strlen($extension) < 10) { - if (!isset($valid_mime_types[$mime_type])) { - // generate array for mimetype to extension resolver (only first match) - $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; - } - } - } - } - } - - $xml = simplexml_load_string($mime_xml); - - foreach ($xml as $node) { - // check if there is no pattern - if (!isset($node->glob['pattern'])) { - continue; - } - - // get all matching extensions from match - foreach ((array) $node->glob['pattern'] as $extension) { - // skip none glob extensions - if (false === strpos($extension ?? '', '.')) { - continue; - } - - // remove get only last part - $extension = explode('.', strtolower($extension ?? '')); - $extension = end($extension); - } - - if (isset($node->glob['pattern'][0])) { - // mime type - $mime_type = strtolower((string) $node['type'] ?? ''); - - // get first extension - $extension = strtolower(trim($node->glob['ddpattern'][0] ?? '', '*.')); - - // skip none glob extensions and check if string length between 1 and 10 - if (false !== strpos($extension, '.') || \strlen($extension) < 1 || \strlen($extension) > 9) { - continue; - } - - // check if string length lower than 10 - if (!isset($valid_mime_types[$mime_type])) { - // generate array for mimetype to extension resolver (only first match) - $valid_mime_types[$extension] = "'{$extension}' => '{$mime_type}'"; - } - } - } - - // full list of valid extensions only - $valid_mime_types = array_unique($valid_mime_types); - ksort($valid_mime_types); - - // combine mime types and extensions array - $output = "$preamble\$swift_mime_types = array(\n ".implode(",\n ", $valid_mime_types)."\n);"; - - // write mime_types.php config file - @file_put_contents('./mime_types.php', $output); -} - -generateUpToDateMimeArray(); diff --git a/symfony/polyfill-iconv/Iconv.php b/symfony/polyfill-iconv/Iconv.php deleted file mode 100644 index c17a70dc2..000000000 --- a/symfony/polyfill-iconv/Iconv.php +++ /dev/null @@ -1,744 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Polyfill\Iconv; - -/** - * iconv implementation in pure PHP, UTF-8 centric. - * - * Implemented: - * - iconv - Convert string to requested character encoding - * - iconv_mime_decode - Decodes a MIME header field - * - iconv_mime_decode_headers - Decodes multiple MIME header fields at once - * - iconv_get_encoding - Retrieve internal configuration variables of iconv extension - * - iconv_set_encoding - Set current setting for character encoding conversion - * - iconv_mime_encode - Composes a MIME header field - * - iconv_strlen - Returns the character count of string - * - iconv_strpos - Finds position of first occurrence of a needle within a haystack - * - iconv_strrpos - Finds the last occurrence of a needle within a haystack - * - iconv_substr - Cut out part of a string - * - * Charsets available for conversion are defined by files - * in the charset/ directory and by Iconv::$alias below. - * You're welcome to send back any addition you make. - * - * @author Nicolas Grekas - * - * @internal - */ -final class Iconv -{ - public const ERROR_ILLEGAL_CHARACTER = 'iconv(): Detected an illegal character in input string'; - public const ERROR_WRONG_CHARSET = 'iconv(): Wrong charset, conversion from `%s\' to `%s\' is not allowed'; - - public static $inputEncoding = 'utf-8'; - public static $outputEncoding = 'utf-8'; - public static $internalEncoding = 'utf-8'; - - private static $alias = [ - 'utf8' => 'utf-8', - 'ascii' => 'us-ascii', - 'tis-620' => 'iso-8859-11', - 'cp1250' => 'windows-1250', - 'cp1251' => 'windows-1251', - 'cp1252' => 'windows-1252', - 'cp1253' => 'windows-1253', - 'cp1254' => 'windows-1254', - 'cp1255' => 'windows-1255', - 'cp1256' => 'windows-1256', - 'cp1257' => 'windows-1257', - 'cp1258' => 'windows-1258', - 'shift-jis' => 'cp932', - 'shift_jis' => 'cp932', - 'latin1' => 'iso-8859-1', - 'latin2' => 'iso-8859-2', - 'latin3' => 'iso-8859-3', - 'latin4' => 'iso-8859-4', - 'latin5' => 'iso-8859-9', - 'latin6' => 'iso-8859-10', - 'latin7' => 'iso-8859-13', - 'latin8' => 'iso-8859-14', - 'latin9' => 'iso-8859-15', - 'latin10' => 'iso-8859-16', - 'iso8859-1' => 'iso-8859-1', - 'iso8859-2' => 'iso-8859-2', - 'iso8859-3' => 'iso-8859-3', - 'iso8859-4' => 'iso-8859-4', - 'iso8859-5' => 'iso-8859-5', - 'iso8859-6' => 'iso-8859-6', - 'iso8859-7' => 'iso-8859-7', - 'iso8859-8' => 'iso-8859-8', - 'iso8859-9' => 'iso-8859-9', - 'iso8859-10' => 'iso-8859-10', - 'iso8859-11' => 'iso-8859-11', - 'iso8859-12' => 'iso-8859-12', - 'iso8859-13' => 'iso-8859-13', - 'iso8859-14' => 'iso-8859-14', - 'iso8859-15' => 'iso-8859-15', - 'iso8859-16' => 'iso-8859-16', - 'iso_8859-1' => 'iso-8859-1', - 'iso_8859-2' => 'iso-8859-2', - 'iso_8859-3' => 'iso-8859-3', - 'iso_8859-4' => 'iso-8859-4', - 'iso_8859-5' => 'iso-8859-5', - 'iso_8859-6' => 'iso-8859-6', - 'iso_8859-7' => 'iso-8859-7', - 'iso_8859-8' => 'iso-8859-8', - 'iso_8859-9' => 'iso-8859-9', - 'iso_8859-10' => 'iso-8859-10', - 'iso_8859-11' => 'iso-8859-11', - 'iso_8859-12' => 'iso-8859-12', - 'iso_8859-13' => 'iso-8859-13', - 'iso_8859-14' => 'iso-8859-14', - 'iso_8859-15' => 'iso-8859-15', - 'iso_8859-16' => 'iso-8859-16', - 'iso88591' => 'iso-8859-1', - 'iso88592' => 'iso-8859-2', - 'iso88593' => 'iso-8859-3', - 'iso88594' => 'iso-8859-4', - 'iso88595' => 'iso-8859-5', - 'iso88596' => 'iso-8859-6', - 'iso88597' => 'iso-8859-7', - 'iso88598' => 'iso-8859-8', - 'iso88599' => 'iso-8859-9', - 'iso885910' => 'iso-8859-10', - 'iso885911' => 'iso-8859-11', - 'iso885912' => 'iso-8859-12', - 'iso885913' => 'iso-8859-13', - 'iso885914' => 'iso-8859-14', - 'iso885915' => 'iso-8859-15', - 'iso885916' => 'iso-8859-16', - ]; - private static $translitMap = []; - private static $convertMap = []; - private static $errorHandler; - private static $lastError; - - private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; - private static $isValidUtf8; - - public static function iconv($inCharset, $outCharset, $str) - { - $str = (string) $str; - if ('' === $str) { - return ''; - } - - // Prepare for //IGNORE and //TRANSLIT - - $translit = $ignore = ''; - - $outCharset = strtolower($outCharset); - $inCharset = strtolower($inCharset); - - if ('' === $outCharset) { - $outCharset = 'iso-8859-1'; - } - if ('' === $inCharset) { - $inCharset = 'iso-8859-1'; - } - - do { - $loop = false; - - if ('//translit' === substr($outCharset, -10)) { - $loop = $translit = true; - $outCharset = substr($outCharset, 0, -10); - } - - if ('//ignore' === substr($outCharset, -8)) { - $loop = $ignore = true; - $outCharset = substr($outCharset, 0, -8); - } - } while ($loop); - - do { - $loop = false; - - if ('//translit' === substr($inCharset, -10)) { - $loop = true; - $inCharset = substr($inCharset, 0, -10); - } - - if ('//ignore' === substr($inCharset, -8)) { - $loop = true; - $inCharset = substr($inCharset, 0, -8); - } - } while ($loop); - - if (isset(self::$alias[$inCharset])) { - $inCharset = self::$alias[$inCharset]; - } - if (isset(self::$alias[$outCharset])) { - $outCharset = self::$alias[$outCharset]; - } - - // Load charset maps - - if (('utf-8' !== $inCharset && !self::loadMap('from.', $inCharset, $inMap)) - || ('utf-8' !== $outCharset && !self::loadMap('to.', $outCharset, $outMap))) { - trigger_error(sprintf(self::ERROR_WRONG_CHARSET, $inCharset, $outCharset)); - - return false; - } - - if ('utf-8' !== $inCharset) { - // Convert input to UTF-8 - $result = ''; - if (self::mapToUtf8($result, $inMap, $str, $ignore)) { - $str = $result; - } else { - $str = false; - } - self::$isValidUtf8 = true; - } else { - self::$isValidUtf8 = preg_match('//u', $str); - - if (!self::$isValidUtf8 && !$ignore) { - trigger_error(self::ERROR_ILLEGAL_CHARACTER); - - return false; - } - - if ('utf-8' === $outCharset) { - // UTF-8 validation - $str = self::utf8ToUtf8($str, $ignore); - } - } - - if ('utf-8' !== $outCharset && false !== $str) { - // Convert output to UTF-8 - $result = ''; - if (self::mapFromUtf8($result, $outMap, $str, $ignore, $translit)) { - return $result; - } - - return false; - } - - return $str; - } - - public static function iconv_mime_decode_headers($str, $mode = 0, $charset = null) - { - if (null === $charset) { - $charset = self::$internalEncoding; - } - - if (false !== strpos($str, "\r")) { - $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n"); - } - $str = explode("\n\n", $str, 2); - - $headers = []; - - $str = preg_split('/\n(?![ \t])/', $str[0]); - foreach ($str as $str) { - $str = self::iconv_mime_decode($str, $mode, $charset); - if (false === $str) { - return false; - } - $str = explode(':', $str, 2); - - if (2 === \count($str)) { - if (isset($headers[$str[0]])) { - if (!\is_array($headers[$str[0]])) { - $headers[$str[0]] = [$headers[$str[0]]]; - } - $headers[$str[0]][] = ltrim($str[1]); - } else { - $headers[$str[0]] = ltrim($str[1]); - } - } - } - - return $headers; - } - - public static function iconv_mime_decode($str, $mode = 0, $charset = null) - { - if (null === $charset) { - $charset = self::$internalEncoding; - } - if (\ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) { - $charset .= '//IGNORE'; - } - - if (false !== strpos($str, "\r")) { - $str = strtr(str_replace("\r\n", "\n", $str), "\r", "\n"); - } - $str = preg_split('/\n(?![ \t])/', rtrim($str), 2); - $str = preg_replace('/[ \t]*\n[ \t]+/', ' ', rtrim($str[0])); - $str = preg_split('/=\?([^?]+)\?([bqBQ])\?(.*?)\?=/', $str, -1, \PREG_SPLIT_DELIM_CAPTURE); - - $result = self::iconv('utf-8', $charset, $str[0]); - if (false === $result) { - return false; - } - - $i = 1; - $len = \count($str); - - while ($i < $len) { - $c = strtolower($str[$i]); - if ((\ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) - && 'utf-8' !== $c - && !isset(self::$alias[$c]) - && !self::loadMap('from.', $c, $d)) { - $d = false; - } elseif ('B' === strtoupper($str[$i + 1])) { - $d = base64_decode($str[$i + 2]); - } else { - $d = rawurldecode(strtr(str_replace('%', '%25', $str[$i + 2]), '=_', '% ')); - } - - if (false !== $d) { - if ('' !== $d) { - if ('' === $d = self::iconv($c, $charset, $d)) { - $str[$i + 3] = substr($str[$i + 3], 1); - } else { - $result .= $d; - } - } - $d = self::iconv('utf-8', $charset, $str[$i + 3]); - if ('' !== trim($d)) { - $result .= $d; - } - } elseif (\ICONV_MIME_DECODE_CONTINUE_ON_ERROR & $mode) { - $result .= "=?{$str[$i]}?{$str[$i + 1]}?{$str[$i + 2]}?={$str[$i + 3]}"; - } else { - $result = false; - break; - } - - $i += 4; - } - - return $result; - } - - public static function iconv_get_encoding($type = 'all') - { - switch ($type) { - case 'input_encoding': return self::$inputEncoding; - case 'output_encoding': return self::$outputEncoding; - case 'internal_encoding': return self::$internalEncoding; - } - - return [ - 'input_encoding' => self::$inputEncoding, - 'output_encoding' => self::$outputEncoding, - 'internal_encoding' => self::$internalEncoding, - ]; - } - - public static function iconv_set_encoding($type, $charset) - { - switch ($type) { - case 'input_encoding': self::$inputEncoding = $charset; break; - case 'output_encoding': self::$outputEncoding = $charset; break; - case 'internal_encoding': self::$internalEncoding = $charset; break; - default: return false; - } - - return true; - } - - public static function iconv_mime_encode($fieldName, $fieldValue, $pref = null) - { - if (!\is_array($pref)) { - $pref = []; - } - - $pref += [ - 'scheme' => 'B', - 'input-charset' => self::$internalEncoding, - 'output-charset' => self::$internalEncoding, - 'line-length' => 76, - 'line-break-chars' => "\r\n", - ]; - - if (preg_match('/[\x80-\xFF]/', $fieldName)) { - $fieldName = ''; - } - - $scheme = strtoupper(substr($pref['scheme'], 0, 1)); - $in = strtolower($pref['input-charset']); - $out = strtolower($pref['output-charset']); - - if ('utf-8' !== $in && false === $fieldValue = self::iconv($in, 'utf-8', $fieldValue)) { - return false; - } - - preg_match_all('/./us', $fieldValue, $chars); - - $chars = $chars[0] ?? []; - - $lineBreak = (int) $pref['line-length']; - $lineStart = "=?{$pref['output-charset']}?{$scheme}?"; - $lineLength = \strlen($fieldName) + 2 + \strlen($lineStart) + 2; - $lineOffset = \strlen($lineStart) + 3; - $lineData = ''; - - $fieldValue = []; - - $Q = 'Q' === $scheme; - - foreach ($chars as $c) { - if ('utf-8' !== $out && false === $c = self::iconv('utf-8', $out, $c)) { - return false; - } - - $o = $Q - ? $c = preg_replace_callback( - '/[=_\?\x00-\x1F\x80-\xFF]/', - [__CLASS__, 'qpByteCallback'], - $c - ) - : base64_encode($lineData.$c); - - if (isset($o[$lineBreak - $lineLength])) { - if (!$Q) { - $lineData = base64_encode($lineData); - } - $fieldValue[] = $lineStart.$lineData.'?='; - $lineLength = $lineOffset; - $lineData = ''; - } - - $lineData .= $c; - $Q && $lineLength += \strlen($c); - } - - if ('' !== $lineData) { - if (!$Q) { - $lineData = base64_encode($lineData); - } - $fieldValue[] = $lineStart.$lineData.'?='; - } - - return $fieldName.': '.implode($pref['line-break-chars'].' ', $fieldValue); - } - - public static function iconv_strlen($s, $encoding = null) - { - static $hasXml = null; - if (null === $hasXml) { - $hasXml = \extension_loaded('xml'); - } - - if ($hasXml) { - return self::strlen1($s, $encoding); - } - - return self::strlen2($s, $encoding); - } - - public static function strlen1($s, $encoding = null) - { - if (null === $encoding) { - $encoding = self::$internalEncoding; - } - if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) { - return false; - } - - return \strlen(utf8_decode($s)); - } - - public static function strlen2($s, $encoding = null) - { - if (null === $encoding) { - $encoding = self::$internalEncoding; - } - if (0 !== stripos($encoding, 'utf-8') && false === $s = self::iconv($encoding, 'utf-8', $s)) { - return false; - } - - $ulenMask = self::$ulenMask; - - $i = 0; - $j = 0; - $len = \strlen($s); - - while ($i < $len) { - $u = $s[$i] & "\xF0"; - $i += $ulenMask[$u] ?? 1; - ++$j; - } - - return $j; - } - - public static function iconv_strpos($haystack, $needle, $offset = 0, $encoding = null) - { - if (null === $encoding) { - $encoding = self::$internalEncoding; - } - - if (0 !== stripos($encoding, 'utf-8')) { - if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) { - return false; - } - if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) { - return false; - } - } - - if ($offset = (int) $offset) { - $haystack = self::iconv_substr($haystack, $offset, 2147483647, 'utf-8'); - } - $pos = strpos($haystack, $needle); - - return false === $pos ? false : ($offset + ($pos ? self::iconv_strlen(substr($haystack, 0, $pos), 'utf-8') : 0)); - } - - public static function iconv_strrpos($haystack, $needle, $encoding = null) - { - if (null === $encoding) { - $encoding = self::$internalEncoding; - } - - if (0 !== stripos($encoding, 'utf-8')) { - if (false === $haystack = self::iconv($encoding, 'utf-8', $haystack)) { - return false; - } - if (false === $needle = self::iconv($encoding, 'utf-8', $needle)) { - return false; - } - } - - $pos = isset($needle[0]) ? strrpos($haystack, $needle) : false; - - return false === $pos ? false : self::iconv_strlen($pos ? substr($haystack, 0, $pos) : $haystack, 'utf-8'); - } - - public static function iconv_substr($s, $start, $length = 2147483647, $encoding = null) - { - if (null === $encoding) { - $encoding = self::$internalEncoding; - } - if (0 !== stripos($encoding, 'utf-8')) { - $encoding = null; - } elseif (false === $s = self::iconv($encoding, 'utf-8', $s)) { - return false; - } - - $s = (string) $s; - $slen = self::iconv_strlen($s, 'utf-8'); - $start = (int) $start; - - if (0 > $start) { - $start += $slen; - } - if (0 > $start) { - if (\PHP_VERSION_ID < 80000) { - return false; - } - - $start = 0; - } - if ($start >= $slen) { - return \PHP_VERSION_ID >= 80000 ? '' : false; - } - - $rx = $slen - $start; - - if (0 > $length) { - $length += $rx; - } - if (0 === $length) { - return ''; - } - if (0 > $length) { - return \PHP_VERSION_ID >= 80000 ? '' : false; - } - - if ($length > $rx) { - $length = $rx; - } - - $rx = '/^'.($start ? self::pregOffset($start) : '').'('.self::pregOffset($length).')/u'; - - $s = preg_match($rx, $s, $s) ? $s[1] : ''; - - if (null === $encoding) { - return $s; - } - - return self::iconv('utf-8', $encoding, $s); - } - - private static function loadMap($type, $charset, &$map) - { - if (!isset(self::$convertMap[$type.$charset])) { - if (false === $map = self::getData($type.$charset)) { - if ('to.' === $type && self::loadMap('from.', $charset, $map)) { - $map = array_flip($map); - } else { - return false; - } - } - - self::$convertMap[$type.$charset] = $map; - } else { - $map = self::$convertMap[$type.$charset]; - } - - return true; - } - - private static function utf8ToUtf8($str, $ignore) - { - $ulenMask = self::$ulenMask; - $valid = self::$isValidUtf8; - - $u = $str; - $i = $j = 0; - $len = \strlen($str); - - while ($i < $len) { - if ($str[$i] < "\x80") { - $u[$j++] = $str[$i++]; - } else { - $ulen = $str[$i] & "\xF0"; - $ulen = $ulenMask[$ulen] ?? 1; - $uchr = substr($str, $i, $ulen); - - if (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr))) { - if ($ignore) { - ++$i; - continue; - } - - trigger_error(self::ERROR_ILLEGAL_CHARACTER); - - return false; - } - - $i += $ulen; - - $u[$j++] = $uchr[0]; - - isset($uchr[1]) && 0 !== ($u[$j++] = $uchr[1]) - && isset($uchr[2]) && 0 !== ($u[$j++] = $uchr[2]) - && isset($uchr[3]) && 0 !== ($u[$j++] = $uchr[3]); - } - } - - return substr($u, 0, $j); - } - - private static function mapToUtf8(&$result, array $map, $str, $ignore) - { - $len = \strlen($str); - for ($i = 0; $i < $len; ++$i) { - if (isset($str[$i + 1], $map[$str[$i].$str[$i + 1]])) { - $result .= $map[$str[$i].$str[++$i]]; - } elseif (isset($map[$str[$i]])) { - $result .= $map[$str[$i]]; - } elseif (!$ignore) { - trigger_error(self::ERROR_ILLEGAL_CHARACTER); - - return false; - } - } - - return true; - } - - private static function mapFromUtf8(&$result, array $map, $str, $ignore, $translit) - { - $ulenMask = self::$ulenMask; - $valid = self::$isValidUtf8; - - if ($translit && !self::$translitMap) { - self::$translitMap = self::getData('translit'); - } - - $i = 0; - $len = \strlen($str); - - while ($i < $len) { - if ($str[$i] < "\x80") { - $uchr = $str[$i++]; - } else { - $ulen = $str[$i] & "\xF0"; - $ulen = $ulenMask[$ulen] ?? 1; - $uchr = substr($str, $i, $ulen); - - if ($ignore && (1 === $ulen || !($valid || preg_match('/^.$/us', $uchr)))) { - ++$i; - continue; - } - - $i += $ulen; - } - - if (isset($map[$uchr])) { - $result .= $map[$uchr]; - } elseif ($translit) { - if (isset(self::$translitMap[$uchr])) { - $uchr = self::$translitMap[$uchr]; - } elseif ($uchr >= "\xC3\x80") { - $uchr = \Normalizer::normalize($uchr, \Normalizer::NFD); - - if ($uchr[0] < "\x80") { - $uchr = $uchr[0]; - } elseif ($ignore) { - continue; - } else { - return false; - } - } elseif ($ignore) { - continue; - } else { - return false; - } - - $str = $uchr.substr($str, $i); - $len = \strlen($str); - $i = 0; - } elseif (!$ignore) { - return false; - } - } - - return true; - } - - private static function qpByteCallback(array $m) - { - return '='.strtoupper(dechex(\ord($m[0]))); - } - - private static function pregOffset($offset) - { - $rx = []; - $offset = (int) $offset; - - while ($offset > 65535) { - $rx[] = '.{65535}'; - $offset -= 65535; - } - - return implode('', $rx).'.{'.$offset.'}'; - } - - private static function getData($file) - { - if (file_exists($file = __DIR__.'/Resources/charset/'.$file.'.php')) { - return require $file; - } - - return false; - } -} diff --git a/symfony/polyfill-iconv/LICENSE b/symfony/polyfill-iconv/LICENSE deleted file mode 100644 index 4cd8bdd30..000000000 --- a/symfony/polyfill-iconv/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015-2019 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/symfony/polyfill-iconv/Resources/charset/from.big5.php b/symfony/polyfill-iconv/Resources/charset/from.big5.php deleted file mode 100644 index b11985494..000000000 --- a/symfony/polyfill-iconv/Resources/charset/from.big5.php +++ /dev/null @@ -1,13719 +0,0 @@ - ' ', - '¡A' => ',', - '¡B' => 'ã€', - '¡C' => '。', - '¡D' => '.', - '¡E' => '•', - '¡F' => 'ï¼›', - '¡G' => ':', - '¡H' => '?', - '¡I' => 'ï¼', - '¡J' => '︰', - '¡K' => '…', - '¡L' => '‥', - '¡M' => 'ï¹', - '¡N' => '、', - '¡O' => 'ï¹’', - '¡P' => '·', - '¡Q' => 'ï¹”', - '¡R' => '﹕', - '¡S' => 'ï¹–', - '¡T' => 'ï¹—', - '¡U' => '|', - '¡V' => '–', - '¡W' => '︱', - '¡X' => '—', - '¡Y' => '︳', - '¡Z' => '�', - '¡[' => '︴', - '¡\\' => 'ï¹', - '¡]' => '(', - '¡^' => ')', - '¡_' => '︵', - '¡`' => '︶', - '¡a' => 'ï½›', - '¡b' => 'ï½', - '¡c' => '︷', - '¡d' => '︸', - '¡e' => '〔', - '¡f' => '〕', - '¡g' => '︹', - '¡h' => '︺', - '¡i' => 'ã€', - '¡j' => '】', - '¡k' => '︻', - '¡l' => '︼', - '¡m' => '《', - '¡n' => '》', - '¡o' => '︽', - '¡p' => '︾', - '¡q' => '〈', - '¡r' => '〉', - '¡s' => '︿', - '¡t' => 'ï¹€', - '¡u' => '「', - '¡v' => 'ã€', - '¡w' => 'ï¹', - '¡x' => '﹂', - '¡y' => '『', - '¡z' => 'ã€', - '¡{' => '﹃', - '¡|' => '﹄', - '¡}' => 'ï¹™', - '¡~' => '﹚', - '¡¡' => 'ï¹›', - '¡¢' => '﹜', - '¡£' => 'ï¹', - '¡¤' => '﹞', - '¡¥' => '‘', - '¡¦' => '’', - '¡§' => '“', - '¡¨' => 'â€', - '¡©' => 'ã€', - '¡ª' => '〞', - '¡«' => '‵', - '¡¬' => '′', - '¡­' => '#', - '¡®' => '&', - '¡¯' => '*', - '¡°' => '※', - '¡±' => '§', - '¡²' => '〃', - '¡³' => 'â—‹', - '¡´' => 'â—', - '¡µ' => 'â–³', - '¡¶' => 'â–²', - '¡·' => 'â—Ž', - '¡¸' => '☆', - '¡¹' => '★', - '¡º' => 'â—‡', - '¡»' => 'â—†', - '¡¼' => 'â–¡', - '¡½' => 'â– ', - '¡¾' => 'â–½', - '¡¿' => 'â–¼', - '¡À' => '㊣', - '¡Á' => 'â„…', - '¡Â' => '‾', - '¡Ã' => '�', - '¡Ä' => '_', - '¡Å' => '�', - '¡Æ' => '﹉', - '¡Ç' => '﹊', - '¡È' => 'ï¹', - '¡É' => '﹎', - '¡Ê' => '﹋', - '¡Ë' => '﹌', - '¡Ì' => '﹟', - '¡Í' => 'ï¹ ', - '¡Î' => '﹡', - '¡Ï' => '+', - '¡Ð' => 'ï¼', - '¡Ñ' => '×', - '¡Ò' => '÷', - '¡Ó' => '±', - '¡Ô' => '√', - '¡Õ' => '<', - '¡Ö' => '>', - '¡×' => 'ï¼', - '¡Ø' => '≦', - '¡Ù' => '≧', - '¡Ú' => '≠', - '¡Û' => '∞', - '¡Ü' => '≒', - '¡Ý' => '≡', - '¡Þ' => 'ï¹¢', - '¡ß' => 'ï¹£', - '¡à' => '﹤', - '¡á' => 'ï¹¥', - '¡â' => '﹦', - '¡ã' => '∼', - '¡ä' => '∩', - '¡å' => '∪', - '¡æ' => '⊥', - '¡ç' => '∠', - '¡è' => '∟', - '¡é' => '⊿', - '¡ê' => 'ã’', - '¡ë' => 'ã‘', - '¡ì' => '∫', - '¡í' => '∮', - '¡î' => '∵', - '¡ï' => '∴', - '¡ð' => '♀', - '¡ñ' => '♂', - '¡ò' => 'â™', - '¡ó' => '☉', - '¡ô' => '↑', - '¡õ' => '↓', - '¡ö' => 'â†', - '¡÷' => '→', - '¡ø' => '↖', - '¡ù' => '↗', - '¡ú' => '↙', - '¡û' => '↘', - '¡ü' => '∥', - '¡ý' => '∣', - '¡þ' => '�', - '¢@' => '�', - '¢A' => 'ï¼', - '¢B' => 'ï¼¼', - '¢C' => '$', - '¢D' => 'Â¥', - '¢E' => '〒', - '¢F' => '¢', - '¢G' => '£', - '¢H' => 'ï¼…', - '¢I' => 'ï¼ ', - '¢J' => '℃', - '¢K' => '℉', - '¢L' => '﹩', - '¢M' => '﹪', - '¢N' => '﹫', - '¢O' => 'ã•', - '¢P' => '㎜', - '¢Q' => 'ãŽ', - '¢R' => '㎞', - '¢S' => 'ãŽ', - '¢T' => '㎡', - '¢U' => '㎎', - '¢V' => 'ãŽ', - '¢W' => 'ã„', - '¢X' => '°', - '¢Y' => 'å…™', - '¢Z' => 'å…›', - '¢[' => 'å…ž', - '¢\\' => 'å…', - '¢]' => 'å…¡', - '¢^' => 'å…£', - '¢_' => 'å—§', - '¢`' => 'ç“©', - '¢a' => '糎', - '¢b' => 'â–', - '¢c' => 'â–‚', - '¢d' => 'â–ƒ', - '¢e' => 'â–„', - '¢f' => 'â–…', - '¢g' => 'â–†', - '¢h' => 'â–‡', - '¢i' => 'â–ˆ', - '¢j' => 'â–', - '¢k' => 'â–Ž', - '¢l' => 'â–', - '¢m' => 'â–Œ', - '¢n' => 'â–‹', - '¢o' => 'â–Š', - '¢p' => 'â–‰', - '¢q' => '┼', - '¢r' => 'â”´', - '¢s' => '┬', - '¢t' => '┤', - '¢u' => '├', - '¢v' => 'â–”', - '¢w' => '─', - '¢x' => '│', - '¢y' => 'â–•', - '¢z' => '┌', - '¢{' => 'â”', - '¢|' => 'â””', - '¢}' => '┘', - '¢~' => 'â•­', - '¢¡' => 'â•®', - '¢¢' => 'â•°', - '¢£' => '╯', - '¢¤' => 'â•', - '¢¥' => 'â•ž', - '¢¦' => '╪', - '¢§' => 'â•¡', - '¢¨' => 'â—¢', - '¢©' => 'â—£', - '¢ª' => 'â—¥', - '¢«' => 'â—¤', - '¢¬' => '╱', - '¢­' => '╲', - '¢®' => '╳', - '¢¯' => 'ï¼', - '¢°' => '1', - '¢±' => 'ï¼’', - '¢²' => '3', - '¢³' => 'ï¼”', - '¢´' => '5', - '¢µ' => 'ï¼–', - '¢¶' => 'ï¼—', - '¢·' => '8', - '¢¸' => 'ï¼™', - '¢¹' => 'â… ', - '¢º' => 'â…¡', - '¢»' => 'â…¢', - '¢¼' => 'â…£', - '¢½' => 'â…¤', - '¢¾' => 'â…¥', - '¢¿' => 'â…¦', - '¢À' => 'â…§', - '¢Á' => 'â…¨', - '¢Â' => 'â…©', - '¢Ã' => '〡', - '¢Ä' => '〢', - '¢Å' => '〣', - '¢Æ' => '〤', - '¢Ç' => '〥', - '¢È' => '〦', - '¢É' => '〧', - '¢Ê' => '〨', - '¢Ë' => '〩', - '¢Ì' => '�', - '¢Í' => 'å„', - '¢Î' => '�', - '¢Ï' => 'A', - '¢Ð' => 'ï¼¢', - '¢Ñ' => 'ï¼£', - '¢Ò' => 'D', - '¢Ó' => 'ï¼¥', - '¢Ô' => 'F', - '¢Õ' => 'G', - '¢Ö' => 'H', - '¢×' => 'I', - '¢Ø' => 'J', - '¢Ù' => 'K', - '¢Ú' => 'L', - '¢Û' => 'ï¼­', - '¢Ü' => 'ï¼®', - '¢Ý' => 'O', - '¢Þ' => 'ï¼°', - '¢ß' => 'ï¼±', - '¢à' => 'ï¼²', - '¢á' => 'ï¼³', - '¢â' => 'ï¼´', - '¢ã' => 'ï¼µ', - '¢ä' => 'V', - '¢å' => 'ï¼·', - '¢æ' => 'X', - '¢ç' => 'ï¼¹', - '¢è' => 'Z', - '¢é' => 'ï½', - '¢ê' => 'b', - '¢ë' => 'c', - '¢ì' => 'd', - '¢í' => 'ï½…', - '¢î' => 'f', - '¢ï' => 'g', - '¢ð' => 'h', - '¢ñ' => 'i', - '¢ò' => 'j', - '¢ó' => 'k', - '¢ô' => 'l', - '¢õ' => 'ï½', - '¢ö' => 'n', - '¢÷' => 'ï½', - '¢ø' => 'ï½', - '¢ù' => 'q', - '¢ú' => 'ï½’', - '¢û' => 's', - '¢ü' => 'ï½”', - '¢ý' => 'u', - '¢þ' => 'ï½–', - '£@' => 'ï½—', - '£A' => 'x', - '£B' => 'ï½™', - '£C' => 'z', - '£D' => 'Α', - '£E' => 'Î’', - '£F' => 'Γ', - '£G' => 'Δ', - '£H' => 'Ε', - '£I' => 'Ζ', - '£J' => 'Η', - '£K' => 'Θ', - '£L' => 'Ι', - '£M' => 'Κ', - '£N' => 'Λ', - '£O' => 'Îœ', - '£P' => 'Î', - '£Q' => 'Ξ', - '£R' => 'Ο', - '£S' => 'Π', - '£T' => 'Ρ', - '£U' => 'Σ', - '£V' => 'Τ', - '£W' => 'Î¥', - '£X' => 'Φ', - '£Y' => 'Χ', - '£Z' => 'Ψ', - '£[' => 'Ω', - '£\\' => 'α', - '£]' => 'β', - '£^' => 'γ', - '£_' => 'δ', - '£`' => 'ε', - '£a' => 'ζ', - '£b' => 'η', - '£c' => 'θ', - '£d' => 'ι', - '£e' => 'κ', - '£f' => 'λ', - '£g' => 'μ', - '£h' => 'ν', - '£i' => 'ξ', - '£j' => 'ο', - '£k' => 'Ï€', - '£l' => 'Ï', - '£m' => 'σ', - '£n' => 'Ï„', - '£o' => 'Ï…', - '£p' => 'φ', - '£q' => 'χ', - '£r' => 'ψ', - '£s' => 'ω', - '£t' => 'ã„…', - '£u' => 'ㄆ', - '£v' => 'ㄇ', - '£w' => 'ㄈ', - '£x' => 'ㄉ', - '£y' => 'ã„Š', - '£z' => 'ã„‹', - '£{' => 'ã„Œ', - '£|' => 'ã„', - '£}' => 'ã„Ž', - '£~' => 'ã„', - '£¡' => 'ã„', - '£¢' => 'ã„‘', - '££' => 'ã„’', - '£¤' => 'ã„“', - '£¥' => 'ã„”', - '£¦' => 'ã„•', - '£§' => 'ã„–', - '£¨' => 'ã„—', - '£©' => 'ㄘ', - '£ª' => 'ã„™', - '£«' => 'ã„š', - '£¬' => 'ã„›', - '£­' => 'ã„œ', - '£®' => 'ã„', - '£¯' => 'ã„ž', - '£°' => 'ã„Ÿ', - '£±' => 'ã„ ', - '£²' => 'ã„¡', - '£³' => 'ã„¢', - '£´' => 'ã„£', - '£µ' => 'ㄤ', - '£¶' => 'ã„¥', - '£·' => 'ㄦ', - '£¸' => 'ㄧ', - '£¹' => 'ㄨ', - '£º' => 'ã„©', - '£»' => 'Ë™', - '£¼' => 'ˉ', - '£½' => 'ËŠ', - '£¾' => 'ˇ', - '£¿' => 'Ë‹', - '¤@' => '一', - '¤A' => 'ä¹™', - '¤B' => 'ä¸', - '¤C' => '七', - '¤D' => '乃', - '¤E' => 'ä¹', - '¤F' => '了', - '¤G' => '二', - '¤H' => '人', - '¤I' => 'å„¿', - '¤J' => 'å…¥', - '¤K' => 'å…«', - '¤L' => '几', - '¤M' => '刀', - '¤N' => 'åˆ', - '¤O' => '力', - '¤P' => '匕', - '¤Q' => 'å', - '¤R' => 'åœ', - '¤S' => 'åˆ', - '¤T' => '三', - '¤U' => '下', - '¤V' => '丈', - '¤W' => '上', - '¤X' => '丫', - '¤Y' => '丸', - '¤Z' => '凡', - '¤[' => 'ä¹…', - '¤\\' => '么', - '¤]' => '也', - '¤^' => '乞', - '¤_' => '于', - '¤`' => '亡', - '¤a' => 'å…€', - '¤b' => '刃', - '¤c' => '勺', - '¤d' => 'åƒ', - '¤e' => 'å‰', - '¤f' => 'å£', - '¤g' => '土', - '¤h' => '士', - '¤i' => '夕', - '¤j' => '大', - '¤k' => '女', - '¤l' => 'å­', - '¤m' => 'å­‘', - '¤n' => 'å­“', - '¤o' => '寸', - '¤p' => 'å°', - '¤q' => 'å°¢', - '¤r' => 'å°¸', - '¤s' => 'å±±', - '¤t' => 'å·', - '¤u' => 'å·¥', - '¤v' => 'å·±', - '¤w' => 'å·²', - '¤x' => 'å·³', - '¤y' => 'å·¾', - '¤z' => 'å¹²', - '¤{' => '廾', - '¤|' => '弋', - '¤}' => '弓', - '¤~' => 'æ‰', - '¤¡' => '丑', - '¤¢' => 'ä¸', - '¤£' => 'ä¸', - '¤¤' => '中', - '¤¥' => '丰', - '¤¦' => '丹', - '¤§' => '之', - '¤¨' => 'å°¹', - '¤©' => '予', - '¤ª' => '云', - '¤«' => '井', - '¤¬' => '互', - '¤­' => '五', - '¤®' => '亢', - '¤¯' => 'ä»', - '¤°' => '什', - '¤±' => '仃', - '¤²' => '仆', - '¤³' => '仇', - '¤´' => 'ä»', - '¤µ' => '今', - '¤¶' => '介', - '¤·' => '仄', - '¤¸' => 'å…ƒ', - '¤¹' => 'å…', - '¤º' => 'å…§', - '¤»' => 'å…­', - '¤¼' => 'å…®', - '¤½' => 'å…¬', - '¤¾' => '冗', - '¤¿' => '凶', - '¤À' => '分', - '¤Á' => '切', - '¤Â' => '刈', - '¤Ã' => 'å‹»', - '¤Ä' => '勾', - '¤Å' => 'å‹¿', - '¤Æ' => '化', - '¤Ç' => '匹', - '¤È' => 'åˆ', - '¤É' => 'å‡', - '¤Ê' => 'å…', - '¤Ë' => 'åž', - '¤Ì' => '厄', - '¤Í' => 'å‹', - '¤Î' => 'åŠ', - '¤Ï' => 'å', - '¤Ð' => '壬', - '¤Ñ' => '天', - '¤Ò' => '夫', - '¤Ó' => '太', - '¤Ô' => '夭', - '¤Õ' => 'å­”', - '¤Ö' => 'å°‘', - '¤×' => 'å°¤', - '¤Ø' => 'å°º', - '¤Ù' => '屯', - '¤Ú' => 'å·´', - '¤Û' => 'å¹»', - '¤Ü' => '廿', - '¤Ý' => 'å¼”', - '¤Þ' => '引', - '¤ß' => '心', - '¤à' => '戈', - '¤á' => '戶', - '¤â' => '手', - '¤ã' => '扎', - '¤ä' => '支', - '¤å' => 'æ–‡', - '¤æ' => 'æ–—', - '¤ç' => 'æ–¤', - '¤è' => 'æ–¹', - '¤é' => 'æ—¥', - '¤ê' => 'æ›°', - '¤ë' => '月', - '¤ì' => '木', - '¤í' => '欠', - '¤î' => 'æ­¢', - '¤ï' => 'æ­¹', - '¤ð' => '毋', - '¤ñ' => '比', - '¤ò' => '毛', - '¤ó' => 'æ°', - '¤ô' => 'æ°´', - '¤õ' => 'ç«', - '¤ö' => '爪', - '¤÷' => '父', - '¤ø' => '爻', - '¤ù' => '片', - '¤ú' => '牙', - '¤û' => '牛', - '¤ü' => '犬', - '¤ý' => '王', - '¤þ' => '丙', - '¥@' => '世', - '¥A' => '丕', - '¥B' => '且', - '¥C' => '丘', - '¥D' => '主', - '¥E' => 'ä¹', - '¥F' => 'ä¹', - '¥G' => '乎', - '¥H' => '以', - '¥I' => '付', - '¥J' => 'ä»”', - '¥K' => '仕', - '¥L' => 'ä»–', - '¥M' => 'ä»—', - '¥N' => '代', - '¥O' => '令', - '¥P' => 'ä»™', - '¥Q' => '仞', - '¥R' => 'å……', - '¥S' => 'å…„', - '¥T' => '冉', - '¥U' => '冊', - '¥V' => '冬', - '¥W' => '凹', - '¥X' => '出', - '¥Y' => '凸', - '¥Z' => '刊', - '¥[' => '加', - '¥\\' => '功', - '¥]' => '包', - '¥^' => '匆', - '¥_' => '北', - '¥`' => 'åŒ', - '¥a' => '仟', - '¥b' => 'åŠ', - '¥c' => 'å‰', - '¥d' => 'å¡', - '¥e' => 'å ', - '¥f' => 'å¯', - '¥g' => 'å®', - '¥h' => '去', - '¥i' => 'å¯', - '¥j' => 'å¤', - '¥k' => 'å³', - '¥l' => 'å¬', - '¥m' => 'å®', - '¥n' => 'å©', - '¥o' => 'å¨', - '¥p' => 'å¼', - '¥q' => 'å¸', - '¥r' => 'åµ', - '¥s' => 'å«', - '¥t' => 'å¦', - '¥u' => 'åª', - '¥v' => 'å²', - '¥w' => 'å±', - '¥x' => 'å°', - '¥y' => 'å¥', - '¥z' => 'å­', - '¥{' => 'å»', - '¥|' => 'å››', - '¥}' => '囚', - '¥~' => '外', - '¥¡' => '央', - '¥¢' => '失', - '¥£' => '奴', - '¥¤' => '奶', - '¥¥' => 'å­•', - '¥¦' => '它', - '¥§' => 'å°¼', - '¥¨' => 'å·¨', - '¥©' => 'å·§', - '¥ª' => 'å·¦', - '¥«' => '市', - '¥¬' => '布', - '¥­' => 'å¹³', - '¥®' => 'å¹¼', - '¥¯' => 'å¼', - '¥°' => '弘', - '¥±' => 'å¼—', - '¥²' => 'å¿…', - '¥³' => '戊', - '¥´' => '打', - '¥µ' => '扔', - '¥¶' => '扒', - '¥·' => '扑', - '¥¸' => 'æ–¥', - '¥¹' => 'æ—¦', - '¥º' => '朮', - '¥»' => '本', - '¥¼' => '未', - '¥½' => '末', - '¥¾' => '札', - '¥¿' => 'æ­£', - '¥À' => 'æ¯', - '¥Á' => 'æ°‘', - '¥Â' => 'æ°', - '¥Ã' => 'æ°¸', - '¥Ä' => 'æ±', - '¥Å' => 'æ±€', - '¥Æ' => 'æ°¾', - '¥Ç' => '犯', - '¥È' => '玄', - '¥É' => '玉', - '¥Ê' => 'ç“œ', - '¥Ë' => '瓦', - '¥Ì' => '甘', - '¥Í' => '生', - '¥Î' => '用', - '¥Ï' => '甩', - '¥Ð' => 'ç”°', - '¥Ñ' => 'ç”±', - '¥Ò' => '甲', - '¥Ó' => '申', - '¥Ô' => 'ç–‹', - '¥Õ' => '白', - '¥Ö' => 'çš®', - '¥×' => 'çš¿', - '¥Ø' => 'ç›®', - '¥Ù' => '矛', - '¥Ú' => '矢', - '¥Û' => '石', - '¥Ü' => '示', - '¥Ý' => '禾', - '¥Þ' => 'ç©´', - '¥ß' => 'ç«‹', - '¥à' => '丞', - '¥á' => '丟', - '¥â' => 'ä¹’', - '¥ã' => '乓', - '¥ä' => '乩', - '¥å' => '亙', - '¥æ' => '交', - '¥ç' => '亦', - '¥è' => '亥', - '¥é' => '仿', - '¥ê' => '伉', - '¥ë' => 'ä¼™', - '¥ì' => '伊', - '¥í' => '伕', - '¥î' => 'ä¼', - '¥ï' => 'ä¼', - '¥ð' => '休', - '¥ñ' => 'ä¼', - '¥ò' => '仲', - '¥ó' => '件', - '¥ô' => 'ä»»', - '¥õ' => 'ä»°', - '¥ö' => '仳', - '¥÷' => '份', - '¥ø' => 'ä¼', - '¥ù' => '伋', - '¥ú' => 'å…‰', - '¥û' => 'å…‡', - '¥ü' => 'å…†', - '¥ý' => 'å…ˆ', - '¥þ' => 'å…¨', - '¦@' => 'å…±', - '¦A' => 'å†', - '¦B' => '冰', - '¦C' => '列', - '¦D' => '刑', - '¦E' => '划', - '¦F' => '刎', - '¦G' => '刖', - '¦H' => '劣', - '¦I' => '匈', - '¦J' => '匡', - '¦K' => '匠', - '¦L' => 'å°', - '¦M' => 'å±', - '¦N' => 'å‰', - '¦O' => 'å', - '¦P' => 'åŒ', - '¦Q' => 'åŠ', - '¦R' => 'å', - '¦S' => 'å', - '¦T' => 'å‹', - '¦U' => 'å„', - '¦V' => 'å‘', - '¦W' => 'å', - '¦X' => 'åˆ', - '¦Y' => 'åƒ', - '¦Z' => 'åŽ', - '¦[' => 'å†', - '¦\\' => 'å’', - '¦]' => 'å› ', - '¦^' => '回', - '¦_' => 'å›', - '¦`' => '圳', - '¦a' => '地', - '¦b' => '在', - '¦c' => '圭', - '¦d' => '圬', - '¦e' => '圯', - '¦f' => '圩', - '¦g' => '夙', - '¦h' => '多', - '¦i' => '夷', - '¦j' => '夸', - '¦k' => '妄', - '¦l' => '奸', - '¦m' => '妃', - '¦n' => '好', - '¦o' => '她', - '¦p' => '如', - '¦q' => 'å¦', - '¦r' => 'å­—', - '¦s' => 'å­˜', - '¦t' => '宇', - '¦u' => '守', - '¦v' => 'å®…', - '¦w' => '安', - '¦x' => '寺', - '¦y' => 'å°–', - '¦z' => 'å±¹', - '¦{' => 'å·ž', - '¦|' => '帆', - '¦}' => '并', - '¦~' => 'å¹´', - '¦¡' => 'å¼', - '¦¢' => 'å¼›', - '¦£' => 'å¿™', - '¦¤' => 'å¿–', - '¦¥' => '戎', - '¦¦' => '戌', - '¦§' => 'æˆ', - '¦¨' => 'æˆ', - '¦©' => '扣', - '¦ª' => '扛', - '¦«' => '托', - '¦¬' => '收', - '¦­' => 'æ—©', - '¦®' => 'æ—¨', - '¦¯' => 'æ—¬', - '¦°' => 'æ—­', - '¦±' => '曲', - '¦²' => '曳', - '¦³' => '有', - '¦´' => '朽', - '¦µ' => '朴', - '¦¶' => '朱', - '¦·' => '朵', - '¦¸' => '次', - '¦¹' => 'æ­¤', - '¦º' => 'æ­»', - '¦»' => 'æ°–', - '¦¼' => 'æ±', - '¦½' => 'æ±—', - '¦¾' => 'æ±™', - '¦¿' => '江', - '¦À' => 'æ± ', - '¦Á' => 'æ±', - '¦Â' => '汕', - '¦Ã' => '污', - '¦Ä' => 'æ±›', - '¦Å' => 'æ±', - '¦Æ' => '汎', - '¦Ç' => 'ç°', - '¦È' => '牟', - '¦É' => 'ç‰', - '¦Ê' => '百', - '¦Ë' => '竹', - '¦Ì' => 'ç±³', - '¦Í' => '糸', - '¦Î' => '缶', - '¦Ï' => '羊', - '¦Ð' => 'ç¾½', - '¦Ñ' => 'è€', - '¦Ò' => '考', - '¦Ó' => '而', - '¦Ô' => '耒', - '¦Õ' => '耳', - '¦Ö' => 'è¿', - '¦×' => '肉', - '¦Ø' => 'è‚‹', - '¦Ù' => 'è‚Œ', - '¦Ú' => '臣', - '¦Û' => '自', - '¦Ü' => '至', - '¦Ý' => '臼', - '¦Þ' => '舌', - '¦ß' => '舛', - '¦à' => '舟', - '¦á' => '艮', - '¦â' => '色', - '¦ã' => '艾', - '¦ä' => '虫', - '¦å' => 'è¡€', - '¦æ' => 'è¡Œ', - '¦ç' => 'è¡£', - '¦è' => '西', - '¦é' => '阡', - '¦ê' => '串', - '¦ë' => '亨', - '¦ì' => 'ä½', - '¦í' => 'ä½', - '¦î' => '佇', - '¦ï' => 'ä½—', - '¦ð' => '佞', - '¦ñ' => 'ä¼´', - '¦ò' => 'ä½›', - '¦ó' => '何', - '¦ô' => 'ä¼°', - '¦õ' => 'ä½', - '¦ö' => '佑', - '¦÷' => 'ä¼½', - '¦ø' => '伺', - '¦ù' => '伸', - '¦ú' => '佃', - '¦û' => 'ä½”', - '¦ü' => 'ä¼¼', - '¦ý' => '但', - '¦þ' => 'ä½£', - '§@' => '作', - '§A' => 'ä½ ', - '§B' => '伯', - '§C' => '低', - '§D' => '伶', - '§E' => 'ä½™', - '§F' => 'ä½', - '§G' => '佈', - '§H' => '佚', - '§I' => 'å…Œ', - '§J' => 'å…‹', - '§K' => 'å…', - '§L' => 'å…µ', - '§M' => '冶', - '§N' => '冷', - '§O' => '別', - '§P' => '判', - '§Q' => '利', - '§R' => '刪', - '§S' => '刨', - '§T' => '劫', - '§U' => '助', - '§V' => '努', - '§W' => '劬', - '§X' => '匣', - '§Y' => 'å³', - '§Z' => 'åµ', - '§[' => 'å', - '§\\' => 'å­', - '§]' => 'åž', - '§^' => 'å¾', - '§_' => 'å¦', - '§`' => 'å‘Ž', - '§a' => 'å§', - '§b' => '呆', - '§c' => '呃', - '§d' => 'å³', - '§e' => '呈', - '§f' => 'å‘‚', - '§g' => 'å›', - '§h' => 'å©', - '§i' => 'å‘Š', - '§j' => 'å¹', - '§k' => 'å»', - '§l' => 'å¸', - '§m' => 'å®', - '§n' => 'åµ', - '§o' => 'å¶', - '§p' => 'å ', - '§q' => 'å¼', - '§r' => 'å‘€', - '§s' => 'å±', - '§t' => 'å«', - '§u' => 'åŸ', - '§v' => 'å¬', - '§w' => '囪', - '§x' => 'å›°', - '§y' => '囤', - '§z' => '囫', - '§{' => 'åŠ', - '§|' => 'å‘', - '§}' => 'å€', - '§~' => 'å', - '§¡' => 'å‡', - '§¢' => 'åŽ', - '§£' => '圾', - '§¤' => 'å', - '§¥' => 'å', - '§¦' => '圻', - '§§' => '壯', - '§¨' => '夾', - '§©' => 'å¦', - '§ª' => '妒', - '§«' => '妨', - '§¬' => '妞', - '§­' => '妣', - '§®' => '妙', - '§¯' => '妖', - '§°' => 'å¦', - '§±' => '妤', - '§²' => '妓', - '§³' => '妊', - '§´' => '妥', - '§µ' => 'å­', - '§¶' => 'å­œ', - '§·' => 'å­š', - '§¸' => 'å­›', - '§¹' => '完', - '§º' => '宋', - '§»' => 'å®', - '§¼' => 'å°¬', - '§½' => 'å±€', - '§¾' => 'å±', - '§¿' => 'å°¿', - '§À' => 'å°¾', - '§Á' => 'å²', - '§Â' => '岑', - '§Ã' => 'å²”', - '§Ä' => '岌', - '§Å' => 'å·«', - '§Æ' => '希', - '§Ç' => 'åº', - '§È' => '庇', - '§É' => '床', - '§Ê' => 'å»·', - '§Ë' => '弄', - '§Ì' => '弟', - '§Í' => '彤', - '§Î' => 'å½¢', - '§Ï' => 'å½·', - '§Ð' => 'å½¹', - '§Ñ' => '忘', - '§Ò' => 'å¿Œ', - '§Ó' => 'å¿—', - '§Ô' => 'å¿', - '§Õ' => '忱', - '§Ö' => 'å¿«', - '§×' => '忸', - '§Ø' => '忪', - '§Ù' => '戒', - '§Ú' => '我', - '§Û' => '抄', - '§Ü' => '抗', - '§Ý' => '抖', - '§Þ' => '技', - '§ß' => '扶', - '§à' => '抉', - '§á' => '扭', - '§â' => '把', - '§ã' => '扼', - '§ä' => '找', - '§å' => '批', - '§æ' => '扳', - '§ç' => '抒', - '§è' => '扯', - '§é' => '折', - '§ê' => '扮', - '§ë' => '投', - '§ì' => '抓', - '§í' => '抑', - '§î' => '抆', - '§ï' => '改', - '§ð' => 'æ”»', - '§ñ' => '攸', - '§ò' => 'æ—±', - '§ó' => 'æ›´', - '§ô' => 'æŸ', - '§õ' => 'æŽ', - '§ö' => 'æ', - '§÷' => 'æ', - '§ø' => 'æ‘', - '§ù' => 'æœ', - '§ú' => 'æ–', - '§û' => 'æž', - '§ü' => 'æ‰', - '§ý' => 'æ†', - '§þ' => 'æ ', - '¨@' => 'æ“', - '¨A' => 'æ—', - '¨B' => 'æ­¥', - '¨C' => 'æ¯', - '¨D' => '求', - '¨E' => '汞', - '¨F' => 'æ²™', - '¨G' => 'æ²', - '¨H' => '沈', - '¨I' => '沉', - '¨J' => 'æ²…', - '¨K' => 'æ²›', - '¨L' => '汪', - '¨M' => '決', - '¨N' => 'æ²', - '¨O' => 'æ±°', - '¨P' => '沌', - '¨Q' => '汨', - '¨R' => 'æ²–', - '¨S' => 'æ²’', - '¨T' => 'æ±½', - '¨U' => '沃', - '¨V' => 'æ±²', - '¨W' => 'æ±¾', - '¨X' => 'æ±´', - '¨Y' => '沆', - '¨Z' => '汶', - '¨[' => 'æ²', - '¨\\' => 'æ²”', - '¨]' => '沘', - '¨^' => '沂', - '¨_' => 'ç¶', - '¨`' => 'ç¼', - '¨a' => 'ç½', - '¨b' => 'ç¸', - '¨c' => '牢', - '¨d' => '牡', - '¨e' => '牠', - '¨f' => 'ç‹„', - '¨g' => 'ç‹‚', - '¨h' => '玖', - '¨i' => '甬', - '¨j' => '甫', - '¨k' => 'ç”·', - '¨l' => '甸', - '¨m' => 'çš‚', - '¨n' => '盯', - '¨o' => '矣', - '¨p' => 'ç§', - '¨q' => '秀', - '¨r' => '禿', - '¨s' => '究', - '¨t' => 'ç³»', - '¨u' => '罕', - '¨v' => 'è‚–', - '¨w' => 'è‚“', - '¨x' => 'è‚', - '¨y' => '肘', - '¨z' => 'è‚›', - '¨{' => 'è‚š', - '¨|' => '育', - '¨}' => '良', - '¨~' => '芒', - '¨¡' => '芋', - '¨¢' => 'èŠ', - '¨£' => '見', - '¨¤' => '角', - '¨¥' => '言', - '¨¦' => 'è°·', - '¨§' => '豆', - '¨¨' => '豕', - '¨©' => 'è²', - '¨ª' => '赤', - '¨«' => 'èµ°', - '¨¬' => '足', - '¨­' => '身', - '¨®' => '車', - '¨¯' => 'è¾›', - '¨°' => 'è¾°', - '¨±' => 'è¿‚', - '¨²' => '迆', - '¨³' => 'è¿…', - '¨´' => 'è¿„', - '¨µ' => 'å·¡', - '¨¶' => 'é‚‘', - '¨·' => 'é‚¢', - '¨¸' => '邪', - '¨¹' => '邦', - '¨º' => 'é‚£', - '¨»' => 'é…‰', - '¨¼' => '釆', - '¨½' => '里', - '¨¾' => '防', - '¨¿' => '阮', - '¨À' => '阱', - '¨Á' => '阪', - '¨Â' => '阬', - '¨Ã' => '並', - '¨Ä' => 'ä¹–', - '¨Å' => 'ä¹³', - '¨Æ' => '事', - '¨Ç' => '些', - '¨È' => '亞', - '¨É' => '享', - '¨Ê' => '京', - '¨Ë' => '佯', - '¨Ì' => 'ä¾', - '¨Í' => 'ä¾', - '¨Î' => 'ä½³', - '¨Ï' => '使', - '¨Ð' => '佬', - '¨Ñ' => 'ä¾›', - '¨Ò' => '例', - '¨Ó' => '來', - '¨Ô' => '侃', - '¨Õ' => 'ä½°', - '¨Ö' => 'ä½µ', - '¨×' => '侈', - '¨Ø' => '佩', - '¨Ù' => 'ä½»', - '¨Ú' => 'ä¾–', - '¨Û' => 'ä½¾', - '¨Ü' => 'ä¾', - '¨Ý' => '侑', - '¨Þ' => '佺', - '¨ß' => 'å…”', - '¨à' => 'å…’', - '¨á' => 'å…•', - '¨â' => 'å…©', - '¨ã' => 'å…·', - '¨ä' => 'å…¶', - '¨å' => 'å…¸', - '¨æ' => '冽', - '¨ç' => '函', - '¨è' => '刻', - '¨é' => '券', - '¨ê' => '刷', - '¨ë' => '刺', - '¨ì' => '到', - '¨í' => '刮', - '¨î' => '制', - '¨ï' => 'å‰', - '¨ð' => '劾', - '¨ñ' => '劻', - '¨ò' => 'å’', - '¨ó' => 'å”', - '¨ô' => 'å“', - '¨õ' => 'å‘', - '¨ö' => 'å¦', - '¨÷' => 'å·', - '¨ø' => 'å¸', - '¨ù' => 'å¹', - '¨ú' => 'å–', - '¨û' => 'å”', - '¨ü' => 'å—', - '¨ý' => '味', - '¨þ' => '呵', - '©@' => 'å’–', - '©A' => '呸', - '©B' => 'å’•', - '©C' => 'å’€', - '©D' => 'å‘»', - '©E' => 'å‘·', - '©F' => 'å’„', - '©G' => 'å’’', - '©H' => 'å’†', - '©I' => '呼', - '©J' => 'å’', - '©K' => '呱', - '©L' => '呶', - '©M' => 'å’Œ', - '©N' => 'å’š', - '©O' => 'å‘¢', - '©P' => '周', - '©Q' => 'å’‹', - '©R' => '命', - '©S' => 'å’Ž', - '©T' => '固', - '©U' => '垃', - '©V' => 'å·', - '©W' => 'åª', - '©X' => 'å©', - '©Y' => 'å¡', - '©Z' => 'å¦', - '©[' => 'å¤', - '©\\' => 'å¼', - '©]' => '夜', - '©^' => '奉', - '©_' => '奇', - '©`' => '奈', - '©a' => '奄', - '©b' => '奔', - '©c' => '妾', - '©d' => '妻', - '©e' => '委', - '©f' => '妹', - '©g' => '妮', - '©h' => '姑', - '©i' => '姆', - '©j' => 'å§', - '©k' => 'å§', - '©l' => '始', - '©m' => '姓', - '©n' => '姊', - '©o' => '妯', - '©p' => '妳', - '©q' => '姒', - '©r' => '姅', - '©s' => 'å­Ÿ', - '©t' => 'å­¤', - '©u' => 'å­£', - '©v' => 'å®—', - '©w' => '定', - '©x' => '官', - '©y' => '宜', - '©z' => 'å®™', - '©{' => 'å®›', - '©|' => 'å°š', - '©}' => '屈', - '©~' => 'å±…', - '©¡' => '屆', - '©¢' => 'å²·', - '©£' => '岡', - '©¤' => '岸', - '©¥' => '岩', - '©¦' => '岫', - '©§' => 'å²±', - '©¨' => 'å²³', - '©©' => '帘', - '©ª' => '帚', - '©«' => '帖', - '©¬' => '帕', - '©­' => '帛', - '©®' => '帑', - '©¯' => '幸', - '©°' => '庚', - '©±' => '店', - '©²' => '府', - '©³' => '底', - '©´' => '庖', - '©µ' => '延', - '©¶' => '弦', - '©·' => '弧', - '©¸' => '弩', - '©¹' => 'å¾€', - '©º' => 'å¾', - '©»' => '彿', - '©¼' => 'å½¼', - '©½' => 'å¿', - '©¾' => 'å¿ ', - '©¿' => '忽', - '©À' => '念', - '©Á' => 'å¿¿', - '©Â' => 'æ€', - '©Ã' => '怔', - '©Ä' => '怯', - '©Å' => '怵', - '©Æ' => '怖', - '©Ç' => '怪', - '©È' => '怕', - '©É' => '怡', - '©Ê' => '性', - '©Ë' => '怩', - '©Ì' => '怫', - '©Í' => '怛', - '©Î' => '或', - '©Ï' => '戕', - '©Ð' => '房', - '©Ñ' => '戾', - '©Ò' => '所', - '©Ó' => '承', - '©Ô' => '拉', - '©Õ' => 'æ‹Œ', - '©Ö' => 'æ‹„', - '©×' => '抿', - '©Ø' => 'æ‹‚', - '©Ù' => '抹', - '©Ú' => 'æ‹’', - '©Û' => 'æ‹›', - '©Ü' => '披', - '©Ý' => 'æ‹“', - '©Þ' => 'æ‹”', - '©ß' => 'æ‹‹', - '©à' => '拈', - '©á' => '抨', - '©â' => '抽', - '©ã' => '押', - '©ä' => 'æ‹', - '©å' => 'æ‹™', - '©æ' => '拇', - '©ç' => 'æ‹', - '©è' => '抵', - '©é' => 'æ‹š', - '©ê' => '抱', - '©ë' => '拘', - '©ì' => 'æ‹–', - '©í' => 'æ‹—', - '©î' => '拆', - '©ï' => '抬', - '©ð' => 'æ‹Ž', - '©ñ' => '放', - '©ò' => 'æ–§', - '©ó' => 'æ–¼', - '©ô' => 'æ—º', - '©õ' => '昔', - '©ö' => '易', - '©÷' => '昌', - '©ø' => '昆', - '©ù' => '昂', - '©ú' => '明', - '©û' => '昀', - '©ü' => 'æ˜', - '©ý' => '昕', - '©þ' => '昊', - 'ª@' => '昇', - 'ªA' => 'æœ', - 'ªB' => '朋', - 'ªC' => 'æ­', - 'ªD' => 'æž‹', - 'ªE' => 'æž•', - 'ªF' => 'æ±', - 'ªG' => 'æžœ', - 'ªH' => 'æ³', - 'ªI' => 'æ·', - 'ªJ' => '枇', - 'ªK' => 'æž', - 'ªL' => 'æž—', - 'ªM' => 'æ¯', - 'ªN' => 'æ°', - 'ªO' => 'æ¿', - 'ªP' => '枉', - 'ªQ' => 'æ¾', - 'ªR' => 'æž', - 'ªS' => 'æµ', - 'ªT' => 'æžš', - 'ªU' => 'æž“', - 'ªV' => 'æ¼', - 'ªW' => 'æª', - 'ªX' => 'æ²', - 'ªY' => '欣', - 'ªZ' => 'æ­¦', - 'ª[' => 'æ­§', - 'ª\\' => 'æ­¿', - 'ª]' => 'æ°“', - 'ª^' => 'æ°›', - 'ª_' => 'æ³£', - 'ª`' => '注', - 'ªa' => 'æ³³', - 'ªb' => 'æ²±', - 'ªc' => '泌', - 'ªd' => 'æ³¥', - 'ªe' => 'æ²³', - 'ªf' => 'æ²½', - 'ªg' => 'æ²¾', - 'ªh' => 'æ²¼', - 'ªi' => 'æ³¢', - 'ªj' => '沫', - 'ªk' => '法', - 'ªl' => '泓', - 'ªm' => '沸', - 'ªn' => '泄', - 'ªo' => 'æ²¹', - 'ªp' => 'æ³', - 'ªq' => 'æ²®', - 'ªr' => 'æ³—', - 'ªs' => 'æ³…', - 'ªt' => 'æ³±', - 'ªu' => '沿', - 'ªv' => 'æ²»', - 'ªw' => '泡', - 'ªx' => 'æ³›', - 'ªy' => '泊', - 'ªz' => '沬', - 'ª{' => '泯', - 'ª|' => '泜', - 'ª}' => 'æ³–', - 'ª~' => 'æ³ ', - 'ª¡' => 'ç‚•', - 'ª¢' => 'ç‚Ž', - 'ª£' => 'ç‚’', - 'ª¤' => 'ç‚Š', - 'ª¥' => 'ç‚™', - 'ª¦' => '爬', - 'ª§' => '爭', - 'ª¨' => '爸', - 'ª©' => '版', - 'ªª' => '牧', - 'ª«' => '物', - 'ª¬' => 'ç‹€', - 'ª­' => 'ç‹Ž', - 'ª®' => 'ç‹™', - 'ª¯' => 'ç‹—', - 'ª°' => 'ç‹', - 'ª±' => '玩', - 'ª²' => '玨', - 'ª³' => '玟', - 'ª´' => '玫', - 'ªµ' => '玥', - 'ª¶' => '甽', - 'ª·' => 'ç–', - 'ª¸' => 'ç–™', - 'ª¹' => 'ç–š', - 'ªº' => 'çš„', - 'ª»' => '盂', - 'ª¼' => '盲', - 'ª½' => 'ç›´', - 'ª¾' => '知', - 'ª¿' => '矽', - 'ªÀ' => '社', - 'ªÁ' => '祀', - 'ªÂ' => 'ç¥', - 'ªÃ' => '秉', - 'ªÄ' => '秈', - 'ªÅ' => '空', - 'ªÆ' => '穹', - 'ªÇ' => '竺', - 'ªÈ' => 'ç³¾', - 'ªÉ' => 'ç½”', - 'ªÊ' => '羌', - 'ªË' => '羋', - 'ªÌ' => '者', - 'ªÍ' => '肺', - 'ªÎ' => 'è‚¥', - 'ªÏ' => 'è‚¢', - 'ªÐ' => '肱', - 'ªÑ' => 'è‚¡', - 'ªÒ' => 'è‚«', - 'ªÓ' => 'è‚©', - 'ªÔ' => 'è‚´', - 'ªÕ' => '肪', - 'ªÖ' => '肯', - 'ª×' => '臥', - 'ªØ' => '臾', - 'ªÙ' => 'èˆ', - 'ªÚ' => '芳', - 'ªÛ' => 'èŠ', - 'ªÜ' => '芙', - 'ªÝ' => '芭', - 'ªÞ' => '芽', - 'ªß' => '芟', - 'ªà' => '芹', - 'ªá' => '花', - 'ªâ' => '芬', - 'ªã' => '芥', - 'ªä' => '芯', - 'ªå' => '芸', - 'ªæ' => '芣', - 'ªç' => '芰', - 'ªè' => '芾', - 'ªé' => '芷', - 'ªê' => '虎', - 'ªë' => 'è™±', - 'ªì' => 'åˆ', - 'ªí' => '表', - 'ªî' => '軋', - 'ªï' => 'è¿Ž', - 'ªð' => 'è¿”', - 'ªñ' => 'è¿‘', - 'ªò' => '邵', - 'ªó' => '邸', - 'ªô' => '邱', - 'ªõ' => '邶', - 'ªö' => '采', - 'ª÷' => '金', - 'ªø' => 'é•·', - 'ªù' => 'é–€', - 'ªú' => '阜', - 'ªû' => '陀', - 'ªü' => '阿', - 'ªý' => '阻', - 'ªþ' => '附', - '«@' => '陂', - '«A' => 'éš¹', - '«B' => '雨', - '«C' => 'é’', - '«D' => 'éž', - '«E' => '亟', - '«F' => '亭', - '«G' => '亮', - '«H' => 'ä¿¡', - '«I' => 'ä¾µ', - '«J' => '侯', - '«K' => '便', - '«L' => 'ä¿ ', - '«M' => 'ä¿‘', - '«N' => 'ä¿', - '«O' => 'ä¿', - '«P' => '促', - '«Q' => '侶', - '«R' => '俘', - '«S' => 'ä¿Ÿ', - '«T' => 'ä¿Š', - '«U' => 'ä¿—', - '«V' => 'ä¾®', - '«W' => 'ä¿', - '«X' => 'ä¿„', - '«Y' => 'ä¿‚', - '«Z' => 'ä¿š', - '«[' => 'ä¿Ž', - '«\\' => 'ä¿ž', - '«]' => 'ä¾·', - '«^' => 'å…—', - '«_' => '冒', - '«`' => '冑', - '«a' => '冠', - '«b' => '剎', - '«c' => '剃', - '«d' => '削', - '«e' => 'å‰', - '«f' => '剌', - '«g' => '剋', - '«h' => '則', - '«i' => '勇', - '«j' => '勉', - '«k' => '勃', - '«l' => 'å‹', - '«m' => 'åŒ', - '«n' => 'å—', - '«o' => 'å»', - '«p' => '厚', - '«q' => 'å›', - '«r' => 'å’¬', - '«s' => 'å“€', - '«t' => 'å’¨', - '«u' => 'å“Ž', - '«v' => '哉', - '«w' => 'å’¸', - '«x' => 'å’¦', - '«y' => 'å’³', - '«z' => '哇', - '«{' => 'å“‚', - '«|' => 'å’½', - '«}' => 'å’ª', - '«~' => 'å“', - '«¡' => 'å“„', - '«¢' => '哈', - '«£' => 'å’¯', - '«¤' => 'å’«', - '«¥' => 'å’±', - '«¦' => 'å’»', - '«§' => 'å’©', - '«¨' => 'å’§', - '«©' => 'å’¿', - '«ª' => '囿', - '««' => 'åž‚', - '«¬' => 'åž‹', - '«­' => 'åž ', - '«®' => '垣', - '«¯' => '垢', - '«°' => '城', - '«±' => 'åž®', - '«²' => 'åž“', - '«³' => '奕', - '«´' => '契', - '«µ' => 'å¥', - '«¶' => '奎', - '«·' => 'å¥', - '«¸' => '姜', - '«¹' => '姘', - '«º' => '姿', - '«»' => '姣', - '«¼' => '姨', - '«½' => '娃', - '«¾' => '姥', - '«¿' => '姪', - '«À' => '姚', - '«Á' => '姦', - '«Â' => 'å¨', - '«Ã' => '姻', - '«Ä' => 'å­©', - '«Å' => '宣', - '«Æ' => '宦', - '«Ç' => '室', - '«È' => '客', - '«É' => '宥', - '«Ê' => 'å°', - '«Ë' => '屎', - '«Ì' => 'å±', - '«Í' => 'å±', - '«Î' => '屋', - '«Ï' => 'å³™', - '«Ð' => 'å³’', - '«Ñ' => 'å··', - '«Ò' => 'å¸', - '«Ó' => '帥', - '«Ô' => '帟', - '«Õ' => 'å¹½', - '«Ö' => '庠', - '«×' => '度', - '«Ø' => '建', - '«Ù' => '弈', - '«Ú' => 'å¼­', - '«Û' => 'å½¥', - '«Ü' => '很', - '«Ý' => 'å¾…', - '«Þ' => '徊', - '«ß' => '律', - '«à' => '徇', - '«á' => '後', - '«â' => '徉', - '«ã' => '怒', - '«ä' => 'æ€', - '«å' => '怠', - '«æ' => '急', - '«ç' => '怎', - '«è' => '怨', - '«é' => 'æ', - '«ê' => 'æ°', - '«ë' => 'æ¨', - '«ì' => 'æ¢', - '«í' => 'æ†', - '«î' => 'æƒ', - '«ï' => 'æ¬', - '«ð' => 'æ«', - '«ñ' => 'æª', - '«ò' => 'æ¤', - '«ó' => 'æ‰', - '«ô' => 'æ‹œ', - '«õ' => '挖', - '«ö' => '按', - '«÷' => '拼', - '«ø' => 'æ‹­', - '«ù' => 'æŒ', - '«ú' => 'æ‹®', - '«û' => '拽', - '«ü' => '指', - '«ý' => '拱', - '«þ' => 'æ‹·', - '¬@' => '拯', - '¬A' => '括', - '¬B' => '拾', - '¬C' => 'æ‹´', - '¬D' => '挑', - '¬E' => '挂', - '¬F' => '政', - '¬G' => 'æ•…', - '¬H' => 'æ–«', - '¬I' => 'æ–½', - '¬J' => 'æ—¢', - '¬K' => '春', - '¬L' => '昭', - '¬M' => '映', - '¬N' => '昧', - '¬O' => '是', - '¬P' => '星', - '¬Q' => '昨', - '¬R' => '昱', - '¬S' => '昤', - '¬T' => 'æ›·', - '¬U' => '柿', - '¬V' => '染', - '¬W' => '柱', - '¬X' => '柔', - '¬Y' => 'æŸ', - '¬Z' => '柬', - '¬[' => '架', - '¬\\' => '枯', - '¬]' => '柵', - '¬^' => '柩', - '¬_' => '柯', - '¬`' => '柄', - '¬a' => '柑', - '¬b' => 'æž´', - '¬c' => '柚', - '¬d' => '查', - '¬e' => '枸', - '¬f' => 'æŸ', - '¬g' => '柞', - '¬h' => '柳', - '¬i' => 'æž°', - '¬j' => '柙', - '¬k' => '柢', - '¬l' => 'æŸ', - '¬m' => '柒', - '¬n' => 'æ­ª', - '¬o' => '殃', - '¬p' => '殆', - '¬q' => '段', - '¬r' => '毒', - '¬s' => '毗', - '¬t' => 'æ°Ÿ', - '¬u' => '泉', - '¬v' => 'æ´‹', - '¬w' => 'æ´²', - '¬x' => 'æ´ª', - '¬y' => 'æµ', - '¬z' => 'æ´¥', - '¬{' => 'æ´Œ', - '¬|' => 'æ´±', - '¬}' => 'æ´ž', - '¬~' => 'æ´—', - '¬¡' => 'æ´»', - '¬¢' => 'æ´½', - '¬£' => 'æ´¾', - '¬¤' => 'æ´¶', - '¬¥' => 'æ´›', - '¬¦' => 'æ³µ', - '¬§' => 'æ´¹', - '¬¨' => 'æ´§', - '¬©' => 'æ´¸', - '¬ª' => 'æ´©', - '¬«' => 'æ´®', - '¬¬' => 'æ´µ', - '¬­' => 'æ´Ž', - '¬®' => 'æ´«', - '¬¯' => 'ç‚«', - '¬°' => '為', - '¬±' => '炳', - '¬²' => '炬', - '¬³' => '炯', - '¬´' => 'ç‚­', - '¬µ' => '炸', - '¬¶' => 'ç‚®', - '¬·' => '炤', - '¬¸' => '爰', - '¬¹' => '牲', - '¬º' => '牯', - '¬»' => '牴', - '¬¼' => 'ç‹©', - '¬½' => 'ç‹ ', - '¬¾' => 'ç‹¡', - '¬¿' => '玷', - '¬À' => 'çŠ', - '¬Á' => '玻', - '¬Â' => '玲', - '¬Ã' => 'ç', - '¬Ä' => 'ç€', - '¬Å' => '玳', - '¬Æ' => '甚', - '¬Ç' => 'ç”­', - '¬È' => 'ç•', - '¬É' => 'ç•Œ', - '¬Ê' => 'ç•Ž', - '¬Ë' => 'ç•‹', - '¬Ì' => 'ç–«', - '¬Í' => 'ç–¤', - '¬Î' => 'ç–¥', - '¬Ï' => 'ç–¢', - '¬Ð' => 'ç–£', - '¬Ñ' => '癸', - '¬Ò' => '皆', - '¬Ó' => '皇', - '¬Ô' => '皈', - '¬Õ' => '盈', - '¬Ö' => '盆', - '¬×' => '盃', - '¬Ø' => 'ç›…', - '¬Ù' => 'çœ', - '¬Ú' => '盹', - '¬Û' => '相', - '¬Ü' => '眉', - '¬Ý' => '看', - '¬Þ' => '盾', - '¬ß' => '盼', - '¬à' => '眇', - '¬á' => '矜', - '¬â' => 'ç ‚', - '¬ã' => 'ç ”', - '¬ä' => 'ç Œ', - '¬å' => 'ç ', - '¬æ' => '祆', - '¬ç' => '祉', - '¬è' => '祈', - '¬é' => '祇', - '¬ê' => '禹', - '¬ë' => '禺', - '¬ì' => '科', - '¬í' => '秒', - '¬î' => '秋', - '¬ï' => 'ç©¿', - '¬ð' => 'çª', - '¬ñ' => 'ç«¿', - '¬ò' => '竽', - '¬ó' => 'ç±½', - '¬ô' => 'ç´‚', - '¬õ' => 'ç´…', - '¬ö' => 'ç´€', - '¬÷' => 'ç´‰', - '¬ø' => 'ç´‡', - '¬ù' => 'ç´„', - '¬ú' => 'ç´†', - '¬û' => '缸', - '¬ü' => '美', - '¬ý' => '羿', - '¬þ' => '耄', - '­@' => 'è€', - '­A' => 'è€', - '­B' => '耑', - '­C' => '耶', - '­D' => '胖', - '­E' => '胥', - '­F' => '胚', - '­G' => '胃', - '­H' => '胄', - '­I' => '背', - '­J' => '胡', - '­K' => '胛', - '­L' => '胎', - '­M' => '胞', - '­N' => '胤', - '­O' => 'èƒ', - '­P' => '致', - '­Q' => '舢', - '­R' => '苧', - '­S' => '范', - '­T' => '茅', - '­U' => 'è‹£', - '­V' => 'è‹›', - '­W' => '苦', - '­X' => '茄', - '­Y' => 'è‹¥', - '­Z' => '茂', - '­[' => '茉', - '­\\' => 'è‹’', - '­]' => 'è‹—', - '­^' => '英', - '­_' => 'èŒ', - '­`' => 'è‹œ', - '­a' => 'è‹”', - '­b' => 'è‹‘', - '­c' => 'è‹ž', - '­d' => 'è‹“', - '­e' => 'è‹Ÿ', - '­f' => '苯', - '­g' => '茆', - '­h' => 'è™', - '­i' => '虹', - '­j' => 'è™»', - '­k' => '虺', - '­l' => 'è¡', - '­m' => 'è¡«', - '­n' => 'è¦', - '­o' => '觔', - '­p' => '計', - '­q' => '訂', - '­r' => '訃', - '­s' => '貞', - '­t' => 'è² ', - '­u' => 'èµ´', - '­v' => 'èµ³', - '­w' => '趴', - '­x' => 'è»', - '­y' => '軌', - '­z' => 'è¿°', - '­{' => '迦', - '­|' => 'è¿¢', - '­}' => '迪', - '­~' => 'è¿¥', - '­¡' => 'è¿­', - '­¢' => 'è¿«', - '­£' => '迤', - '­¤' => '迨', - '­¥' => '郊', - '­¦' => '郎', - '­§' => 'éƒ', - '­¨' => '郃', - '­©' => 'é…‹', - '­ª' => 'é…Š', - '­«' => 'é‡', - '­¬' => 'é–‚', - '­­' => 'é™', - '­®' => '陋', - '­¯' => '陌', - '­°' => 'é™', - '­±' => 'é¢', - '­²' => 'é©', - '­³' => '韋', - '­´' => '韭', - '­µ' => '音', - '­¶' => 'é ', - '­·' => '風', - '­¸' => '飛', - '­¹' => '食', - '­º' => '首', - '­»' => '香', - '­¼' => '乘', - '­½' => '亳', - '­¾' => '倌', - '­¿' => 'å€', - '­À' => '倣', - '­Á' => '俯', - '­Â' => '倦', - '­Ã' => '倥', - '­Ä' => '俸', - '­Å' => '倩', - '­Æ' => '倖', - '­Ç' => '倆', - '­È' => '值', - '­É' => '借', - '­Ê' => '倚', - '­Ë' => '倒', - '­Ì' => '們', - '­Í' => '俺', - '­Î' => '倀', - '­Ï' => '倔', - '­Ð' => '倨', - '­Ñ' => '俱', - '­Ò' => '倡', - '­Ó' => '個', - '­Ô' => '候', - '­Õ' => '倘', - '­Ö' => '俳', - '­×' => 'ä¿®', - '­Ø' => '倭', - '­Ù' => '倪', - '­Ú' => '俾', - '­Û' => '倫', - '­Ü' => '倉', - '­Ý' => 'å…¼', - '­Þ' => '冤', - '­ß' => '冥', - '­à' => '冢', - '­á' => 'å‡', - '­â' => '凌', - '­ã' => '准', - '­ä' => '凋', - '­å' => '剖', - '­æ' => '剜', - '­ç' => '剔', - '­è' => '剛', - '­é' => 'å‰', - '­ê' => '匪', - '­ë' => 'å¿', - '­ì' => '原', - '­í' => 'åŽ', - '­î' => 'åŸ', - '­ï' => '哨', - '­ð' => 'å”', - '­ñ' => 'å”', - '­ò' => 'å”·', - '­ó' => '哼', - '­ô' => 'å“¥', - '­õ' => '哲', - '­ö' => '唆', - '­÷' => '哺', - '­ø' => 'å””', - '­ù' => 'å“©', - '­ú' => 'å“­', - '­û' => 'å“¡', - '­ü' => '唉', - '­ý' => 'å“®', - '­þ' => '哪', - '®@' => '哦', - '®A' => '唧', - '®B' => '唇', - '®C' => '哽', - '®D' => 'å”', - '®E' => '圃', - '®F' => '圄', - '®G' => '埂', - '®H' => '埔', - '®I' => '埋', - '®J' => '埃', - '®K' => 'å ‰', - '®L' => 'å¤', - '®M' => '套', - '®N' => '奘', - '®O' => '奚', - '®P' => '娑', - '®Q' => '娘', - '®R' => '娜', - '®S' => '娟', - '®T' => '娛', - '®U' => '娓', - '®V' => '姬', - '®W' => '娠', - '®X' => '娣', - '®Y' => '娩', - '®Z' => '娥', - '®[' => '娌', - '®\\' => '娉', - '®]' => 'å­«', - '®^' => '屘', - '®_' => 'å®°', - '®`' => '害', - '®a' => '家', - '®b' => 'å®´', - '®c' => 'å®®', - '®d' => '宵', - '®e' => '容', - '®f' => '宸', - '®g' => 'å°„', - '®h' => '屑', - '®i' => '展', - '®j' => 'å±', - '®k' => 'å³­', - '®l' => 'å³½', - '®m' => 'å³»', - '®n' => '峪', - '®o' => '峨', - '®p' => 'å³°', - '®q' => '島', - '®r' => 'å´', - '®s' => 'å³´', - '®t' => 'å·®', - '®u' => '席', - '®v' => '師', - '®w' => '庫', - '®x' => '庭', - '®y' => '座', - '®z' => 'å¼±', - '®{' => 'å¾’', - '®|' => '徑', - '®}' => 'å¾', - '®~' => 'æ™', - '®¡' => 'æ£', - '®¢' => 'æ¥', - '®£' => 'æ', - '®¤' => 'æ•', - '®¥' => 'æ­', - '®¦' => 'æ©', - '®§' => 'æ¯', - '®¨' => 'æ‚„', - '®©' => 'æ‚Ÿ', - '®ª' => 'æ‚š', - '®«' => 'æ‚', - '®¬' => 'æ‚”', - '®­' => 'æ‚Œ', - '®®' => 'æ‚…', - '®¯' => 'æ‚–', - '®°' => '扇', - '®±' => '拳', - '®²' => '挈', - '®³' => 'æ‹¿', - '®´' => 'æŽ', - '®µ' => '挾', - '®¶' => '振', - '®·' => 'æ•', - '®¸' => 'æ‚', - '®¹' => 'æ†', - '®º' => 'æ', - '®»' => 'æ‰', - '®¼' => '挺', - '®½' => 'æ', - '®¾' => '挽', - '®¿' => '挪', - '®À' => '挫', - '®Á' => '挨', - '®Â' => 'æ', - '®Ã' => 'æŒ', - '®Ä' => '效', - '®Å' => '敉', - '®Æ' => 'æ–™', - '®Ç' => 'æ—', - '®È' => 'æ—…', - '®É' => '時', - '®Ê' => '晉', - '®Ë' => 'æ™', - '®Ì' => '晃', - '®Í' => 'æ™’', - '®Î' => '晌', - '®Ï' => 'æ™…', - '®Ð' => 'æ™', - '®Ñ' => '書', - '®Ò' => '朔', - '®Ó' => '朕', - '®Ô' => '朗', - '®Õ' => 'æ ¡', - '®Ö' => 'æ ¸', - '®×' => '案', - '®Ø' => '框', - '®Ù' => 'æ¡“', - '®Ú' => 'æ ¹', - '®Û' => 'æ¡‚', - '®Ü' => 'æ¡”', - '®Ý' => 'æ ©', - '®Þ' => '梳', - '®ß' => 'æ —', - '®à' => 'æ¡Œ', - '®á' => 'æ¡‘', - '®â' => 'æ ½', - '®ã' => '柴', - '®ä' => 'æ¡', - '®å' => 'æ¡€', - '®æ' => 'æ ¼', - '®ç' => '桃', - '®è' => 'æ ª', - '®é' => 'æ¡…', - '®ê' => 'æ “', - '®ë' => 'æ ˜', - '®ì' => 'æ¡', - '®í' => '殊', - '®î' => '殉', - '®ï' => 'æ®·', - '®ð' => 'æ°£', - '®ñ' => 'æ°§', - '®ò' => 'æ°¨', - '®ó' => 'æ°¦', - '®ô' => 'æ°¤', - '®õ' => 'æ³°', - '®ö' => '浪', - '®÷' => '涕', - '®ø' => '消', - '®ù' => '涇', - '®ú' => '浦', - '®û' => '浸', - '®ü' => 'æµ·', - '®ý' => 'æµ™', - '®þ' => '涓', - '¯@' => '浬', - '¯A' => '涉', - '¯B' => 'æµ®', - '¯C' => '浚', - '¯D' => 'æµ´', - '¯E' => '浩', - '¯F' => '涌', - '¯G' => '涊', - '¯H' => 'æµ¹', - '¯I' => '涅', - '¯J' => 'æµ¥', - '¯K' => '涔', - '¯L' => '烊', - '¯M' => '烘', - '¯N' => '烤', - '¯O' => '烙', - '¯P' => '烈', - '¯Q' => 'çƒ', - '¯R' => '爹', - '¯S' => '特', - '¯T' => '狼', - '¯U' => '狹', - '¯V' => '狽', - '¯W' => '狸', - '¯X' => 'ç‹·', - '¯Y' => '玆', - '¯Z' => 'ç­', - '¯[' => 'ç‰', - '¯\\' => 'ç®', - '¯]' => 'ç ', - '¯^' => 'çª', - '¯_' => 'çž', - '¯`' => 'ç•”', - '¯a' => 'ç•', - '¯b' => 'ç•œ', - '¯c' => 'ç•š', - '¯d' => 'ç•™', - '¯e' => 'ç–¾', - '¯f' => 'ç—…', - '¯g' => 'ç—‡', - '¯h' => 'ç–²', - '¯i' => 'ç–³', - '¯j' => 'ç–½', - '¯k' => 'ç–¼', - '¯l' => 'ç–¹', - '¯m' => 'ç—‚', - '¯n' => 'ç–¸', - '¯o' => 'çš‹', - '¯p' => 'çš°', - '¯q' => '益', - '¯r' => 'ç›', - '¯s' => '盎', - '¯t' => '眩', - '¯u' => '真', - '¯v' => '眠', - '¯w' => '眨', - '¯x' => '矩', - '¯y' => 'ç °', - '¯z' => 'ç §', - '¯{' => 'ç ¸', - '¯|' => 'ç ', - '¯}' => 'ç ´', - '¯~' => 'ç ·', - '¯¡' => 'ç ¥', - '¯¢' => 'ç ­', - '¯£' => 'ç  ', - '¯¤' => 'ç Ÿ', - '¯¥' => 'ç ²', - '¯¦' => '祕', - '¯§' => 'ç¥', - '¯¨' => '祠', - '¯©' => '祟', - '¯ª' => '祖', - '¯«' => '神', - '¯¬' => 'ç¥', - '¯­' => '祗', - '¯®' => '祚', - '¯¯' => '秤', - '¯°' => '秣', - '¯±' => '秧', - '¯²' => '租', - '¯³' => '秦', - '¯´' => '秩', - '¯µ' => '秘', - '¯¶' => '窄', - '¯·' => '窈', - '¯¸' => 'ç«™', - '¯¹' => '笆', - '¯º' => '笑', - '¯»' => '粉', - '¯¼' => 'ç´¡', - '¯½' => 'ç´—', - '¯¾' => 'ç´‹', - '¯¿' => 'ç´Š', - '¯À' => 'ç´ ', - '¯Á' => 'ç´¢', - '¯Â' => 'ç´”', - '¯Ã' => 'ç´', - '¯Ä' => 'ç´•', - '¯Å' => 'ç´š', - '¯Æ' => 'ç´œ', - '¯Ç' => 'ç´', - '¯È' => 'ç´™', - '¯É' => 'ç´›', - '¯Ê' => '缺', - '¯Ë' => '罟', - '¯Ì' => 'ç¾”', - '¯Í' => 'ç¿…', - '¯Î' => 'ç¿', - '¯Ï' => '耆', - '¯Ð' => '耘', - '¯Ñ' => '耕', - '¯Ò' => '耙', - '¯Ó' => '耗', - '¯Ô' => '耽', - '¯Õ' => '耿', - '¯Ö' => '胱', - '¯×' => 'è„‚', - '¯Ø' => '胰', - '¯Ù' => 'è„…', - '¯Ú' => '胭', - '¯Û' => '胴', - '¯Ü' => '脆', - '¯Ý' => '胸', - '¯Þ' => '胳', - '¯ß' => '脈', - '¯à' => '能', - '¯á' => 'è„Š', - '¯â' => '胼', - '¯ã' => '胯', - '¯ä' => '臭', - '¯å' => '臬', - '¯æ' => '舀', - '¯ç' => 'èˆ', - '¯è' => '航', - '¯é' => '舫', - '¯ê' => '舨', - '¯ë' => '般', - '¯ì' => '芻', - '¯í' => '茫', - '¯î' => 'è’', - '¯ï' => 'è”', - '¯ð' => 'èŠ', - '¯ñ' => '茸', - '¯ò' => 'è', - '¯ó' => 'è‰', - '¯ô' => '茵', - '¯õ' => '茴', - '¯ö' => 'è', - '¯÷' => '茲', - '¯ø' => '茹', - '¯ù' => '茶', - '¯ú' => '茗', - '¯û' => 'è€', - '¯ü' => '茱', - '¯ý' => '茨', - '¯þ' => 'èƒ', - '°@' => 'è™”', - '°A' => '蚊', - '°B' => '蚪', - '°C' => 'èš“', - '°D' => '蚤', - '°E' => 'èš©', - '°F' => '蚌', - '°G' => '蚣', - '°H' => 'èšœ', - '°I' => 'è¡°', - '°J' => 'è¡·', - '°K' => 'è¢', - '°L' => '袂', - '°M' => '衽', - '°N' => '衹', - '°O' => '記', - '°P' => 'è¨', - '°Q' => '討', - '°R' => '訌', - '°S' => '訕', - '°T' => '訊', - '°U' => '託', - '°V' => '訓', - '°W' => '訖', - '°X' => 'è¨', - '°Y' => '訑', - '°Z' => '豈', - '°[' => '豺', - '°\\' => 'è±¹', - '°]' => '財', - '°^' => 'è²¢', - '°_' => 'èµ·', - '°`' => '躬', - '°a' => 'è»’', - '°b' => 'è»”', - '°c' => 'è»', - '°d' => 'è¾±', - '°e' => 'é€', - '°f' => '逆', - '°g' => 'è¿·', - '°h' => '退', - '°i' => '迺', - '°j' => 'è¿´', - '°k' => '逃', - '°l' => '追', - '°m' => '逅', - '°n' => '迸', - '°o' => 'é‚•', - '°p' => '郡', - '°q' => 'éƒ', - '°r' => '郢', - '°s' => 'é…’', - '°t' => 'é…', - '°u' => 'é…Œ', - '°v' => '釘', - '°w' => 'é‡', - '°x' => '釗', - '°y' => '釜', - '°z' => '釙', - '°{' => 'é–ƒ', - '°|' => '院', - '°}' => '陣', - '°~' => '陡', - '°¡' => 'é™›', - '°¢' => 'é™', - '°£' => '除', - '°¤' => '陘', - '°¥' => '陞', - '°¦' => 'éš»', - '°§' => '飢', - '°¨' => '馬', - '°©' => '骨', - '°ª' => '高', - '°«' => '鬥', - '°¬' => '鬲', - '°­' => '鬼', - '°®' => 'ä¹¾', - '°¯' => 'åº', - '°°' => 'å½', - '°±' => 'åœ', - '°²' => 'å‡', - '°³' => 'åƒ', - '°´' => 'åŒ', - '°µ' => 'åš', - '°¶' => 'å‰', - '°·' => 'å¥', - '°¸' => 'å¶', - '°¹' => 'åŽ', - '°º' => 'å•', - '°»' => 'åµ', - '°¼' => 'å´', - '°½' => 'å·', - '°¾' => 'å', - '°¿' => 'å€', - '°À' => 'å¯', - '°Á' => 'å­', - '°Â' => 'å…œ', - '°Ã' => '冕', - '°Ä' => '凰', - '°Å' => '剪', - '°Æ' => '副', - '°Ç' => 'å‹’', - '°È' => 'å‹™', - '°É' => '勘', - '°Ê' => 'å‹•', - '°Ë' => 'åŒ', - '°Ì' => 'åŒ', - '°Í' => '匙', - '°Î' => '匿', - '°Ï' => 'å€', - '°Ð' => '匾', - '°Ñ' => 'åƒ', - '°Ò' => '曼', - '°Ó' => '商', - '°Ô' => '啪', - '°Õ' => '啦', - '°Ö' => 'å•„', - '°×' => 'å•ž', - '°Ø' => 'å•¡', - '°Ù' => '啃', - '°Ú' => 'å•Š', - '°Û' => 'å”±', - '°Ü' => 'å•–', - '°Ý' => 'å•', - '°Þ' => 'å••', - '°ß' => '唯', - '°à' => '啤', - '°á' => '唸', - '°â' => 'å”®', - '°ã' => 'å•œ', - '°ä' => '唬', - '°å' => 'å•£', - '°æ' => '唳', - '°ç' => 'å•', - '°è' => 'å•—', - '°é' => '圈', - '°ê' => '國', - '°ë' => '圉', - '°ì' => '域', - '°í' => 'å …', - '°î' => 'å Š', - '°ï' => 'å †', - '°ð' => '埠', - '°ñ' => '埤', - '°ò' => '基', - '°ó' => 'å ‚', - '°ô' => 'å µ', - '°õ' => '執', - '°ö' => '培', - '°÷' => '夠', - '°ø' => '奢', - '°ù' => '娶', - '°ú' => 'å©', - '°û' => '婉', - '°ü' => '婦', - '°ý' => '婪', - '°þ' => 'å©€', - '±@' => '娼', - '±A' => 'å©¢', - '±B' => 'å©š', - '±C' => '婆', - '±D' => 'å©Š', - '±E' => 'å­°', - '±F' => '寇', - '±G' => '寅', - '±H' => '寄', - '±I' => '寂', - '±J' => '宿', - '±K' => '密', - '±L' => 'å°‰', - '±M' => 'å°ˆ', - '±N' => 'å°‡', - '±O' => 'å± ', - '±P' => '屜', - '±Q' => 'å±', - '±R' => 'å´‡', - '±S' => 'å´†', - '±T' => 'å´Ž', - '±U' => 'å´›', - '±V' => 'å´–', - '±W' => 'å´¢', - '±X' => 'å´‘', - '±Y' => 'å´©', - '±Z' => 'å´”', - '±[' => 'å´™', - '±\\' => 'å´¤', - '±]' => 'å´§', - '±^' => 'å´—', - '±_' => 'å·¢', - '±`' => '常', - '±a' => '帶', - '±b' => '帳', - '±c' => '帷', - '±d' => '康', - '±e' => '庸', - '±f' => '庶', - '±g' => '庵', - '±h' => '庾', - '±i' => 'å¼µ', - '±j' => 'å¼·', - '±k' => 'å½—', - '±l' => '彬', - '±m' => '彩', - '±n' => '彫', - '±o' => 'å¾—', - '±p' => 'å¾™', - '±q' => '從', - '±r' => '徘', - '±s' => '御', - '±t' => 'å¾ ', - '±u' => '徜', - '±v' => 'æ¿', - '±w' => 'æ‚£', - '±x' => '悉', - '±y' => 'æ‚ ', - '±z' => '您', - '±{' => '惋', - '±|' => 'æ‚´', - '±}' => '惦', - '±~' => '悽', - '±¡' => '情', - '±¢' => 'æ‚»', - '±£' => '悵', - '±¤' => '惜', - '±¥' => '悼', - '±¦' => '惘', - '±§' => '惕', - '±¨' => '惆', - '±©' => '惟', - '±ª' => '悸', - '±«' => '惚', - '±¬' => '惇', - '±­' => '戚', - '±®' => '戛', - '±¯' => '扈', - '±°' => '掠', - '±±' => '控', - '±²' => 'æ²', - '±³' => '掖', - '±´' => '探', - '±µ' => '接', - '±¶' => 'æ·', - '±·' => 'æ§', - '±¸' => '掘', - '±¹' => '措', - '±º' => 'æ±', - '±»' => '掩', - '±¼' => '掉', - '±½' => '掃', - '±¾' => '掛', - '±¿' => 'æ«', - '±À' => '推', - '±Á' => '掄', - '±Â' => '授', - '±Ã' => '掙', - '±Ä' => '採', - '±Å' => '掬', - '±Æ' => '排', - '±Ç' => 'æŽ', - '±È' => '掀', - '±É' => 'æ»', - '±Ê' => 'æ©', - '±Ë' => 'æ¨', - '±Ì' => 'æº', - '±Í' => 'æ•', - '±Î' => 'æ•–', - '±Ï' => 'æ•‘', - '±Ð' => 'æ•™', - '±Ñ' => 'æ•—', - '±Ò' => 'å•Ÿ', - '±Ó' => 'æ•', - '±Ô' => '敘', - '±Õ' => 'æ••', - '±Ö' => 'æ•”', - '±×' => 'æ–œ', - '±Ø' => 'æ–›', - '±Ù' => 'æ–¬', - '±Ú' => 'æ—', - '±Û' => 'æ—‹', - '±Ü' => 'æ—Œ', - '±Ý' => 'æ—Ž', - '±Þ' => 'æ™', - '±ß' => '晚', - '±à' => '晤', - '±á' => '晨', - '±â' => '晦', - '±ã' => '晞', - '±ä' => '曹', - '±å' => 'å‹—', - '±æ' => '望', - '±ç' => 'æ¢', - '±è' => '梯', - '±é' => '梢', - '±ê' => '梓', - '±ë' => '梵', - '±ì' => 'æ¡¿', - '±í' => '桶', - '±î' => '梱', - '±ï' => '梧', - '±ð' => '梗', - '±ñ' => '械', - '±ò' => '梃', - '±ó' => '棄', - '±ô' => '梭', - '±õ' => '梆', - '±ö' => '梅', - '±÷' => '梔', - '±ø' => 'æ¢', - '±ù' => '梨', - '±ú' => '梟', - '±û' => '梡', - '±ü' => '梂', - '±ý' => '欲', - '±þ' => '殺', - '²@' => '毫', - '²A' => '毬', - '²B' => 'æ°«', - '²C' => '涎', - '²D' => '涼', - '²E' => 'æ·³', - '²F' => 'æ·™', - '²G' => '液', - '²H' => 'æ·¡', - '²I' => 'æ·Œ', - '²J' => 'æ·¤', - '²K' => 'æ·»', - '²L' => 'æ·º', - '²M' => '清', - '²N' => 'æ·‡', - '²O' => 'æ·‹', - '²P' => '涯', - '²Q' => 'æ·‘', - '²R' => '涮', - '²S' => 'æ·ž', - '²T' => 'æ·¹', - '²U' => '涸', - '²V' => 'æ··', - '²W' => 'æ·µ', - '²X' => 'æ·…', - '²Y' => 'æ·’', - '²Z' => '渚', - '²[' => '涵', - '²\\' => 'æ·š', - '²]' => 'æ·«', - '²^' => 'æ·˜', - '²_' => 'æ·ª', - '²`' => 'æ·±', - '²a' => 'æ·®', - '²b' => 'æ·¨', - '²c' => 'æ·†', - '²d' => 'æ·„', - '²e' => '涪', - '²f' => 'æ·¬', - '²g' => '涿', - '²h' => 'æ·¦', - '²i' => '烹', - '²j' => '焉', - '²k' => 'ç„Š', - '²l' => '烽', - '²m' => '烯', - '²n' => '爽', - '²o' => '牽', - '²p' => 'çŠ', - '²q' => '猜', - '²r' => '猛', - '²s' => '猖', - '²t' => '猓', - '²u' => '猙', - '²v' => '率', - '²w' => 'ç…', - '²x' => 'çŠ', - '²y' => 'çƒ', - '²z' => 'ç†', - '²{' => 'ç¾', - '²|' => 'ç', - '²}' => 'ç“ ', - '²~' => '瓶', - '²¡' => 'ç“·', - '²¢' => '甜', - '²£' => '產', - '²¤' => 'ç•¥', - '²¥' => '畦', - '²¦' => 'ç•¢', - '²§' => 'ç•°', - '²¨' => 'ç–', - '²©' => 'ç—”', - '²ª' => 'ç—•', - '²«' => 'ç–µ', - '²¬' => 'ç—Š', - '²­' => 'ç—', - '²®' => '皎', - '²¯' => 'ç›”', - '²°' => 'ç›’', - '²±' => 'ç››', - '²²' => '眷', - '²³' => '眾', - '²´' => '眼', - '²µ' => '眶', - '²¶' => '眸', - '²·' => '眺', - '²¸' => 'ç¡«', - '²¹' => '硃', - '²º' => 'ç¡Ž', - '²»' => '祥', - '²¼' => '票', - '²½' => '祭', - '²¾' => '移', - '²¿' => '窒', - '²À' => '窕', - '²Á' => '笠', - '²Â' => '笨', - '²Ã' => '笛', - '²Ä' => '第', - '²Å' => '符', - '²Æ' => '笙', - '²Ç' => '笞', - '²È' => '笮', - '²É' => 'ç²’', - '²Ê' => 'ç²—', - '²Ë' => '粕', - '²Ì' => '絆', - '²Í' => '絃', - '²Î' => 'çµ±', - '²Ï' => 'ç´®', - '²Ð' => 'ç´¹', - '²Ñ' => 'ç´¼', - '²Ò' => 'çµ€', - '²Ó' => 'ç´°', - '²Ô' => 'ç´³', - '²Õ' => '組', - '²Ö' => 'ç´¯', - '²×' => '終', - '²Ø' => 'ç´²', - '²Ù' => 'ç´±', - '²Ú' => 'ç¼½', - '²Û' => '羞', - '²Ü' => '羚', - '²Ý' => 'ç¿Œ', - '²Þ' => 'ç¿Ž', - '²ß' => 'ç¿’', - '²à' => '耜', - '²á' => 'èŠ', - '²â' => 'è†', - '²ã' => '脯', - '²ä' => 'è„–', - '²å' => 'è„£', - '²æ' => 'è„«', - '²ç' => 'è„©', - '²è' => 'è„°', - '²é' => '脤', - '²ê' => '舂', - '²ë' => '舵', - '²ì' => '舷', - '²í' => '舶', - '²î' => '船', - '²ï' => '莎', - '²ð' => '莞', - '²ñ' => '莘', - '²ò' => 'è¸', - '²ó' => '莢', - '²ô' => '莖', - '²õ' => '莽', - '²ö' => '莫', - '²÷' => '莒', - '²ø' => '莊', - '²ù' => '莓', - '²ú' => '莉', - '²û' => '莠', - '²ü' => 'è·', - '²ý' => 'è»', - '²þ' => 'è¼', - '³@' => '莆', - '³A' => '莧', - '³B' => '處', - '³C' => '彪', - '³D' => '蛇', - '³E' => '蛀', - '³F' => '蚶', - '³G' => '蛄', - '³H' => 'èšµ', - '³I' => '蛆', - '³J' => '蛋', - '³K' => 'èš±', - '³L' => '蚯', - '³M' => '蛉', - '³N' => 'è¡“', - '³O' => '袞', - '³P' => '袈', - '³Q' => '被', - '³R' => '袒', - '³S' => '袖', - '³T' => 'è¢', - '³U' => '袋', - '³V' => '覓', - '³W' => 'è¦', - '³X' => '訪', - '³Y' => 'è¨', - '³Z' => '訣', - '³[' => '訥', - '³\\' => '許', - '³]' => '設', - '³^' => '訟', - '³_' => '訛', - '³`' => '訢', - '³a' => '豉', - '³b' => '豚', - '³c' => '販', - '³d' => '責', - '³e' => '貫', - '³f' => '貨', - '³g' => '貪', - '³h' => '貧', - '³i' => '赧', - '³j' => '赦', - '³k' => '趾', - '³l' => '趺', - '³m' => 'è»›', - '³n' => '軟', - '³o' => '這', - '³p' => 'é€', - '³q' => '通', - '³r' => '逗', - '³s' => '連', - '³t' => '速', - '³u' => 'é€', - '³v' => 'é€', - '³w' => '逕', - '³x' => '逞', - '³y' => '造', - '³z' => 'é€', - '³{' => '逢', - '³|' => '逖', - '³}' => '逛', - '³~' => '途', - '³¡' => '部', - '³¢' => '郭', - '³£' => '都', - '³¤' => 'é…—', - '³¥' => '野', - '³¦' => '釵', - '³§' => '釦', - '³¨' => '釣', - '³©' => '釧', - '³ª' => '釭', - '³«' => '釩', - '³¬' => 'é–‰', - '³­' => '陪', - '³®' => '陵', - '³¯' => '陳', - '³°' => '陸', - '³±' => 'é™°', - '³²' => 'é™´', - '³³' => '陶', - '³´' => 'é™·', - '³µ' => '陬', - '³¶' => '雀', - '³·' => '雪', - '³¸' => '雩', - '³¹' => 'ç« ', - '³º' => 'ç«Ÿ', - '³»' => 'é ‚', - '³¼' => 'é ƒ', - '³½' => 'é­š', - '³¾' => 'é³¥', - '³¿' => 'é¹µ', - '³À' => '鹿', - '³Á' => '麥', - '³Â' => '麻', - '³Ã' => 'å‚¢', - '³Ä' => 'å‚', - '³Å' => 'å‚…', - '³Æ' => 'å‚™', - '³Ç' => 'å‚‘', - '³È' => 'å‚€', - '³É' => 'å‚–', - '³Ê' => '傘', - '³Ë' => 'å‚š', - '³Ì' => '最', - '³Í' => '凱', - '³Î' => '割', - '³Ï' => '剴', - '³Ð' => '創', - '³Ñ' => '剩', - '³Ò' => 'å‹ž', - '³Ó' => 'å‹', - '³Ô' => 'å‹›', - '³Õ' => 'åš', - '³Ö' => '厥', - '³×' => 'å•»', - '³Ø' => 'å–€', - '³Ù' => 'å–§', - '³Ú' => '啼', - '³Û' => 'å–Š', - '³Ü' => 'å–', - '³Ý' => 'å–˜', - '³Þ' => 'å–‚', - '³ß' => 'å–œ', - '³à' => 'å–ª', - '³á' => 'å–”', - '³â' => 'å–‡', - '³ã' => 'å–‹', - '³ä' => 'å–ƒ', - '³å' => 'å–³', - '³æ' => 'å–®', - '³ç' => 'å–Ÿ', - '³è' => '唾', - '³é' => 'å–²', - '³ê' => 'å–š', - '³ë' => 'å–»', - '³ì' => 'å–¬', - '³í' => 'å–±', - '³î' => '啾', - '³ï' => 'å–‰', - '³ð' => 'å–«', - '³ñ' => 'å–™', - '³ò' => 'åœ', - '³ó' => 'å ¯', - '³ô' => 'å ª', - '³õ' => 'å ´', - '³ö' => 'å ¤', - '³÷' => 'å °', - '³ø' => 'å ±', - '³ù' => 'å ¡', - '³ú' => 'å ', - '³û' => 'å  ', - '³ü' => '壹', - '³ý' => '壺', - '³þ' => '奠', - '´@' => 'å©·', - '´A' => '媚', - '´B' => 'å©¿', - '´C' => '媒', - '´D' => '媛', - '´E' => '媧', - '´F' => 'å­³', - '´G' => 'å­±', - '´H' => '寒', - '´I' => '富', - '´J' => '寓', - '´K' => 'å¯', - '´L' => 'å°Š', - '´M' => 'å°‹', - '´N' => 'å°±', - '´O' => '嵌', - '´P' => 'åµ', - '´Q' => 'å´´', - '´R' => '嵇', - '´S' => 'å·½', - '´T' => 'å¹…', - '´U' => '帽', - '´V' => 'å¹€', - '´W' => '幃', - '´X' => 'å¹¾', - '´Y' => '廊', - '´Z' => 'å»', - '´[' => '廂', - '´\\' => '廄', - '´]' => 'å¼¼', - '´^' => 'å½­', - '´_' => '復', - '´`' => '循', - '´a' => '徨', - '´b' => '惑', - '´c' => '惡', - '´d' => '悲', - '´e' => '悶', - '´f' => '惠', - '´g' => 'æ„œ', - '´h' => 'æ„£', - '´i' => '惺', - '´j' => 'æ„•', - '´k' => '惰', - '´l' => '惻', - '´m' => '惴', - '´n' => 'æ…¨', - '´o' => '惱', - '´p' => 'æ„Ž', - '´q' => '惶', - '´r' => '愉', - '´s' => 'æ„€', - '´t' => 'æ„’', - '´u' => '戟', - '´v' => '扉', - '´w' => '掣', - '´x' => '掌', - '´y' => 'æ', - '´z' => 'æ€', - '´{' => 'æ©', - '´|' => 'æ‰', - '´}' => 'æ†', - '´~' => 'æ', - '´¡' => 'æ’', - '´¢' => 'æ£', - '´£' => 'æ', - '´¤' => 'æ¡', - '´¥' => 'æ–', - '´¦' => 'æ­', - '´§' => 'æ®', - '´¨' => 'æ¶', - '´©' => 'æ´', - '´ª' => 'æª', - '´«' => 'æ›', - '´¬' => 'æ‘’', - '´­' => 'æš', - '´®' => 'æ¹', - '´¯' => 'æ•ž', - '´°' => '敦', - '´±' => 'æ•¢', - '´²' => 'æ•£', - '´³' => 'æ–‘', - '´´' => 'æ–', - '´µ' => 'æ–¯', - '´¶' => 'æ™®', - '´·' => 'æ™°', - '´¸' => 'æ™´', - '´¹' => '晶', - '´º' => '景', - '´»' => 'æš‘', - '´¼' => '智', - '´½' => '晾', - '´¾' => 'æ™·', - '´¿' => '曾', - '´À' => '替', - '´Á' => '期', - '´Â' => 'æœ', - '´Ã' => '棺', - '´Ä' => '棕', - '´Å' => '棠', - '´Æ' => '棘', - '´Ç' => '棗', - '´È' => '椅', - '´É' => '棟', - '´Ê' => '棵', - '´Ë' => '森', - '´Ì' => '棧', - '´Í' => '棹', - '´Î' => '棒', - '´Ï' => '棲', - '´Ð' => '棣', - '´Ñ' => '棋', - '´Ò' => 'æ£', - '´Ó' => 'æ¤', - '´Ô' => '椒', - '´Õ' => '椎', - '´Ö' => '棉', - '´×' => '棚', - '´Ø' => '楮', - '´Ù' => '棻', - '´Ú' => '款', - '´Û' => '欺', - '´Ü' => '欽', - '´Ý' => '殘', - '´Þ' => 'æ®–', - '´ß' => '殼', - '´à' => '毯', - '´á' => 'æ°®', - '´â' => 'æ°¯', - '´ã' => 'æ°¬', - '´ä' => '港', - '´å' => '游', - '´æ' => 'æ¹”', - '´ç' => '渡', - '´è' => '渲', - '´é' => '湧', - '´ê' => '湊', - '´ë' => '渠', - '´ì' => '渥', - '´í' => '渣', - '´î' => '減', - '´ï' => 'æ¹›', - '´ð' => '湘', - '´ñ' => '渤', - '´ò' => 'æ¹–', - '´ó' => 'æ¹®', - '´ô' => '渭', - '´õ' => '渦', - '´ö' => '湯', - '´÷' => '渴', - '´ø' => 'æ¹', - '´ù' => '渺', - '´ú' => '測', - '´û' => '湃', - '´ü' => 'æ¸', - '´ý' => '渾', - '´þ' => '滋', - 'µ@' => '溉', - 'µA' => '渙', - 'µB' => '湎', - 'µC' => 'æ¹£', - 'µD' => '湄', - 'µE' => 'æ¹²', - 'µF' => '湩', - 'µG' => '湟', - 'µH' => 'ç„™', - 'µI' => 'ç„š', - 'µJ' => '焦', - 'µK' => 'ç„°', - 'µL' => 'ç„¡', - 'µM' => '然', - 'µN' => 'ç…®', - 'µO' => 'ç„œ', - 'µP' => '牌', - 'µQ' => '犄', - 'µR' => '犀', - 'µS' => '猶', - 'µT' => '猥', - 'µU' => '猴', - 'µV' => '猩', - 'µW' => 'çº', - 'µX' => 'çª', - 'µY' => 'ç³', - 'µZ' => 'ç¢', - 'µ[' => 'ç¥', - 'µ\\' => 'çµ', - 'µ]' => 'ç¶', - 'µ^' => 'ç´', - 'µ_' => 'ç¯', - 'µ`' => 'ç›', - 'µa' => 'ç¦', - 'µb' => 'ç¨', - 'µc' => '甥', - 'µd' => '甦', - 'µe' => 'ç•«', - 'µf' => '番', - 'µg' => 'ç—¢', - 'µh' => 'ç—›', - 'µi' => 'ç—£', - 'µj' => 'ç—™', - 'µk' => 'ç—˜', - 'µl' => 'ç—ž', - 'µm' => 'ç— ', - 'µn' => 'ç™»', - 'µo' => '發', - 'µp' => 'çš–', - 'µq' => 'çš“', - 'µr' => 'çš´', - 'µs' => '盜', - 'µt' => 'ç', - 'µu' => '短', - 'µv' => 'ç¡', - 'µw' => '硬', - 'µx' => '硯', - 'µy' => 'ç¨', - 'µz' => '稈', - 'µ{' => '程', - 'µ|' => '稅', - 'µ}' => '稀', - 'µ~' => '窘', - 'µ¡' => '窗', - 'µ¢' => '窖', - 'µ£' => 'ç«¥', - 'µ¤' => 'ç«£', - 'µ¥' => 'ç­‰', - 'µ¦' => 'ç­–', - 'µ§' => 'ç­†', - 'µ¨' => 'ç­', - 'µ©' => 'ç­’', - 'µª' => 'ç­”', - 'µ«' => 'ç­', - 'µ¬' => 'ç­‹', - 'µ­' => 'ç­', - 'µ®' => 'ç­‘', - 'µ¯' => '粟', - 'µ°' => 'ç²¥', - 'µ±' => '絞', - 'µ²' => 'çµ', - 'µ³' => '絨', - 'µ´' => '絕', - 'µµ' => 'ç´«', - 'µ¶' => 'çµ®', - 'µ·' => 'çµ²', - 'µ¸' => '絡', - 'µ¹' => '給', - 'µº' => 'çµ¢', - 'µ»' => 'çµ°', - 'µ¼' => 'çµ³', - 'µ½' => 'å–„', - 'µ¾' => 'ç¿”', - 'µ¿' => 'ç¿•', - 'µÀ' => '耋', - 'µÁ' => 'è’', - 'µÂ' => 'è‚…', - 'µÃ' => 'è…•', - 'µÄ' => 'è…”', - 'µÅ' => 'è…‹', - 'µÆ' => 'è…‘', - 'µÇ' => 'è…Ž', - 'µÈ' => '脹', - 'µÉ' => 'è…†', - 'µÊ' => '脾', - 'µË' => 'è…Œ', - 'µÌ' => 'è…“', - 'µÍ' => 'è…´', - 'µÎ' => '舒', - 'µÏ' => '舜', - 'µÐ' => 'è©', - 'µÑ' => 'èƒ', - 'µÒ' => 'è¸', - 'µÓ' => 'è', - 'µÔ' => 'è ', - 'µÕ' => 'è…', - 'µÖ' => 'è‹', - 'µ×' => 'è', - 'µØ' => 'è¯', - 'µÙ' => 'è±', - 'µÚ' => 'è´', - 'µÛ' => 'è‘—', - 'µÜ' => 'èŠ', - 'µÝ' => 'è°', - 'µÞ' => 'èŒ', - 'µß' => 'èŒ', - 'µà' => 'è½', - 'µá' => 'è²', - 'µâ' => 'èŠ', - 'µã' => 'è¸', - 'µä' => 'èŽ', - 'µå' => 'è„', - 'µæ' => 'èœ', - 'µç' => 'è‡', - 'µè' => 'è”', - 'µé' => 'èŸ', - 'µê' => 'è™›', - 'µë' => '蛟', - 'µì' => 'è›™', - 'µí' => 'è›­', - 'µî' => 'è›”', - 'µï' => 'è››', - 'µð' => '蛤', - 'µñ' => 'è›', - 'µò' => '蛞', - 'µó' => 'è¡—', - 'µô' => 'è£', - 'µõ' => '裂', - 'µö' => '袱', - 'µ÷' => '覃', - 'µø' => '視', - 'µù' => '註', - 'µú' => 'è© ', - 'µû' => 'è©•', - 'µü' => 'è©ž', - 'µý' => '証', - 'µþ' => 'è©', - '¶@' => 'è©”', - '¶A' => 'è©›', - '¶B' => 'è©', - '¶C' => '詆', - '¶D' => '訴', - '¶E' => '診', - '¶F' => '訶', - '¶G' => 'è©–', - '¶H' => '象', - '¶I' => '貂', - '¶J' => '貯', - '¶K' => 'è²¼', - '¶L' => 'è²³', - '¶M' => 'è²½', - '¶N' => 'è³', - '¶O' => 'è²»', - '¶P' => 'è³€', - '¶Q' => 'è²´', - '¶R' => 'è²·', - '¶S' => '貶', - '¶T' => '貿', - '¶U' => '貸', - '¶V' => '越', - '¶W' => '超', - '¶X' => 'è¶', - '¶Y' => 'è·Ž', - '¶Z' => 'è·', - '¶[' => 'è·‹', - '¶\\' => 'è·š', - '¶]' => 'è·‘', - '¶^' => 'è·Œ', - '¶_' => 'è·›', - '¶`' => 'è·†', - '¶a' => 'è»»', - '¶b' => '軸', - '¶c' => '軼', - '¶d' => '辜', - '¶e' => '逮', - '¶f' => '逵', - '¶g' => '週', - '¶h' => '逸', - '¶i' => '進', - '¶j' => '逶', - '¶k' => 'é„‚', - '¶l' => '郵', - '¶m' => '鄉', - '¶n' => '郾', - '¶o' => 'é…£', - '¶p' => 'é…¥', - '¶q' => 'é‡', - '¶r' => '鈔', - '¶s' => '鈕', - '¶t' => '鈣', - '¶u' => '鈉', - '¶v' => '鈞', - '¶w' => 'éˆ', - '¶x' => 'éˆ', - '¶y' => '鈇', - '¶z' => '鈑', - '¶{' => 'é–”', - '¶|' => 'é–', - '¶}' => 'é–‹', - '¶~' => 'é–‘', - '¶¡' => 'é–“', - '¶¢' => 'é–’', - '¶£' => 'é–Ž', - '¶¤' => '隊', - '¶¥' => '階', - '¶¦' => 'éš‹', - '¶§' => '陽', - '¶¨' => 'éš…', - '¶©' => '隆', - '¶ª' => 'éš', - '¶«' => '陲', - '¶¬' => 'éš„', - '¶­' => 'é›', - '¶®' => 'é›…', - '¶¯' => '雄', - '¶°' => '集', - '¶±' => '雇', - '¶²' => '雯', - '¶³' => '雲', - '¶´' => '韌', - '¶µ' => 'é …', - '¶¶' => 'é †', - '¶·' => 'é ˆ', - '¶¸' => '飧', - '¶¹' => '飪', - '¶º' => '飯', - '¶»' => '飩', - '¶¼' => '飲', - '¶½' => '飭', - '¶¾' => '馮', - '¶¿' => '馭', - '¶À' => '黃', - '¶Á' => 'é»', - '¶Â' => '黑', - '¶Ã' => '亂', - '¶Ä' => 'å‚­', - '¶Å' => '債', - '¶Æ' => '傲', - '¶Ç' => '傳', - '¶È' => '僅', - '¶É' => '傾', - '¶Ê' => '催', - '¶Ë' => 'å‚·', - '¶Ì' => 'å‚»', - '¶Í' => '傯', - '¶Î' => '僇', - '¶Ï' => '剿', - '¶Ð' => '剷', - '¶Ñ' => '剽', - '¶Ò' => 'å‹Ÿ', - '¶Ó' => '勦', - '¶Ô' => '勤', - '¶Õ' => 'å‹¢', - '¶Ö' => 'å‹£', - '¶×' => '匯', - '¶Ø' => 'å—Ÿ', - '¶Ù' => 'å—¨', - '¶Ú' => 'å—“', - '¶Û' => 'å—¦', - '¶Ü' => 'å—Ž', - '¶Ý' => 'å—œ', - '¶Þ' => 'å—‡', - '¶ß' => 'å—‘', - '¶à' => 'å—£', - '¶á' => 'å—¤', - '¶â' => 'å—¯', - '¶ã' => 'å—š', - '¶ä' => 'å—¡', - '¶å' => 'å—…', - '¶æ' => 'å—†', - '¶ç' => 'å—¥', - '¶è' => 'å—‰', - '¶é' => '園', - '¶ê' => '圓', - '¶ë' => 'å¡ž', - '¶ì' => 'å¡‘', - '¶í' => '塘', - '¶î' => 'å¡—', - '¶ï' => 'å¡š', - '¶ð' => 'å¡”', - '¶ñ' => 'å¡«', - '¶ò' => 'å¡Œ', - '¶ó' => 'å¡­', - '¶ô' => 'å¡Š', - '¶õ' => 'å¡¢', - '¶ö' => 'å¡’', - '¶÷' => 'å¡‹', - '¶ø' => '奧', - '¶ù' => 'å«', - '¶ú' => '嫉', - '¶û' => 'å«Œ', - '¶ü' => '媾', - '¶ý' => '媽', - '¶þ' => '媼', - '·@' => '媳', - '·A' => 'å«‚', - '·B' => '媲', - '·C' => '嵩', - '·D' => '嵯', - '·E' => '幌', - '·F' => 'å¹¹', - '·G' => '廉', - '·H' => '廈', - '·I' => 'å¼’', - '·J' => 'å½™', - '·K' => '徬', - '·L' => 'å¾®', - '·M' => 'æ„š', - '·N' => 'æ„', - '·O' => 'æ…ˆ', - '·P' => 'æ„Ÿ', - '·Q' => '想', - '·R' => 'æ„›', - '·S' => '惹', - '·T' => 'æ„', - '·U' => '愈', - '·V' => 'æ…Ž', - '·W' => 'æ…Œ', - '·X' => 'æ…„', - '·Y' => 'æ…', - '·Z' => '愾', - '·[' => 'æ„´', - '·\\' => '愧', - '·]' => 'æ„', - '·^' => '愆', - '·_' => 'æ„·', - '·`' => '戡', - '·a' => '戢', - '·b' => 'æ“', - '·c' => 'æ¾', - '·d' => 'æž', - '·e' => 'æª', - '·f' => 'æ­', - '·g' => 'æ½', - '·h' => 'æ¬', - '·i' => 'æ', - '·j' => 'æœ', - '·k' => 'æ”', - '·l' => 'æ', - '·m' => 'æ¶', - '·n' => 'æ–', - '·o' => 'æ—', - '·p' => 'æ†', - '·q' => '敬', - '·r' => 'æ–Ÿ', - '·s' => 'æ–°', - '·t' => 'æš—', - '·u' => '暉', - '·v' => '暇', - '·w' => '暈', - '·x' => 'æš–', - '·y' => 'æš„', - '·z' => '暘', - '·{' => 'æš', - '·|' => '會', - '·}' => '榔', - '·~' => '業', - '·¡' => '楚', - '·¢' => '楷', - '·£' => '楠', - '·¤' => '楔', - '·¥' => '極', - '·¦' => '椰', - '·§' => '概', - '·¨' => '楊', - '·©' => '楨', - '·ª' => '楫', - '·«' => '楞', - '·¬' => '楓', - '·­' => '楹', - '·®' => '榆', - '·¯' => 'æ¥', - '·°' => '楣', - '·±' => '楛', - '·²' => 'æ­‡', - '·³' => 'æ­²', - '·´' => '毀', - '·µ' => '殿', - '·¶' => '毓', - '··' => '毽', - '·¸' => '溢', - '·¹' => '溯', - '·º' => '滓', - '·»' => '溶', - '·¼' => '滂', - '·½' => 'æº', - '·¾' => 'æº', - '·¿' => '滇', - '·À' => 'æ»…', - '·Á' => '溥', - '·Â' => '溘', - '·Ã' => '溼', - '·Ä' => '溺', - '·Å' => '溫', - '·Æ' => '滑', - '·Ç' => '準', - '·È' => '溜', - '·É' => '滄', - '·Ê' => 'æ»”', - '·Ë' => '溪', - '·Ì' => '溧', - '·Í' => '溴', - '·Î' => 'ç…Ž', - '·Ï' => 'ç…™', - '·Ð' => 'ç…©', - '·Ñ' => 'ç…¤', - '·Ò' => 'ç…‰', - '·Ó' => 'ç…§', - '·Ô' => 'ç…œ', - '·Õ' => 'ç…¬', - '·Ö' => 'ç…¦', - '·×' => 'ç…Œ', - '·Ø' => 'ç…¥', - '·Ù' => 'ç…ž', - '·Ú' => 'ç…†', - '·Û' => 'ç…¨', - '·Ü' => 'ç…–', - '·Ý' => '爺', - '·Þ' => '牒', - '·ß' => '猷', - '·à' => 'ç…', - '·á' => '猿', - '·â' => '猾', - '·ã' => '瑯', - '·ä' => 'ç‘š', - '·å' => 'ç‘•', - '·æ' => 'ç‘Ÿ', - '·ç' => 'ç‘ž', - '·è' => 'ç‘', - '·é' => 'ç¿', - '·ê' => 'ç‘™', - '·ë' => 'ç‘›', - '·ì' => 'ç‘œ', - '·í' => '當', - '·î' => '畸', - '·ï' => '瘀', - '·ð' => 'ç—°', - '·ñ' => 'ç˜', - '·ò' => 'ç—²', - '·ó' => 'ç—±', - '·ô' => 'ç—º', - '·õ' => 'ç—¿', - '·ö' => 'ç—´', - '·÷' => 'ç—³', - '·ø' => '盞', - '·ù' => '盟', - '·ú' => 'ç›', - '·û' => 'ç«', - '·ü' => 'ç¦', - '·ý' => 'çž', - '·þ' => 'ç£', - '¸@' => 'ç¹', - '¸A' => 'çª', - '¸B' => 'ç¬', - '¸C' => 'çœ', - '¸D' => 'ç¥', - '¸E' => 'ç¨', - '¸F' => 'ç¢', - '¸G' => '矮', - '¸H' => '碎', - '¸I' => '碰', - '¸J' => '碗', - '¸K' => '碘', - '¸L' => '碌', - '¸M' => '碉', - '¸N' => '硼', - '¸O' => '碑', - '¸P' => '碓', - '¸Q' => 'ç¡¿', - '¸R' => '祺', - '¸S' => '祿', - '¸T' => 'ç¦', - '¸U' => 'è¬', - '¸V' => '禽', - '¸W' => '稜', - '¸X' => '稚', - '¸Y' => '稠', - '¸Z' => '稔', - '¸[' => '稟', - '¸\\' => '稞', - '¸]' => '窟', - '¸^' => '窠', - '¸_' => 'ç­·', - '¸`' => '節', - '¸a' => 'ç­ ', - '¸b' => 'ç­®', - '¸c' => 'ç­§', - '¸d' => 'ç²±', - '¸e' => 'ç²³', - '¸f' => 'ç²µ', - '¸g' => '經', - '¸h' => 'çµ¹', - '¸i' => '綑', - '¸j' => 'ç¶', - '¸k' => 'ç¶', - '¸l' => 'çµ›', - '¸m' => 'ç½®', - '¸n' => '罩', - '¸o' => '罪', - '¸p' => 'ç½²', - '¸q' => '義', - '¸r' => '羨', - '¸s' => '群', - '¸t' => 'è–', - '¸u' => 'è˜', - '¸v' => '肆', - '¸w' => 'è‚„', - '¸x' => 'è…±', - '¸y' => 'è…°', - '¸z' => 'è…¸', - '¸{' => 'è…¥', - '¸|' => 'è…®', - '¸}' => 'è…³', - '¸~' => 'è…«', - '¸¡' => 'è…¹', - '¸¢' => 'è…º', - '¸£' => 'è…¦', - '¸¤' => '舅', - '¸¥' => '艇', - '¸¦' => 'è’‚', - '¸§' => 'è‘·', - '¸¨' => 'è½', - '¸©' => 'è±', - '¸ª' => '葵', - '¸«' => '葦', - '¸¬' => 'è‘«', - '¸­' => '葉', - '¸®' => '葬', - '¸¯' => 'è‘›', - '¸°' => 'è¼', - '¸±' => 'èµ', - '¸²' => 'è‘¡', - '¸³' => 'è‘£', - '¸´' => 'è‘©', - '¸µ' => 'è‘­', - '¸¶' => '葆', - '¸·' => '虞', - '¸¸' => '虜', - '¸¹' => '號', - '¸º' => '蛹', - '¸»' => '蜓', - '¸¼' => '蜈', - '¸½' => '蜇', - '¸¾' => '蜀', - '¸¿' => '蛾', - '¸À' => 'è›»', - '¸Á' => '蜂', - '¸Â' => '蜃', - '¸Ã' => '蜆', - '¸Ä' => '蜊', - '¸Å' => 'è¡™', - '¸Æ' => '裟', - '¸Ç' => '裔', - '¸È' => '裙', - '¸É' => '補', - '¸Ê' => '裘', - '¸Ë' => 'è£', - '¸Ì' => '裡', - '¸Í' => '裊', - '¸Î' => '裕', - '¸Ï' => '裒', - '¸Ð' => '覜', - '¸Ñ' => '解', - '¸Ò' => 'è©«', - '¸Ó' => '該', - '¸Ô' => '詳', - '¸Õ' => '試', - '¸Ö' => 'è©©', - '¸×' => 'è©°', - '¸Ø' => '誇', - '¸Ù' => '詼', - '¸Ú' => 'è©£', - '¸Û' => '誠', - '¸Ü' => '話', - '¸Ý' => '誅', - '¸Þ' => 'è©­', - '¸ß' => 'è©¢', - '¸à' => 'è©®', - '¸á' => '詬', - '¸â' => '詹', - '¸ã' => 'è©»', - '¸ä' => '訾', - '¸å' => '詨', - '¸æ' => 'è±¢', - '¸ç' => '貊', - '¸è' => '貉', - '¸é' => '賊', - '¸ê' => '資', - '¸ë' => '賈', - '¸ì' => '賄', - '¸í' => 'è²²', - '¸î' => '賃', - '¸ï' => '賂', - '¸ð' => 'è³…', - '¸ñ' => 'è·¡', - '¸ò' => 'è·Ÿ', - '¸ó' => 'è·¨', - '¸ô' => 'è·¯', - '¸õ' => 'è·³', - '¸ö' => 'è·º', - '¸÷' => 'è·ª', - '¸ø' => 'è·¤', - '¸ù' => 'è·¦', - '¸ú' => '躲', - '¸û' => '較', - '¸ü' => '載', - '¸ý' => '軾', - '¸þ' => '輊', - '¹@' => '辟', - '¹A' => 'è¾²', - '¹B' => 'é‹', - '¹C' => 'éŠ', - '¹D' => 'é“', - '¹E' => 'é‚', - '¹F' => 'é”', - '¹G' => '逼', - '¹H' => 'é•', - '¹I' => 'é', - '¹J' => 'é‡', - '¹K' => 'é', - '¹L' => 'éŽ', - '¹M' => 'é', - '¹N' => 'é‘', - '¹O' => '逾', - '¹P' => 'é', - '¹Q' => 'é„’', - '¹R' => 'é„—', - '¹S' => 'é…¬', - '¹T' => 'é…ª', - '¹U' => 'é…©', - '¹V' => '釉', - '¹W' => '鈷', - '¹X' => '鉗', - '¹Y' => '鈸', - '¹Z' => '鈽', - '¹[' => '鉀', - '¹\\' => '鈾', - '¹]' => '鉛', - '¹^' => '鉋', - '¹_' => '鉤', - '¹`' => '鉑', - '¹a' => '鈴', - '¹b' => '鉉', - '¹c' => 'é‰', - '¹d' => '鉅', - '¹e' => '鈹', - '¹f' => '鈿', - '¹g' => '鉚', - '¹h' => 'é–˜', - '¹i' => '隘', - '¹j' => 'éš”', - '¹k' => 'éš•', - '¹l' => 'é›', - '¹m' => '雋', - '¹n' => '雉', - '¹o' => '雊', - '¹p' => 'é›·', - '¹q' => 'é›»', - '¹r' => '雹', - '¹s' => '零', - '¹t' => 'é–', - '¹u' => 'é´', - '¹v' => 'é¶', - '¹w' => 'é ', - '¹x' => 'é ‘', - '¹y' => 'é “', - '¹z' => 'é Š', - '¹{' => 'é ’', - '¹|' => 'é Œ', - '¹}' => '飼', - '¹~' => '飴', - '¹¡' => '飽', - '¹¢' => '飾', - '¹£' => '馳', - '¹¤' => '馱', - '¹¥' => '馴', - '¹¦' => 'é«¡', - '¹§' => '鳩', - '¹¨' => '麂', - '¹©' => '鼎', - '¹ª' => '鼓', - '¹«' => 'é¼ ', - '¹¬' => '僧', - '¹­' => '僮', - '¹®' => '僥', - '¹¯' => '僖', - '¹°' => '僭', - '¹±' => '僚', - '¹²' => '僕', - '¹³' => 'åƒ', - '¹´' => '僑', - '¹µ' => '僱', - '¹¶' => '僎', - '¹·' => '僩', - '¹¸' => 'å…¢', - '¹¹' => '凳', - '¹º' => '劃', - '¹»' => '劂', - '¹¼' => '匱', - '¹½' => '厭', - '¹¾' => 'å—¾', - '¹¿' => '嘀', - '¹À' => '嘛', - '¹Á' => '嘗', - '¹Â' => 'å—½', - '¹Ã' => '嘔', - '¹Ä' => '嘆', - '¹Å' => '嘉', - '¹Æ' => 'å˜', - '¹Ç' => '嘎', - '¹È' => 'å—·', - '¹É' => '嘖', - '¹Ê' => '嘟', - '¹Ë' => '嘈', - '¹Ì' => 'å˜', - '¹Í' => 'å—¶', - '¹Î' => '團', - '¹Ï' => '圖', - '¹Ð' => '塵', - '¹Ñ' => '塾', - '¹Ò' => '境', - '¹Ó' => '墓', - '¹Ô' => '墊', - '¹Õ' => '塹', - '¹Ö' => '墅', - '¹×' => '塽', - '¹Ø' => '壽', - '¹Ù' => '夥', - '¹Ú' => '夢', - '¹Û' => '夤', - '¹Ü' => '奪', - '¹Ý' => '奩', - '¹Þ' => 'å«¡', - '¹ß' => '嫦', - '¹à' => 'å«©', - '¹á' => 'å«—', - '¹â' => 'å«–', - '¹ã' => '嫘', - '¹ä' => 'å«£', - '¹å' => 'å­µ', - '¹æ' => '寞', - '¹ç' => '寧', - '¹è' => '寡', - '¹é' => '寥', - '¹ê' => '實', - '¹ë' => '寨', - '¹ì' => '寢', - '¹í' => '寤', - '¹î' => '察', - '¹ï' => 'å°', - '¹ð' => 'å±¢', - '¹ñ' => '嶄', - '¹ò' => '嶇', - '¹ó' => 'å¹›', - '¹ô' => 'å¹£', - '¹õ' => '幕', - '¹ö' => 'å¹—', - '¹÷' => 'å¹”', - '¹ø' => '廓', - '¹ù' => 'å»–', - '¹ú' => '弊', - '¹û' => '彆', - '¹ü' => 'å½°', - '¹ý' => 'å¾¹', - '¹þ' => 'æ…‡', - 'º@' => 'æ„¿', - 'ºA' => 'æ…‹', - 'ºB' => 'æ…·', - 'ºC' => 'æ…¢', - 'ºD' => 'æ…£', - 'ºE' => 'æ…Ÿ', - 'ºF' => 'æ…š', - 'ºG' => 'æ…˜', - 'ºH' => 'æ…µ', - 'ºI' => '截', - 'ºJ' => 'æ’‡', - 'ºK' => '摘', - 'ºL' => 'æ‘”', - 'ºM' => 'æ’¤', - 'ºN' => '摸', - 'ºO' => 'æ‘Ÿ', - 'ºP' => '摺', - 'ºQ' => 'æ‘‘', - 'ºR' => '摧', - 'ºS' => 'æ´', - 'ºT' => 'æ‘­', - 'ºU' => 'æ‘»', - 'ºV' => '敲', - 'ºW' => 'æ–¡', - 'ºX' => 'æ——', - 'ºY' => 'æ—–', - 'ºZ' => '暢', - 'º[' => '暨', - 'º\\' => 'æš', - 'º]' => '榜', - 'º^' => '榨', - 'º_' => '榕', - 'º`' => 'æ§', - 'ºa' => '榮', - 'ºb' => '槓', - 'ºc' => '構', - 'ºd' => '榛', - 'ºe' => '榷', - 'ºf' => '榻', - 'ºg' => '榫', - 'ºh' => '榴', - 'ºi' => 'æ§', - 'ºj' => 'æ§', - 'ºk' => '榭', - 'ºl' => '槌', - 'ºm' => '榦', - 'ºn' => '槃', - 'ºo' => '榣', - 'ºp' => 'æ­‰', - 'ºq' => 'æ­Œ', - 'ºr' => 'æ°³', - 'ºs' => 'æ¼³', - 'ºt' => 'æ¼”', - 'ºu' => '滾', - 'ºv' => '漓', - 'ºw' => 'æ»´', - 'ºx' => '漩', - 'ºy' => 'æ¼¾', - 'ºz' => 'æ¼ ', - 'º{' => '漬', - 'º|' => 'æ¼', - 'º}' => '漂', - 'º~' => 'æ¼¢', - 'º¡' => '滿', - 'º¢' => '滯', - 'º£' => '漆', - 'º¤' => 'æ¼±', - 'º¥' => '漸', - 'º¦' => 'æ¼²', - 'º§' => 'æ¼£', - 'º¨' => '漕', - 'º©' => '漫', - 'ºª' => '漯', - 'º«' => '澈', - 'º¬' => '漪', - 'º­' => '滬', - 'º®' => 'æ¼', - 'º¯' => '滲', - 'º°' => '滌', - 'º±' => 'æ»·', - 'º²' => '熔', - 'º³' => '熙', - 'º´' => 'ç…½', - 'ºµ' => '熊', - 'º¶' => '熄', - 'º·' => '熒', - 'º¸' => '爾', - 'º¹' => '犒', - 'ºº' => '犖', - 'º»' => 'ç„', - 'º¼' => 'ç', - 'º½' => '瑤', - 'º¾' => 'ç‘£', - 'º¿' => '瑪', - 'ºÀ' => 'ç‘°', - 'ºÁ' => 'ç‘­', - 'ºÂ' => '甄', - 'ºÃ' => 'ç–‘', - 'ºÄ' => '瘧', - 'ºÅ' => 'ç˜', - 'ºÆ' => '瘋', - 'ºÇ' => '瘉', - 'ºÈ' => '瘓', - 'ºÉ' => '盡', - 'ºÊ' => '監', - 'ºË' => 'çž„', - 'ºÌ' => 'ç½', - 'ºÍ' => 'ç¿', - 'ºÎ' => 'ç¡', - 'ºÏ' => 'ç£', - 'ºÐ' => '碟', - 'ºÑ' => '碧', - 'ºÒ' => '碳', - 'ºÓ' => '碩', - 'ºÔ' => '碣', - 'ºÕ' => '禎', - 'ºÖ' => 'ç¦', - 'º×' => 'ç¦', - 'ºØ' => '種', - 'ºÙ' => '稱', - 'ºÚ' => '窪', - 'ºÛ' => '窩', - 'ºÜ' => 'ç«­', - 'ºÝ' => '端', - 'ºÞ' => '管', - 'ºß' => '箕', - 'ºà' => '箋', - 'ºá' => 'ç­µ', - 'ºâ' => 'ç®—', - 'ºã' => 'ç®', - 'ºä' => 'ç®”', - 'ºå' => 'ç®', - 'ºæ' => '箸', - 'ºç' => '箇', - 'ºè' => '箄', - 'ºé' => 'ç²¹', - 'ºê' => 'ç²½', - 'ºë' => 'ç²¾', - 'ºì' => '綻', - 'ºí' => '綰', - 'ºî' => '綜', - 'ºï' => '綽', - 'ºð' => '綾', - 'ºñ' => '綠', - 'ºò' => 'ç·Š', - 'ºó' => '綴', - 'ºô' => '網', - 'ºõ' => '綱', - 'ºö' => '綺', - 'º÷' => '綢', - 'ºø' => '綿', - 'ºù' => '綵', - 'ºú' => '綸', - 'ºû' => '維', - 'ºü' => 'ç·’', - 'ºý' => 'ç·‡', - 'ºþ' => '綬', - '»@' => 'ç½°', - '»A' => 'ç¿ ', - '»B' => 'ç¿¡', - '»C' => 'ç¿Ÿ', - '»D' => 'èž', - '»E' => 'èš', - '»F' => '肇', - '»G' => 'è…', - '»H' => '膀', - '»I' => 'è†', - '»J' => '膈', - '»K' => '膊', - '»L' => 'è…¿', - '»M' => '膂', - '»N' => '臧', - '»O' => '臺', - '»P' => '與', - '»Q' => '舔', - '»R' => '舞', - '»S' => '艋', - '»T' => '蓉', - '»U' => 'è’¿', - '»V' => '蓆', - '»W' => 'è“„', - '»X' => 'è’™', - '»Y' => 'è’ž', - '»Z' => 'è’²', - '»[' => 'è’œ', - '»\\' => 'è“‹', - '»]' => 'è’¸', - '»^' => 'è“€', - '»_' => 'è““', - '»`' => 'è’', - '»a' => 'è’¼', - '»b' => 'è“‘', - '»c' => 'è“Š', - '»d' => '蜿', - '»e' => '蜜', - '»f' => '蜻', - '»g' => '蜢', - '»h' => '蜥', - '»i' => '蜴', - '»j' => '蜘', - '»k' => 'è•', - '»l' => '蜷', - '»m' => '蜩', - '»n' => '裳', - '»o' => '褂', - '»p' => '裴', - '»q' => '裹', - '»r' => '裸', - '»s' => '製', - '»t' => '裨', - '»u' => '褚', - '»v' => '裯', - '»w' => '誦', - '»x' => '誌', - '»y' => '語', - '»z' => '誣', - '»{' => 'èª', - '»|' => '誡', - '»}' => '誓', - '»~' => '誤', - '»¡' => '說', - '»¢' => '誥', - '»£' => '誨', - '»¤' => '誘', - '»¥' => '誑', - '»¦' => '誚', - '»§' => '誧', - '»¨' => '豪', - '»©' => 'è²', - '»ª' => '貌', - '»«' => '賓', - '»¬' => '賑', - '»­' => 'è³’', - '»®' => '赫', - '»¯' => '趙', - '»°' => '趕', - '»±' => 'è·¼', - '»²' => 'è¼”', - '»³' => 'è¼’', - '»´' => '輕', - '»µ' => '輓', - '»¶' => 'è¾£', - '»·' => 'é ', - '»¸' => 'é˜', - '»¹' => 'éœ', - '»º' => 'é£', - '»»' => 'é™', - '»¼' => 'éž', - '»½' => 'é¢', - '»¾' => 'é', - '»¿' => 'é›', - '»À' => 'é„™', - '»Á' => '鄘', - '»Â' => 'é„ž', - '»Ã' => 'é…µ', - '»Ä' => 'é…¸', - '»Å' => 'é…·', - '»Æ' => 'é…´', - '»Ç' => '鉸', - '»È' => '銀', - '»É' => '銅', - '»Ê' => '銘', - '»Ë' => '銖', - '»Ì' => '鉻', - '»Í' => '銓', - '»Î' => '銜', - '»Ï' => '銨', - '»Ð' => '鉼', - '»Ñ' => '銑', - '»Ò' => 'é–¡', - '»Ó' => 'é–¨', - '»Ô' => 'é–©', - '»Õ' => 'é–£', - '»Ö' => 'é–¥', - '»×' => 'é–¤', - '»Ø' => 'éš™', - '»Ù' => 'éšœ', - '»Ú' => 'éš›', - '»Û' => '雌', - '»Ü' => 'é›’', - '»Ý' => '需', - '»Þ' => 'é¼', - '»ß' => 'éž…', - '»à' => '韶', - '»á' => 'é —', - '»â' => 'é ˜', - '»ã' => '颯', - '»ä' => '颱', - '»å' => '餃', - '»æ' => '餅', - '»ç' => '餌', - '»è' => '餉', - '»é' => 'é§', - '»ê' => '骯', - '»ë' => '骰', - '»ì' => '髦', - '»í' => 'é­', - '»î' => 'é­‚', - '»ï' => 'é³´', - '»ð' => '鳶', - '»ñ' => 'é³³', - '»ò' => '麼', - '»ó' => 'é¼»', - '»ô' => '齊', - '»õ' => 'å„„', - '»ö' => 'å„€', - '»÷' => '僻', - '»ø' => '僵', - '»ù' => '價', - '»ú' => 'å„‚', - '»û' => '儈', - '»ü' => '儉', - '»ý' => 'å„…', - '»þ' => '凜', - '¼@' => '劇', - '¼A' => '劈', - '¼B' => '劉', - '¼C' => 'åŠ', - '¼D' => '劊', - '¼E' => 'å‹°', - '¼F' => '厲', - '¼G' => '嘮', - '¼H' => '嘻', - '¼I' => '嘹', - '¼J' => '嘲', - '¼K' => '嘿', - '¼L' => '嘴', - '¼M' => '嘩', - '¼N' => '噓', - '¼O' => '噎', - '¼P' => 'å™—', - '¼Q' => 'å™´', - '¼R' => '嘶', - '¼S' => '嘯', - '¼T' => '嘰', - '¼U' => '墀', - '¼V' => '墟', - '¼W' => '增', - '¼X' => '墳', - '¼Y' => '墜', - '¼Z' => '墮', - '¼[' => '墩', - '¼\\' => '墦', - '¼]' => '奭', - '¼^' => '嬉', - '¼_' => 'å«»', - '¼`' => '嬋', - '¼a' => '嫵', - '¼b' => '嬌', - '¼c' => '嬈', - '¼d' => '寮', - '¼e' => '寬', - '¼f' => '審', - '¼g' => '寫', - '¼h' => '層', - '¼i' => 'å±¥', - '¼j' => 'å¶', - '¼k' => '嶔', - '¼l' => 'å¹¢', - '¼m' => '幟', - '¼n' => '幡', - '¼o' => '廢', - '¼p' => '廚', - '¼q' => '廟', - '¼r' => 'å»', - '¼s' => '廣', - '¼t' => 'å» ', - '¼u' => '彈', - '¼v' => 'å½±', - '¼w' => 'å¾·', - '¼x' => 'å¾µ', - '¼y' => 'æ…¶', - '¼z' => 'æ…§', - '¼{' => 'æ…®', - '¼|' => 'æ…', - '¼}' => 'æ…•', - '¼~' => '憂', - '¼¡' => 'æ…¼', - '¼¢' => 'æ…°', - '¼£' => 'æ…«', - '¼¤' => 'æ…¾', - '¼¥' => '憧', - '¼¦' => 'æ†', - '¼§' => '憫', - '¼¨' => '憎', - '¼©' => '憬', - '¼ª' => '憚', - '¼«' => '憤', - '¼¬' => '憔', - '¼­' => '憮', - '¼®' => '戮', - '¼¯' => 'æ‘©', - '¼°' => '摯', - '¼±' => '摹', - '¼²' => 'æ’ž', - '¼³' => 'æ’²', - '¼´' => 'æ’ˆ', - '¼µ' => 'æ’', - '¼¶' => 'æ’°', - '¼·' => 'æ’¥', - '¼¸' => 'æ’“', - '¼¹' => 'æ’•', - '¼º' => 'æ’©', - '¼»' => 'æ’’', - '¼¼' => 'æ’®', - '¼½' => 'æ’­', - '¼¾' => 'æ’«', - '¼¿' => 'æ’š', - '¼À' => 'æ’¬', - '¼Á' => 'æ’™', - '¼Â' => 'æ’¢', - '¼Ã' => 'æ’³', - '¼Ä' => '敵', - '¼Å' => 'æ•·', - '¼Æ' => '數', - '¼Ç' => 'æš®', - '¼È' => 'æš«', - '¼É' => 'æš´', - '¼Ê' => 'æš±', - '¼Ë' => '樣', - '¼Ì' => '樟', - '¼Í' => '槨', - '¼Î' => 'æ¨', - '¼Ï' => '樞', - '¼Ð' => '標', - '¼Ñ' => '槽', - '¼Ò' => '模', - '¼Ó' => '樓', - '¼Ô' => '樊', - '¼Õ' => '槳', - '¼Ö' => '樂', - '¼×' => '樅', - '¼Ø' => '槭', - '¼Ù' => '樑', - '¼Ú' => 'æ­', - '¼Û' => 'æ­Ž', - '¼Ü' => '殤', - '¼Ý' => '毅', - '¼Þ' => '毆', - '¼ß' => '漿', - '¼à' => 'æ½¼', - '¼á' => '澄', - '¼â' => '潑', - '¼ã' => '潦', - '¼ä' => 'æ½”', - '¼å' => '澆', - '¼æ' => 'æ½­', - '¼ç' => 'æ½›', - '¼è' => '潸', - '¼é' => 'æ½®', - '¼ê' => '澎', - '¼ë' => '潺', - '¼ì' => 'æ½°', - '¼í' => '潤', - '¼î' => 'æ¾—', - '¼ï' => '潘', - '¼ð' => '滕', - '¼ñ' => '潯', - '¼ò' => 'æ½ ', - '¼ó' => '潟', - '¼ô' => '熟', - '¼õ' => '熬', - '¼ö' => '熱', - '¼÷' => '熨', - '¼ø' => '牖', - '¼ù' => '犛', - '¼ú' => 'çŽ', - '¼û' => 'ç—', - '¼ü' => 'ç‘©', - '¼ý' => 'ç’‹', - '¼þ' => 'ç’ƒ', - '½@' => '瑾', - '½A' => 'ç’€', - '½B' => 'ç•¿', - '½C' => '瘠', - '½D' => '瘩', - '½E' => '瘟', - '½F' => '瘤', - '½G' => '瘦', - '½H' => '瘡', - '½I' => '瘢', - '½J' => 'çšš', - '½K' => '皺', - '½L' => '盤', - '½M' => '瞎', - '½N' => '瞇', - '½O' => '瞌', - '½P' => 'çž‘', - '½Q' => 'çž‹', - '½R' => '磋', - '½S' => '磅', - '½T' => '確', - '½U' => '磊', - '½V' => '碾', - '½W' => '磕', - '½X' => '碼', - '½Y' => 'ç£', - '½Z' => '稿', - '½[' => '稼', - '½\\' => 'ç©€', - '½]' => '稽', - '½^' => '稷', - '½_' => '稻', - '½`' => '窯', - '½a' => '窮', - '½b' => 'ç®­', - '½c' => 'ç®±', - '½d' => '範', - '½e' => 'ç®´', - '½f' => '篆', - '½g' => '篇', - '½h' => 'ç¯', - '½i' => 'ç® ', - '½j' => '篌', - '½k' => '糊', - '½l' => 'ç· ', - '½m' => 'ç·´', - '½n' => 'ç·¯', - '½o' => 'ç·»', - '½p' => 'ç·˜', - '½q' => 'ç·¬', - '½r' => 'ç·', - '½s' => 'ç·¨', - '½t' => 'ç·£', - '½u' => 'ç·š', - '½v' => 'ç·ž', - '½w' => 'ç·©', - '½x' => '綞', - '½y' => 'ç·™', - '½z' => 'ç·²', - '½{' => 'ç·¹', - '½|' => 'ç½µ', - '½}' => 'ç½·', - '½~' => '羯', - '½¡' => 'ç¿©', - '½¢' => '耦', - '½£' => '膛', - '½¤' => '膜', - '½¥' => 'è†', - '½¦' => '膠', - '½§' => '膚', - '½¨' => '膘', - '½©' => 'è”—', - '½ª' => '蔽', - '½«' => '蔚', - '½¬' => 'è“®', - '½­' => '蔬', - '½®' => 'è”­', - '½¯' => '蔓', - '½°' => '蔑', - '½±' => '蔣', - '½²' => '蔡', - '½³' => 'è””', - '½´' => '蓬', - '½µ' => '蔥', - '½¶' => 'è“¿', - '½·' => '蔆', - '½¸' => 'èž‚', - '½¹' => 'è´', - '½º' => 'è¶', - '½»' => 'è ', - '½¼' => 'è¦', - '½½' => 'è¸', - '½¾' => 'è¨', - '½¿' => 'è™', - '½À' => 'è—', - '½Á' => 'èŒ', - '½Â' => 'è“', - '½Ã' => 'è¡›', - '½Ä' => 'è¡', - '½Å' => 'è¤', - '½Æ' => '複', - '½Ç' => '褒', - '½È' => '褓', - '½É' => '褕', - '½Ê' => '褊', - '½Ë' => '誼', - '½Ì' => 'è«’', - '½Í' => '談', - '½Î' => 'è«„', - '½Ï' => '誕', - '½Ð' => 'è«‹', - '½Ñ' => '諸', - '½Ò' => '課', - '½Ó' => '諉', - '½Ô' => 'è«‚', - '½Õ' => '調', - '½Ö' => '誰', - '½×' => 'è«–', - '½Ø' => 'è«', - '½Ù' => '誶', - '½Ú' => '誹', - '½Û' => 'è«›', - '½Ü' => '豌', - '½Ý' => '豎', - '½Þ' => '豬', - '½ß' => 'è³ ', - '½à' => '賞', - '½á' => '賦', - '½â' => '賤', - '½ã' => '賬', - '½ä' => 'è³­', - '½å' => 'è³¢', - '½æ' => 'è³£', - '½ç' => '賜', - '½è' => '質', - '½é' => '賡', - '½ê' => 'èµ­', - '½ë' => '趟', - '½ì' => '趣', - '½í' => '踫', - '½î' => 'è¸', - '½ï' => 'è¸', - '½ð' => '踢', - '½ñ' => 'è¸', - '½ò' => '踩', - '½ó' => '踟', - '½ô' => '踡', - '½õ' => '踞', - '½ö' => '躺', - '½÷' => 'è¼', - '½ø' => 'è¼›', - '½ù' => '輟', - '½ú' => '輩', - '½û' => '輦', - '½ü' => '輪', - '½ý' => '輜', - '½þ' => '輞', - '¾@' => 'è¼¥', - '¾A' => 'é©', - '¾B' => 'é®', - '¾C' => 'é¨', - '¾D' => 'é­', - '¾E' => 'é·', - '¾F' => 'é„°', - '¾G' => 'é„­', - '¾H' => '鄧', - '¾I' => '鄱', - '¾J' => '醇', - '¾K' => '醉', - '¾L' => '醋', - '¾M' => '醃', - '¾N' => 'é‹…', - '¾O' => '銻', - '¾P' => '銷', - '¾Q' => '鋪', - '¾R' => '銬', - '¾S' => '鋤', - '¾T' => 'é‹', - '¾U' => '銳', - '¾V' => '銼', - '¾W' => 'é‹’', - '¾X' => '鋇', - '¾Y' => 'é‹°', - '¾Z' => '銲', - '¾[' => 'é–­', - '¾\\' => 'é–±', - '¾]' => '霄', - '¾^' => '霆', - '¾_' => '震', - '¾`' => '霉', - '¾a' => 'é ', - '¾b' => 'éž', - '¾c' => 'éž‹', - '¾d' => 'éž', - '¾e' => 'é ¡', - '¾f' => 'é «', - '¾g' => 'é œ', - '¾h' => '颳', - '¾i' => '養', - '¾j' => '餓', - '¾k' => '餒', - '¾l' => '餘', - '¾m' => 'é§', - '¾n' => 'é§', - '¾o' => '駟', - '¾p' => '駛', - '¾q' => '駑', - '¾r' => '駕', - '¾s' => '駒', - '¾t' => '駙', - '¾u' => '骷', - '¾v' => 'é«®', - '¾w' => '髯', - '¾x' => '鬧', - '¾y' => 'é­…', - '¾z' => 'é­„', - '¾{' => 'é­·', - '¾|' => 'é­¯', - '¾}' => 'é´†', - '¾~' => 'é´‰', - '¾¡' => 'é´ƒ', - '¾¢' => '麩', - '¾£' => '麾', - '¾¤' => '黎', - '¾¥' => '墨', - '¾¦' => 'é½’', - '¾§' => 'å„’', - '¾¨' => '儘', - '¾©' => 'å„”', - '¾ª' => 'å„', - '¾«' => 'å„•', - '¾¬' => '冀', - '¾­' => '冪', - '¾®' => 'å‡', - '¾¯' => '劑', - '¾°' => '劓', - '¾±' => '勳', - '¾²' => 'å™™', - '¾³' => '噫', - '¾´' => '噹', - '¾µ' => '噩', - '¾¶' => '噤', - '¾·' => '噸', - '¾¸' => '噪', - '¾¹' => '器', - '¾º' => '噥', - '¾»' => 'å™±', - '¾¼' => '噯', - '¾½' => '噬', - '¾¾' => '噢', - '¾¿' => '噶', - '¾À' => 'å£', - '¾Á' => '墾', - '¾Â' => '壇', - '¾Ã' => '壅', - '¾Ä' => '奮', - '¾Å' => 'å¬', - '¾Æ' => '嬴', - '¾Ç' => 'å­¸', - '¾È' => '寰', - '¾É' => 'å°Ž', - '¾Ê' => '彊', - '¾Ë' => '憲', - '¾Ì' => '憑', - '¾Í' => '憩', - '¾Î' => '憊', - '¾Ï' => 'æ‡', - '¾Ð' => '憶', - '¾Ñ' => '憾', - '¾Ò' => '懊', - '¾Ó' => '懈', - '¾Ô' => '戰', - '¾Õ' => 'æ“…', - '¾Ö' => 'æ“', - '¾×' => 'æ“‹', - '¾Ø' => 'æ’»', - '¾Ù' => 'æ’¼', - '¾Ú' => 'æ“š', - '¾Û' => 'æ“„', - '¾Ü' => '擇', - '¾Ý' => 'æ“‚', - '¾Þ' => 'æ“', - '¾ß' => 'æ’¿', - '¾à' => 'æ“’', - '¾á' => 'æ“”', - '¾â' => 'æ’¾', - '¾ã' => 'æ•´', - '¾ä' => '曆', - '¾å' => '曉', - '¾æ' => 'æš¹', - '¾ç' => '曄', - '¾è' => '曇', - '¾é' => '暸', - '¾ê' => '樽', - '¾ë' => '樸', - '¾ì' => '樺', - '¾í' => 'æ©™', - '¾î' => 'æ©«', - '¾ï' => '橘', - '¾ð' => '樹', - '¾ñ' => 'æ©„', - '¾ò' => 'æ©¢', - '¾ó' => 'æ©¡', - '¾ô' => 'æ©‹', - '¾õ' => '橇', - '¾ö' => '樵', - '¾÷' => 'æ©Ÿ', - '¾ø' => '橈', - '¾ù' => 'æ­™', - '¾ú' => 'æ­·', - '¾û' => 'æ°…', - '¾ü' => 'æ¿‚', - '¾ý' => 'æ¾±', - '¾þ' => '澡', - '¿@' => '濃', - '¿A' => '澤', - '¿B' => 'æ¿', - '¿C' => '澧', - '¿D' => 'æ¾³', - '¿E' => 'æ¿€', - '¿F' => 'æ¾¹', - '¿G' => '澶', - '¿H' => '澦', - '¿I' => 'æ¾ ', - '¿J' => 'æ¾´', - '¿K' => '熾', - '¿L' => '燉', - '¿M' => 'ç‡', - '¿N' => '燒', - '¿O' => '燈', - '¿P' => '燕', - '¿Q' => '熹', - '¿R' => '燎', - '¿S' => '燙', - '¿T' => '燜', - '¿U' => '燃', - '¿V' => '燄', - '¿W' => 'ç¨', - '¿X' => 'ç’œ', - '¿Y' => 'ç’£', - '¿Z' => 'ç’˜', - '¿[' => 'ç’Ÿ', - '¿\\' => 'ç’ž', - '¿]' => 'ç“¢', - '¿^' => '甌', - '¿_' => 'ç”', - '¿`' => '瘴', - '¿a' => '瘸', - '¿b' => '瘺', - '¿c' => '盧', - '¿d' => '盥', - '¿e' => 'çž ', - '¿f' => 'çžž', - '¿g' => '瞟', - '¿h' => '瞥', - '¿i' => '磨', - '¿j' => '磚', - '¿k' => '磬', - '¿l' => '磧', - '¿m' => '禦', - '¿n' => 'ç©', - '¿o' => 'ç©Ž', - '¿p' => '穆', - '¿q' => 'ç©Œ', - '¿r' => 'ç©‹', - '¿s' => '窺', - '¿t' => '篙', - '¿u' => 'ç°‘', - '¿v' => '築', - '¿w' => '篤', - '¿x' => '篛', - '¿y' => '篡', - '¿z' => '篩', - '¿{' => '篦', - '¿|' => '糕', - '¿}' => 'ç³–', - '¿~' => '縊', - '¿¡' => '縑', - '¿¢' => '縈', - '¿£' => '縛', - '¿¤' => '縣', - '¿¥' => '縞', - '¿¦' => 'ç¸', - '¿§' => '縉', - '¿¨' => 'ç¸', - '¿©' => 'ç½¹', - '¿ª' => 'ç¾²', - '¿«' => 'ç¿°', - '¿¬' => '翱', - '¿­' => 'ç¿®', - '¿®' => '耨', - '¿¯' => '膳', - '¿°' => '膩', - '¿±' => '膨', - '¿²' => '臻', - '¿³' => '興', - '¿´' => '艘', - '¿µ' => '艙', - '¿¶' => 'è•Š', - '¿·' => 'è•™', - '¿¸' => '蕈', - '¿¹' => '蕨', - '¿º' => 'è•©', - '¿»' => '蕃', - '¿¼' => '蕉', - '¿½' => 'è•­', - '¿¾' => '蕪', - '¿¿' => 'è•ž', - '¿À' => '螃', - '¿Á' => '螟', - '¿Â' => 'èžž', - '¿Ã' => '螢', - '¿Ä' => 'èž', - '¿Å' => 'è¡¡', - '¿Æ' => '褪', - '¿Ç' => '褲', - '¿È' => '褥', - '¿É' => '褫', - '¿Ê' => '褡', - '¿Ë' => '親', - '¿Ì' => '覦', - '¿Í' => '諦', - '¿Î' => '諺', - '¿Ï' => 'è««', - '¿Ð' => '諱', - '¿Ñ' => '謀', - '¿Ò' => 'è«œ', - '¿Ó' => '諧', - '¿Ô' => 'è«®', - '¿Õ' => '諾', - '¿Ö' => 'è¬', - '¿×' => '謂', - '¿Ø' => 'è«·', - '¿Ù' => 'è«­', - '¿Ú' => '諳', - '¿Û' => '諶', - '¿Ü' => '諼', - '¿Ý' => '豫', - '¿Þ' => 'è±­', - '¿ß' => '貓', - '¿à' => 'è³´', - '¿á' => '蹄', - '¿â' => '踱', - '¿ã' => '踴', - '¿ä' => '蹂', - '¿å' => '踹', - '¿æ' => '踵', - '¿ç' => 'è¼»', - '¿è' => '輯', - '¿é' => '輸', - '¿ê' => 'è¼³', - '¿ë' => '辨', - '¿ì' => '辦', - '¿í' => 'éµ', - '¿î' => 'é´', - '¿ï' => 'é¸', - '¿ð' => 'é²', - '¿ñ' => 'é¼', - '¿ò' => 'éº', - '¿ó' => 'é„´', - '¿ô' => '醒', - '¿õ' => '錠', - '¿ö' => '錶', - '¿÷' => '鋸', - '¿ø' => '錳', - '¿ù' => '錯', - '¿ú' => '錢', - '¿û' => '鋼', - '¿ü' => '錫', - '¿ý' => '錄', - '¿þ' => '錚', - 'À@' => 'éŒ', - 'ÀA' => '錦', - 'ÀB' => '錡', - 'ÀC' => '錕', - 'ÀD' => '錮', - 'ÀE' => '錙', - 'ÀF' => 'é–»', - 'ÀG' => '隧', - 'ÀH' => '隨', - 'ÀI' => '險', - 'ÀJ' => '雕', - 'ÀK' => '霎', - 'ÀL' => '霑', - 'ÀM' => '霖', - 'ÀN' => 'éœ', - 'ÀO' => '霓', - 'ÀP' => 'éœ', - 'ÀQ' => 'é›', - 'ÀR' => 'éœ', - 'ÀS' => 'é¦', - 'ÀT' => '鞘', - 'ÀU' => 'é °', - 'ÀV' => 'é ¸', - 'ÀW' => 'é »', - 'ÀX' => 'é ·', - 'ÀY' => 'é ­', - 'ÀZ' => 'é ¹', - 'À[' => 'é ¤', - 'À\\' => 'é¤', - 'À]' => '館', - 'À^' => '餞', - 'À_' => '餛', - 'À`' => '餡', - 'Àa' => '餚', - 'Àb' => '駭', - 'Àc' => '駢', - 'Àd' => '駱', - 'Àe' => '骸', - 'Àf' => '骼', - 'Àg' => 'é«»', - 'Àh' => 'é«­', - 'Ài' => '鬨', - 'Àj' => '鮑', - 'Àk' => 'é´•', - 'Àl' => 'é´£', - 'Àm' => 'é´¦', - 'Àn' => 'é´¨', - 'Ào' => 'é´’', - 'Àp' => 'é´›', - 'Àq' => '默', - 'Àr' => 'é»”', - 'Às' => 'é¾', - 'Àt' => '龜', - 'Àu' => '優', - 'Àv' => 'å„Ÿ', - 'Àw' => 'å„¡', - 'Àx' => '儲', - 'Ày' => '勵', - 'Àz' => '嚎', - 'À{' => '嚀', - 'À|' => 'åš', - 'À}' => 'åš…', - 'À~' => '嚇', - 'À¡' => 'åš', - 'À¢' => '壕', - 'À£' => '壓', - 'À¤' => '壑', - 'À¥' => '壎', - 'À¦' => '嬰', - 'À§' => '嬪', - 'À¨' => '嬤', - 'À©' => 'å­º', - 'Àª' => 'å°·', - 'À«' => '屨', - 'À¬' => '嶼', - 'À­' => '嶺', - 'À®' => '嶽', - 'À¯' => '嶸', - 'À°' => '幫', - 'À±' => '彌', - 'À²' => 'å¾½', - 'À³' => '應', - 'À´' => '懂', - 'Àµ' => '懇', - 'À¶' => '懦', - 'À·' => '懋', - 'À¸' => '戲', - 'À¹' => '戴', - 'Àº' => 'æ“Ž', - 'À»' => 'æ“Š', - 'À¼' => '擘', - 'À½' => 'æ“ ', - 'À¾' => 'æ“°', - 'À¿' => '擦', - 'ÀÀ' => '擬', - 'ÀÁ' => '擱', - 'ÀÂ' => 'æ“¢', - 'ÀÃ' => 'æ“­', - 'ÀÄ' => 'æ–‚', - 'ÀÅ' => 'æ–ƒ', - 'ÀÆ' => 'æ›™', - 'ÀÇ' => 'æ›–', - 'ÀÈ' => '檀', - 'ÀÉ' => '檔', - 'ÀÊ' => '檄', - 'ÀË' => '檢', - 'ÀÌ' => '檜', - 'ÀÍ' => 'æ«›', - 'ÀÎ' => '檣', - 'ÀÏ' => '橾', - 'ÀÐ' => '檗', - 'ÀÑ' => 'æª', - 'ÀÒ' => '檠', - 'ÀÓ' => 'æ­œ', - 'ÀÔ' => 'æ®®', - 'ÀÕ' => '毚', - 'ÀÖ' => 'æ°ˆ', - 'À×' => '濘', - 'ÀØ' => '濱', - 'ÀÙ' => 'æ¿Ÿ', - 'ÀÚ' => 'æ¿ ', - 'ÀÛ' => 'æ¿›', - 'ÀÜ' => '濤', - 'ÀÝ' => 'æ¿«', - 'ÀÞ' => '濯', - 'Àß' => 'æ¾€', - 'Àà' => '濬', - 'Àá' => 'æ¿¡', - 'Àâ' => 'æ¿©', - 'Àã' => 'æ¿•', - 'Àä' => 'æ¿®', - 'Àå' => 'æ¿°', - 'Àæ' => '燧', - 'Àç' => '營', - 'Àè' => '燮', - 'Àé' => '燦', - 'Àê' => '燥', - 'Àë' => '燭', - 'Àì' => '燬', - 'Àí' => '燴', - 'Àî' => '燠', - 'Àï' => '爵', - 'Àð' => '牆', - 'Àñ' => 'ç°', - 'Àò' => 'ç²', - 'Àó' => 'ç’©', - 'Àô' => 'ç’°', - 'Àõ' => 'ç’¦', - 'Àö' => 'ç’¨', - 'À÷' => '癆', - 'Àø' => '療', - 'Àù' => '癌', - 'Àú' => '盪', - 'Àû' => 'çž³', - 'Àü' => '瞪', - 'Àý' => 'çž°', - 'Àþ' => '瞬', - 'Á@' => '瞧', - 'ÁA' => 'çž­', - 'ÁB' => '矯', - 'ÁC' => '磷', - 'ÁD' => '磺', - 'ÁE' => '磴', - 'ÁF' => '磯', - 'ÁG' => 'ç¤', - 'ÁH' => '禧', - 'ÁI' => '禪', - 'ÁJ' => 'ç©—', - 'ÁK' => '窿', - 'ÁL' => 'ç°‡', - 'ÁM' => 'ç°', - 'ÁN' => '篾', - 'ÁO' => '篷', - 'ÁP' => 'ç°Œ', - 'ÁQ' => '篠', - 'ÁR' => 'ç³ ', - 'ÁS' => '糜', - 'ÁT' => '糞', - 'ÁU' => 'ç³¢', - 'ÁV' => '糟', - 'ÁW' => 'ç³™', - 'ÁX' => 'ç³', - 'ÁY' => '縮', - 'ÁZ' => '績', - 'Á[' => '繆', - 'Á\\' => '縷', - 'Á]' => '縲', - 'Á^' => '繃', - 'Á_' => '縫', - 'Á`' => '總', - 'Áa' => '縱', - 'Áb' => 'ç¹…', - 'Ác' => 'ç¹', - 'Ád' => '縴', - 'Áe' => '縹', - 'Áf' => '繈', - 'Ág' => '縵', - 'Áh' => '縿', - 'Ái' => '縯', - 'Áj' => '罄', - 'Ák' => '翳', - 'Ál' => '翼', - 'Ám' => 'è±', - 'Án' => 'è²', - 'Áo' => 'è°', - 'Áp' => 'è¯', - 'Áq' => 'è³', - 'Ár' => '臆', - 'Ás' => '臃', - 'Át' => '膺', - 'Áu' => '臂', - 'Áv' => '臀', - 'Áw' => '膿', - 'Áx' => '膽', - 'Áy' => '臉', - 'Áz' => '膾', - 'Á{' => '臨', - 'Á|' => '舉', - 'Á}' => '艱', - 'Á~' => 'è–ª', - 'Á¡' => 'è–„', - 'Á¢' => '蕾', - 'Á£' => 'è–œ', - 'Á¤' => 'è–‘', - 'Á¥' => 'è–”', - 'Á¦' => 'è–¯', - 'Á§' => 'è–›', - 'Á¨' => 'è–‡', - 'Á©' => 'è–¨', - 'Áª' => 'è–Š', - 'Á«' => '虧', - 'Á¬' => '蟀', - 'Á­' => '蟑', - 'Á®' => 'èž³', - 'Á¯' => '蟒', - 'Á°' => '蟆', - 'Á±' => 'èž«', - 'Á²' => 'èž»', - 'Á³' => '螺', - 'Á´' => '蟈', - 'Áµ' => '蟋', - 'Á¶' => '褻', - 'Á·' => '褶', - 'Á¸' => '襄', - 'Á¹' => '褸', - 'Áº' => '褽', - 'Á»' => '覬', - 'Á¼' => '謎', - 'Á½' => '謗', - 'Á¾' => '謙', - 'Á¿' => '講', - 'ÁÀ' => '謊', - 'ÁÁ' => '謠', - 'ÁÂ' => 'è¬', - 'ÁÃ' => '謄', - 'ÁÄ' => 'è¬', - 'ÁÅ' => 'è±', - 'ÁÆ' => 'è°¿', - 'ÁÇ' => 'è±³', - 'ÁÈ' => '賺', - 'ÁÉ' => 'è³½', - 'ÁÊ' => 'è³¼', - 'ÁË' => '賸', - 'ÁÌ' => 'è³»', - 'ÁÍ' => '趨', - 'ÁÎ' => '蹉', - 'ÁÏ' => '蹋', - 'ÁÐ' => '蹈', - 'ÁÑ' => '蹊', - 'ÁÒ' => '轄', - 'ÁÓ' => 'è¼¾', - 'ÁÔ' => '轂', - 'ÁÕ' => 'è½…', - 'ÁÖ' => '輿', - 'Á×' => 'é¿', - 'ÁØ' => 'é½', - 'ÁÙ' => 'é‚„', - 'ÁÚ' => 'é‚', - 'ÁÛ' => 'é‚‚', - 'ÁÜ' => 'é‚€', - 'ÁÝ' => '鄹', - 'ÁÞ' => '醣', - 'Áß' => '醞', - 'Áà' => '醜', - 'Áá' => 'é', - 'Áâ' => '鎂', - 'Áã' => '錨', - 'Áä' => 'éµ', - 'Áå' => 'éŠ', - 'Áæ' => 'é¥', - 'Áç' => 'é‹', - 'Áè' => '錘', - 'Áé' => 'é¾', - 'Áê' => 'é¬', - 'Áë' => 'é›', - 'Áì' => 'é°', - 'Áí' => 'éš', - 'Áî' => 'é”', - 'Áï' => 'é—Š', - 'Áð' => 'é—‹', - 'Áñ' => 'é—Œ', - 'Áò' => 'é—ˆ', - 'Áó' => 'é—†', - 'Áô' => 'éš±', - 'Áõ' => '隸', - 'Áö' => 'é›–', - 'Á÷' => '霜', - 'Áø' => '霞', - 'Áù' => 'éž ', - 'Áú' => '韓', - 'Áû' => '顆', - 'Áü' => '颶', - 'Áý' => '餵', - 'Áþ' => 'é¨', - 'Â@' => '駿', - 'ÂA' => 'é®®', - 'ÂB' => '鮫', - 'ÂC' => '鮪', - 'ÂD' => 'é®­', - 'ÂE' => 'é´»', - 'ÂF' => 'é´¿', - 'ÂG' => '麋', - 'ÂH' => 'é»', - 'ÂI' => '點', - 'ÂJ' => '黜', - 'ÂK' => 'é»', - 'ÂL' => 'é»›', - 'ÂM' => 'é¼¾', - 'ÂN' => '齋', - 'ÂO' => 'å¢', - 'ÂP' => 'åš•', - 'ÂQ' => 'åš®', - 'ÂR' => '壙', - 'ÂS' => '壘', - 'ÂT' => '嬸', - 'ÂU' => 'å½', - 'ÂV' => '懣', - 'ÂW' => '戳', - 'ÂX' => 'æ“´', - 'ÂY' => '擲', - 'ÂZ' => '擾', - 'Â[' => '攆', - 'Â\\' => '擺', - 'Â]' => 'æ“»', - 'Â^' => 'æ“·', - 'Â_' => 'æ–·', - 'Â`' => '曜', - 'Âa' => '朦', - 'Âb' => '檳', - 'Âc' => '檬', - 'Âd' => '櫃', - 'Âe' => '檻', - 'Âf' => '檸', - 'Âg' => 'æ«‚', - 'Âh' => '檮', - 'Âi' => '檯', - 'Âj' => 'æ­Ÿ', - 'Âk' => 'æ­¸', - 'Âl' => '殯', - 'Âm' => '瀉', - 'Ân' => '瀋', - 'Âo' => '濾', - 'Âp' => '瀆', - 'Âq' => '濺', - 'Âr' => '瀑', - 'Âs' => 'ç€', - 'Ât' => '燻', - 'Âu' => '燼', - 'Âv' => '燾', - 'Âw' => '燸', - 'Âx' => 'ç·', - 'Ây' => 'çµ', - 'Âz' => 'ç’§', - 'Â{' => 'ç’¿', - 'Â|' => '甕', - 'Â}' => 'ç™–', - 'Â~' => '癘', - '¡' => 'ç™’', - '¢' => 'çž½', - '£' => 'çž¿', - '¤' => 'çž»', - 'Â¥' => 'çž¼', - '¦' => '礎', - '§' => '禮', - '¨' => 'ç©¡', - '©' => 'ç©¢', - 'ª' => 'ç© ', - '«' => 'ç«„', - '¬' => 'ç«…', - '­' => 'ç°«', - '®' => 'ç°§', - '¯' => 'ç°ª', - '°' => 'ç°ž', - '±' => 'ç°£', - '²' => 'ç°¡', - '³' => '糧', - '´' => 'ç¹”', - 'µ' => '繕', - '¶' => '繞', - '·' => '繚', - '¸' => '繡', - '¹' => 'ç¹’', - 'º' => 'ç¹™', - '»' => '罈', - '¼' => '翹', - '½' => 'ç¿»', - '¾' => 'è·', - '¿' => 'è¶', - 'ÂÀ' => 'è‡', - 'ÂÁ' => 'è‡', - 'ÂÂ' => '舊', - 'ÂÃ' => 'è—', - 'ÂÄ' => 'è–©', - 'ÂÅ' => 'è—', - 'ÂÆ' => 'è—', - 'ÂÇ' => 'è—‰', - 'ÂÈ' => 'è–°', - 'ÂÉ' => 'è–º', - 'ÂÊ' => 'è–¹', - 'ÂË' => 'è–¦', - 'ÂÌ' => '蟯', - 'ÂÍ' => '蟬', - 'ÂÎ' => '蟲', - 'ÂÏ' => '蟠', - 'ÂÐ' => '覆', - 'ÂÑ' => '覲', - 'ÂÒ' => '觴', - 'ÂÓ' => '謨', - 'ÂÔ' => '謹', - 'ÂÕ' => '謬', - 'ÂÖ' => '謫', - 'Â×' => 'è±', - 'ÂØ' => 'è´…', - 'ÂÙ' => 'è¹™', - 'ÂÚ' => 'è¹£', - 'ÂÛ' => '蹦', - 'ÂÜ' => '蹤', - 'ÂÝ' => '蹟', - 'ÂÞ' => '蹕', - 'Âß' => '軀', - 'Âà' => '轉', - 'Âá' => 'è½', - 'Ââ' => '邇', - 'Âã' => '邃', - 'Âä' => '邈', - 'Âå' => '醫', - 'Âæ' => '醬', - 'Âç' => 'é‡', - 'Âè' => '鎔', - 'Âé' => '鎊', - 'Âê' => '鎖', - 'Âë' => '鎢', - 'Âì' => '鎳', - 'Âí' => '鎮', - 'Âî' => '鎬', - 'Âï' => '鎰', - 'Âð' => '鎘', - 'Âñ' => '鎚', - 'Âò' => '鎗', - 'Âó' => 'é—”', - 'Âô' => 'é—–', - 'Âõ' => 'é—', - 'Âö' => 'é—•', - 'Â÷' => '離', - 'Âø' => '雜', - 'Âù' => 'é›™', - 'Âú' => 'é››', - 'Âû' => '雞', - 'Âü' => '霤', - 'Âý' => '鞣', - 'Âþ' => '鞦', - 'Ã@' => 'éž­', - 'ÃA' => '韹', - 'ÃB' => 'é¡', - 'ÃC' => 'é¡', - 'ÃD' => 'é¡Œ', - 'ÃE' => 'é¡Ž', - 'ÃF' => 'é¡“', - 'ÃG' => '颺', - 'ÃH' => '餾', - 'ÃI' => '餿', - 'ÃJ' => '餽', - 'ÃK' => '餮', - 'ÃL' => '馥', - 'ÃM' => '騎', - 'ÃN' => 'é«', - 'ÃO' => '鬃', - 'ÃP' => '鬆', - 'ÃQ' => 'é­', - 'ÃR' => 'é­Ž', - 'ÃS' => 'é­', - 'ÃT' => '鯊', - 'ÃU' => '鯉', - 'ÃV' => '鯽', - 'ÃW' => '鯈', - 'ÃX' => '鯀', - 'ÃY' => '鵑', - 'ÃZ' => 'éµ', - 'Ã[' => 'éµ ', - 'Ã\\' => 'é» ', - 'Ã]' => '鼕', - 'Ã^' => '鼬', - 'Ã_' => '儳', - 'Ã`' => '嚥', - 'Ãa' => '壞', - 'Ãb' => '壟', - 'Ãc' => '壢', - 'Ãd' => '寵', - 'Ãe' => 'é¾', - 'Ãf' => '廬', - 'Ãg' => '懲', - 'Ãh' => '懷', - 'Ãi' => '懶', - 'Ãj' => '懵', - 'Ãk' => '攀', - 'Ãl' => 'æ”', - 'Ãm' => 'æ› ', - 'Ãn' => 'æ›', - 'Ão' => 'æ«¥', - 'Ãp' => 'æ«', - 'Ãq' => 'æ«š', - 'Ãr' => 'æ«“', - 'Ãs' => '瀛', - 'Ãt' => '瀟', - 'Ãu' => '瀨', - 'Ãv' => '瀚', - 'Ãw' => 'ç€', - 'Ãx' => '瀕', - 'Ãy' => '瀘', - 'Ãz' => '爆', - 'Ã{' => 'çˆ', - 'Ã|' => '牘', - 'Ã}' => '犢', - 'Ã~' => 'ç¸', - 'á' => 'çº', - 'â' => 'ç’½', - 'ã' => 'ç“Š', - 'ä' => 'ç“£', - 'Ã¥' => 'ç–‡', - 'æ' => 'ç–†', - 'ç' => '癟', - 'è' => '癡', - 'é' => '矇', - 'ê' => '礙', - 'ë' => '禱', - 'ì' => 'ç©«', - 'í' => 'ç©©', - 'î' => 'ç°¾', - 'ï' => 'ç°¿', - 'ð' => 'ç°¸', - 'ñ' => 'ç°½', - 'ò' => 'ç°·', - 'ó' => 'ç±€', - 'ô' => '繫', - 'õ' => 'ç¹­', - 'ö' => 'ç¹¹', - '÷' => '繩', - 'ø' => '繪', - 'ù' => 'ç¾…', - 'ú' => 'ç¹³', - 'û' => '羶', - 'ü' => 'ç¾¹', - 'ý' => '羸', - 'þ' => '臘', - 'ÿ' => 'è—©', - 'ÃÀ' => 'è—', - 'ÃÁ' => 'è—ª', - 'ÃÂ' => 'è—•', - 'ÃÃ' => 'è—¤', - 'ÃÄ' => 'è—¥', - 'ÃÅ' => 'è—·', - 'ÃÆ' => '蟻', - 'ÃÇ' => 'è …', - 'ÃÈ' => 'è ', - 'ÃÉ' => '蟹', - 'ÃÊ' => '蟾', - 'ÃË' => '襠', - 'ÃÌ' => '襟', - 'ÃÍ' => '襖', - 'ÃÎ' => '襞', - 'ÃÏ' => 'è­', - 'ÃÐ' => 'è­œ', - 'ÃÑ' => 'è­˜', - 'ÃÒ' => 'è­‰', - 'ÃÓ' => 'è­š', - 'ÃÔ' => 'è­Ž', - 'ÃÕ' => 'è­', - 'ÃÖ' => 'è­†', - 'Ã×' => 'è­™', - 'ÃØ' => 'è´ˆ', - 'ÃÙ' => 'è´Š', - 'ÃÚ' => 'è¹¼', - 'ÃÛ' => 'è¹²', - 'ÃÜ' => '躇', - 'ÃÝ' => '蹶', - 'ÃÞ' => '蹬', - 'Ãß' => '蹺', - 'Ãà' => 'è¹´', - 'Ãá' => 'è½”', - 'Ãâ' => '轎', - 'Ãã' => 'è¾­', - 'Ãä' => 'é‚Š', - 'Ãå' => 'é‚‹', - 'Ãæ' => '醱', - 'Ãç' => '醮', - 'Ãè' => 'é¡', - 'Ãé' => 'é‘', - 'Ãê' => 'éŸ', - 'Ãë' => 'éƒ', - 'Ãì' => 'éˆ', - 'Ãí' => 'éœ', - 'Ãî' => 'é', - 'Ãï' => 'é–', - 'Ãð' => 'é¢', - 'Ãñ' => 'é', - 'Ãò' => 'é˜', - 'Ãó' => 'é¤', - 'Ãô' => 'é—', - 'Ãõ' => 'é¨', - 'Ãö' => 'é—œ', - 'Ã÷' => 'éš´', - 'Ãø' => '難', - 'Ãù' => '霪', - 'Ãú' => '霧', - 'Ãû' => 'é¡', - 'Ãü' => '韜', - 'Ãý' => '韻', - 'Ãþ' => 'é¡ž', - 'Ä@' => '願', - 'ÄA' => 'é¡›', - 'ÄB' => '颼', - 'ÄC' => '饅', - 'ÄD' => '饉', - 'ÄE' => '騖', - 'ÄF' => '騙', - 'ÄG' => 'é¬', - 'ÄH' => '鯨', - 'ÄI' => '鯧', - 'ÄJ' => '鯖', - 'ÄK' => '鯛', - 'ÄL' => '鶉', - 'ÄM' => '鵡', - 'ÄN' => 'éµ²', - 'ÄO' => '鵪', - 'ÄP' => '鵬', - 'ÄQ' => '麒', - 'ÄR' => '麗', - 'ÄS' => '麓', - 'ÄT' => '麴', - 'ÄU' => '勸', - 'ÄV' => '嚨', - 'ÄW' => 'åš·', - 'ÄX' => '嚶', - 'ÄY' => 'åš´', - 'ÄZ' => 'åš¼', - 'Ä[' => '壤', - 'Ä\\' => 'å­€', - 'Ä]' => 'å­ƒ', - 'Ä^' => 'å­½', - 'Ä_' => '寶', - 'Ä`' => 'å·‰', - 'Äa' => '懸', - 'Äb' => '懺', - 'Äc' => '攘', - 'Äd' => 'æ””', - 'Äe' => 'æ”™', - 'Äf' => '曦', - 'Äg' => '朧', - 'Äh' => '櫬', - 'Äi' => '瀾', - 'Äj' => '瀰', - 'Äk' => '瀲', - 'Äl' => 'çˆ', - 'Äm' => 'ç»', - 'Än' => 'ç“', - 'Äo' => '癢', - 'Äp' => '癥', - 'Äq' => '礦', - 'Är' => '礪', - 'Äs' => '礬', - 'Ät' => '礫', - 'Äu' => '竇', - 'Äv' => '競', - 'Äw' => '籌', - 'Äx' => '籃', - 'Äy' => 'ç±', - 'Äz' => '糯', - 'Ä{' => 'ç³°', - 'Ä|' => 'è¾®', - 'Ä}' => 'ç¹½', - 'Ä~' => 'ç¹¼', - 'Ä¡' => '纂', - 'Ä¢' => '罌', - 'Ä£' => '耀', - 'Ĥ' => '臚', - 'Ä¥' => '艦', - 'Ħ' => 'è—»', - 'ħ' => 'è—¹', - 'Ĩ' => '蘑', - 'Ä©' => 'è—º', - 'Ī' => '蘆', - 'Ä«' => '蘋', - 'Ĭ' => '蘇', - 'Ä­' => '蘊', - 'Ä®' => 'è ”', - 'į' => 'è •', - 'Ä°' => '襤', - 'ı' => '覺', - 'IJ' => '觸', - 'ij' => 'è­°', - 'Ä´' => 'è­¬', - 'ĵ' => 'è­¦', - 'Ķ' => 'è­¯', - 'Ä·' => 'è­Ÿ', - 'ĸ' => 'è­«', - 'Ĺ' => 'è´', - 'ĺ' => 'è´', - 'Ä»' => '躉', - 'ļ' => 'èº', - 'Ľ' => '躅', - 'ľ' => '躂', - 'Ä¿' => '醴', - 'ÄÀ' => '釋', - 'ÄÁ' => 'é˜', - 'ÄÂ' => 'éƒ', - 'ÄÃ' => 'é½', - 'ÄÄ' => 'é—¡', - 'ÄÅ' => '霰', - 'ÄÆ' => '飄', - 'ÄÇ' => '饒', - 'ÄÈ' => '饑', - 'ÄÉ' => '馨', - 'ÄÊ' => '騫', - 'ÄË' => '騰', - 'ÄÌ' => '騷', - 'ÄÍ' => '騵', - 'ÄÎ' => 'é°“', - 'ÄÏ' => 'é°', - 'ÄÐ' => 'é¹¹', - 'ÄÑ' => '麵', - 'ÄÒ' => '黨', - 'ÄÓ' => '鼯', - 'ÄÔ' => '齟', - 'ÄÕ' => 'é½£', - 'ÄÖ' => '齡', - 'Ä×' => 'å„·', - 'ÄØ' => '儸', - 'ÄÙ' => 'å›', - 'ÄÚ' => '囀', - 'ÄÛ' => '囂', - 'ÄÜ' => '夔', - 'ÄÝ' => '屬', - 'ÄÞ' => 'å·', - 'Äß' => '懼', - 'Äà' => '懾', - 'Äá' => 'æ”', - 'Äâ' => '攜', - 'Äã' => 'æ–•', - 'Ää' => '曩', - 'Äå' => 'æ«»', - 'Äæ' => '欄', - 'Äç' => '櫺', - 'Äè' => '殲', - 'Äé' => 'çŒ', - 'Äê' => '爛', - 'Äë' => '犧', - 'Äì' => 'ç“–', - 'Äí' => 'ç“”', - 'Äî' => '癩', - 'Äï' => '矓', - 'Äð' => 'ç±', - 'Äñ' => 'çº', - 'Äò' => '續', - 'Äó' => 'ç¾¼', - 'Äô' => '蘗', - 'Äõ' => '蘭', - 'Äö' => '蘚', - 'Ä÷' => 'è £', - 'Äø' => 'è ¢', - 'Äù' => 'è ¡', - 'Äú' => 'è Ÿ', - 'Äû' => '襪', - 'Äü' => '襬', - 'Äý' => '覽', - 'Äþ' => 'è­´', - 'Å@' => 'è­·', - 'ÅA' => 'è­½', - 'ÅB' => 'è´“', - 'ÅC' => '躊', - 'ÅD' => 'èº', - 'ÅE' => '躋', - 'ÅF' => '轟', - 'ÅG' => '辯', - 'ÅH' => '醺', - 'ÅI' => 'é®', - 'ÅJ' => 'é³', - 'ÅK' => 'éµ', - 'ÅL' => 'éº', - 'ÅM' => 'é¸', - 'ÅN' => 'é²', - 'ÅO' => 'é«', - 'ÅP' => 'é—¢', - 'ÅQ' => '霸', - 'ÅR' => '霹', - 'ÅS' => '露', - 'ÅT' => '響', - 'ÅU' => '顧', - 'ÅV' => 'é¡¥', - 'ÅW' => '饗', - 'ÅX' => 'é©…', - 'ÅY' => '驃', - 'ÅZ' => 'é©€', - 'Å[' => '騾', - 'Å\\' => 'é«', - 'Å]' => 'é­”', - 'Å^' => 'é­‘', - 'Å_' => 'é°­', - 'Å`' => 'é°¥', - 'Åa' => '鶯', - 'Åb' => '鶴', - 'Åc' => 'é·‚', - 'Åd' => '鶸', - 'Åe' => 'éº', - 'Åf' => '黯', - 'Åg' => 'é¼™', - 'Åh' => '齜', - 'Åi' => '齦', - 'Åj' => '齧', - 'Åk' => '儼', - 'Ål' => 'å„»', - 'Åm' => '囈', - 'Ån' => '囊', - 'Åo' => '囉', - 'Åp' => 'å­¿', - 'Åq' => 'å·”', - 'År' => 'å·’', - 'Ås' => '彎', - 'Åt' => '懿', - 'Åu' => '攤', - 'Åv' => '權', - 'Åw' => 'æ­¡', - 'Åx' => 'ç‘', - 'Åy' => 'ç˜', - 'Åz' => '玀', - 'Å{' => '瓤', - 'Å|' => 'ç–Š', - 'Å}' => 'ç™®', - 'Å~' => '癬', - 'Å¡' => '禳', - 'Å¢' => 'ç± ', - 'Å£' => '籟', - 'Ť' => 'è¾', - 'Å¥' => 'è½', - 'Ŧ' => '臟', - 'ŧ' => '襲', - 'Ũ' => '襯', - 'Å©' => '觼', - 'Ū' => '讀', - 'Å«' => 'è´–', - 'Ŭ' => 'è´—', - 'Å­' => '躑', - 'Å®' => '躓', - 'ů' => '轡', - 'Å°' => 'é…ˆ', - 'ű' => 'é‘„', - 'Ų' => 'é‘‘', - 'ų' => 'é‘’', - 'Å´' => '霽', - 'ŵ' => '霾', - 'Ŷ' => '韃', - 'Å·' => 'éŸ', - 'Ÿ' => 'é¡«', - 'Ź' => '饕', - 'ź' => 'é©•', - 'Å»' => 'é©', - 'ż' => 'é«’', - 'Ž' => '鬚', - 'ž' => '鱉', - 'Å¿' => 'é°±', - 'ÅÀ' => 'é°¾', - 'ÅÁ' => 'é°»', - 'ÅÂ' => 'é·“', - 'ÅÃ' => 'é·—', - 'ÅÄ' => 'é¼´', - 'ÅÅ' => '齬', - 'ÅÆ' => '齪', - 'ÅÇ' => 'é¾”', - 'ÅÈ' => '囌', - 'ÅÉ' => 'å·–', - 'ÅÊ' => '戀', - 'ÅË' => '攣', - 'ÅÌ' => '攫', - 'ÅÍ' => '攪', - 'ÅÎ' => '曬', - 'ÅÏ' => 'æ¬', - 'ÅÐ' => 'ç“š', - 'ÅÑ' => 'ç«Š', - 'ÅÒ' => '籤', - 'ÅÓ' => 'ç±£', - 'ÅÔ' => 'ç±¥', - 'ÅÕ' => '纓', - 'ÅÖ' => '纖', - 'Å×' => '纔', - 'ÅØ' => '臢', - 'ÅÙ' => '蘸', - 'ÅÚ' => '蘿', - 'ÅÛ' => 'è ±', - 'ÅÜ' => '變', - 'ÅÝ' => 'é‚', - 'ÅÞ' => 'é‚', - 'Åß' => 'é‘£', - 'Åà' => 'é‘ ', - 'Åá' => '鑤', - 'Åâ' => 'é¨', - 'Åã' => '顯', - 'Åä' => '饜', - 'Åå' => 'é©š', - 'Åæ' => 'é©›', - 'Åç' => 'é©—', - 'Åè' => 'é«“', - 'Åé' => 'é«”', - 'Åê' => 'é«‘', - 'Åë' => 'é±”', - 'Åì' => 'é±—', - 'Åí' => 'é±–', - 'Åî' => 'é·¥', - 'Åï' => '麟', - 'Åð' => 'é»´', - 'Åñ' => '囑', - 'Åò' => '壩', - 'Åó' => '攬', - 'Åô' => 'çž', - 'Åõ' => 'ç™±', - 'Åö' => '癲', - 'Å÷' => '矗', - 'Åø' => 'ç½', - 'Åù' => '羈', - 'Åú' => 'è ¶', - 'Åû' => 'è ¹', - 'Åü' => 'è¡¢', - 'Åý' => '讓', - 'Åþ' => 'è®’', - 'Æ@' => 'è®–', - 'ÆA' => '艷', - 'ÆB' => 'è´›', - 'ÆC' => '釀', - 'ÆD' => '鑪', - 'ÆE' => 'é‚', - 'ÆF' => 'éˆ', - 'ÆG' => 'é„', - 'ÆH' => '韆', - 'ÆI' => 'é¡°', - 'ÆJ' => 'é©Ÿ', - 'ÆK' => '鬢', - 'ÆL' => 'é­˜', - 'ÆM' => '鱟', - 'ÆN' => 'é·¹', - 'ÆO' => 'é·º', - 'ÆP' => 'é¹¼', - 'ÆQ' => 'é¹½', - 'ÆR' => '鼇', - 'ÆS' => 'é½·', - 'ÆT' => 'é½²', - 'ÆU' => '廳', - 'ÆV' => '欖', - 'ÆW' => 'ç£', - 'ÆX' => '籬', - 'ÆY' => 'ç±®', - 'ÆZ' => 'è »', - 'Æ[' => '觀', - 'Æ\\' => '躡', - 'Æ]' => 'é‡', - 'Æ^' => '鑲', - 'Æ_' => 'é‘°', - 'Æ`' => '顱', - 'Æa' => '饞', - 'Æb' => 'é«–', - 'Æc' => '鬣', - 'Æd' => '黌', - 'Æe' => 'ç¤', - 'Æf' => '矚', - 'Æg' => '讚', - 'Æh' => 'é‘·', - 'Æi' => '韉', - 'Æj' => 'é©¢', - 'Æk' => 'é©¥', - 'Æl' => '纜', - 'Æm' => '讜', - 'Æn' => '躪', - 'Æo' => '釅', - 'Æp' => '鑽', - 'Æq' => '鑾', - 'Ær' => '鑼', - 'Æs' => 'é±·', - 'Æt' => '鱸', - 'Æu' => 'é»·', - 'Æv' => 'è±”', - 'Æw' => 'é‘¿', - 'Æx' => '鸚', - 'Æy' => '爨', - 'Æz' => '驪', - 'Æ{' => '鬱', - 'Æ|' => '鸛', - 'Æ}' => '鸞', - 'Æ~' => 'ç±²', - 'Æ¡' => 'ヾ', - 'Æ¢' => 'ã‚', - 'Æ£' => 'ã‚ž', - 'Ƥ' => '々', - 'Æ¥' => 'ã', - 'Ʀ' => 'ã‚', - 'Ƨ' => 'ãƒ', - 'ƨ' => 'ã„', - 'Æ©' => 'ã…', - 'ƪ' => 'ã†', - 'Æ«' => 'ã‡', - 'Ƭ' => 'ãˆ', - 'Æ­' => 'ã‰', - 'Æ®' => 'ãŠ', - 'Ư' => 'ã‹', - 'Æ°' => 'ãŒ', - 'Ʊ' => 'ã', - 'Ʋ' => 'ãŽ', - 'Ƴ' => 'ã', - 'Æ´' => 'ã', - 'Ƶ' => 'ã‘', - 'ƶ' => 'ã’', - 'Æ·' => 'ã“', - 'Ƹ' => 'ã”', - 'ƹ' => 'ã•', - 'ƺ' => 'ã–', - 'Æ»' => 'ã—', - 'Ƽ' => 'ã˜', - 'ƽ' => 'ã™', - 'ƾ' => 'ãš', - 'Æ¿' => 'ã›', - 'ÆÀ' => 'ãœ', - 'ÆÁ' => 'ã', - 'ÆÂ' => 'ãž', - 'ÆÃ' => 'ãŸ', - 'ÆÄ' => 'ã ', - 'ÆÅ' => 'ã¡', - 'ÆÆ' => 'ã¢', - 'ÆÇ' => 'ã£', - 'ÆÈ' => 'ã¤', - 'ÆÉ' => 'ã¥', - 'ÆÊ' => 'ã¦', - 'ÆË' => 'ã§', - 'ÆÌ' => 'ã¨', - 'ÆÍ' => 'ã©', - 'ÆÎ' => 'ãª', - 'ÆÏ' => 'ã«', - 'ÆÐ' => 'ã¬', - 'ÆÑ' => 'ã­', - 'ÆÒ' => 'ã®', - 'ÆÓ' => 'ã¯', - 'ÆÔ' => 'ã°', - 'ÆÕ' => 'ã±', - 'ÆÖ' => 'ã²', - 'Æ×' => 'ã³', - 'ÆØ' => 'ã´', - 'ÆÙ' => 'ãµ', - 'ÆÚ' => 'ã¶', - 'ÆÛ' => 'ã·', - 'ÆÜ' => 'ã¸', - 'ÆÝ' => 'ã¹', - 'ÆÞ' => 'ãº', - 'Æß' => 'ã»', - 'Æà' => 'ã¼', - 'Æá' => 'ã½', - 'Æâ' => 'ã¾', - 'Æã' => 'ã¿', - 'Æä' => 'ã‚€', - 'Æå' => 'ã‚', - 'Ææ' => 'ã‚‚', - 'Æç' => 'ゃ', - 'Æè' => 'ã‚„', - 'Æé' => 'ã‚…', - 'Æê' => 'ゆ', - 'Æë' => 'ょ', - 'Æì' => 'よ', - 'Æí' => 'ら', - 'Æî' => 'ã‚Š', - 'Æï' => 'ã‚‹', - 'Æð' => 'ã‚Œ', - 'Æñ' => 'ã‚', - 'Æò' => 'ã‚Ž', - 'Æó' => 'ã‚', - 'Æô' => 'ã‚', - 'Æõ' => 'ã‚‘', - 'Æö' => 'ã‚’', - 'Æ÷' => 'ã‚“', - 'Æø' => 'ã‚¡', - 'Æù' => 'ã‚¢', - 'Æú' => 'ã‚£', - 'Æû' => 'イ', - 'Æü' => 'ã‚¥', - 'Æý' => 'ウ', - 'Æþ' => 'ェ', - 'Ç@' => 'エ', - 'ÇA' => 'ã‚©', - 'ÇB' => 'オ', - 'ÇC' => 'ã‚«', - 'ÇD' => 'ガ', - 'ÇE' => 'ã‚­', - 'ÇF' => 'ã‚®', - 'ÇG' => 'ク', - 'ÇH' => 'ã‚°', - 'ÇI' => 'ケ', - 'ÇJ' => 'ゲ', - 'ÇK' => 'コ', - 'ÇL' => 'ã‚´', - 'ÇM' => 'サ', - 'ÇN' => 'ザ', - 'ÇO' => 'ã‚·', - 'ÇP' => 'ジ', - 'ÇQ' => 'ス', - 'ÇR' => 'ズ', - 'ÇS' => 'ã‚»', - 'ÇT' => 'ゼ', - 'ÇU' => 'ソ', - 'ÇV' => 'ゾ', - 'ÇW' => 'ã‚¿', - 'ÇX' => 'ダ', - 'ÇY' => 'ãƒ', - 'ÇZ' => 'ヂ', - 'Ç[' => 'ッ', - 'Ç\\' => 'ツ', - 'Ç]' => 'ヅ', - 'Ç^' => 'テ', - 'Ç_' => 'デ', - 'Ç`' => 'ト', - 'Ça' => 'ド', - 'Çb' => 'ナ', - 'Çc' => 'ニ', - 'Çd' => 'ヌ', - 'Çe' => 'ãƒ', - 'Çf' => 'ノ', - 'Çg' => 'ãƒ', - 'Çh' => 'ãƒ', - 'Çi' => 'パ', - 'Çj' => 'ヒ', - 'Çk' => 'ビ', - 'Çl' => 'ピ', - 'Çm' => 'フ', - 'Çn' => 'ブ', - 'Ço' => 'プ', - 'Çp' => 'ヘ', - 'Çq' => 'ベ', - 'Çr' => 'ペ', - 'Çs' => 'ホ', - 'Çt' => 'ボ', - 'Çu' => 'ãƒ', - 'Çv' => 'マ', - 'Çw' => 'ミ', - 'Çx' => 'ム', - 'Çy' => 'メ', - 'Çz' => 'モ', - 'Ç{' => 'ャ', - 'Ç|' => 'ヤ', - 'Ç}' => 'ュ', - 'Ç~' => 'ユ', - 'Ç¡' => 'ョ', - 'Ç¢' => 'ヨ', - 'Ç£' => 'ラ', - 'Ǥ' => 'リ', - 'Ç¥' => 'ル', - 'Ǧ' => 'レ', - 'ǧ' => 'ロ', - 'Ǩ' => 'ヮ', - 'Ç©' => 'ワ', - 'Ǫ' => 'ヰ', - 'Ç«' => 'ヱ', - 'Ǭ' => 'ヲ', - 'Ç­' => 'ン', - 'Ç®' => 'ヴ', - 'ǯ' => 'ヵ', - 'Ç°' => 'ヶ', - 'DZ' => 'Д', - 'Dz' => 'Е', - 'dz' => 'Ð', - 'Ç´' => 'Ж', - 'ǵ' => 'З', - 'Ƕ' => 'И', - 'Ç·' => 'Й', - 'Ǹ' => 'К', - 'ǹ' => 'Л', - 'Ǻ' => 'Ðœ', - 'Ç»' => 'У', - 'Ǽ' => 'Ф', - 'ǽ' => 'Ð¥', - 'Ǿ' => 'Ц', - 'Ç¿' => 'Ч', - 'ÇÀ' => 'Ш', - 'ÇÁ' => 'Щ', - 'ÇÂ' => 'Ъ', - 'ÇÃ' => 'Ы', - 'ÇÄ' => 'Ь', - 'ÇÅ' => 'Э', - 'ÇÆ' => 'Ю', - 'ÇÇ' => 'Я', - 'ÇÈ' => 'а', - 'ÇÉ' => 'б', - 'ÇÊ' => 'в', - 'ÇË' => 'г', - 'ÇÌ' => 'д', - 'ÇÍ' => 'е', - 'ÇÎ' => 'Ñ‘', - 'ÇÏ' => 'ж', - 'ÇÐ' => 'з', - 'ÇÑ' => 'и', - 'ÇÒ' => 'й', - 'ÇÓ' => 'к', - 'ÇÔ' => 'л', - 'ÇÕ' => 'м', - 'ÇÖ' => 'н', - 'Ç×' => 'о', - 'ÇØ' => 'п', - 'ÇÙ' => 'Ñ€', - 'ÇÚ' => 'Ñ', - 'ÇÛ' => 'Ñ‚', - 'ÇÜ' => 'у', - 'ÇÝ' => 'Ñ„', - 'ÇÞ' => 'Ñ…', - 'Çß' => 'ц', - 'Çà' => 'ч', - 'Çá' => 'ш', - 'Çâ' => 'щ', - 'Çã' => 'ÑŠ', - 'Çä' => 'Ñ‹', - 'Çå' => 'ÑŒ', - 'Çæ' => 'Ñ', - 'Çç' => 'ÑŽ', - 'Çè' => 'Ñ', - 'Çé' => 'â‘ ', - 'Çê' => 'â‘¡', - 'Çë' => 'â‘¢', - 'Çì' => 'â‘£', - 'Çí' => '⑤', - 'Çî' => 'â‘¥', - 'Çï' => '⑦', - 'Çð' => '⑧', - 'Çñ' => '⑨', - 'Çò' => 'â‘©', - 'Çó' => 'â‘´', - 'Çô' => '⑵', - 'Çõ' => '⑶', - 'Çö' => 'â‘·', - 'Ç÷' => '⑸', - 'Çø' => '⑹', - 'Çù' => '⑺', - 'Çú' => 'â‘»', - 'Çû' => '⑼', - 'Çü' => '⑽', - 'É@' => '乂', - 'ÉA' => '乜', - 'ÉB' => '凵', - 'ÉC' => '匚', - 'ÉD' => '厂', - 'ÉE' => '万', - 'ÉF' => '丌', - 'ÉG' => '乇', - 'ÉH' => 'äº', - 'ÉI' => 'å›—', - 'ÉJ' => '兀', - 'ÉK' => 'å±®', - 'ÉL' => 'å½³', - 'ÉM' => 'ä¸', - 'ÉN' => '冇', - 'ÉO' => '与', - 'ÉP' => '丮', - 'ÉQ' => '亓', - 'ÉR' => '仂', - 'ÉS' => '仉', - 'ÉT' => '仈', - 'ÉU' => '冘', - 'ÉV' => '勼', - 'ÉW' => 'å¬', - 'ÉX' => '厹', - 'ÉY' => '圠', - 'ÉZ' => '夃', - 'É[' => '夬', - 'É\\' => 'å°', - 'É]' => 'å·¿', - 'É^' => 'æ—¡', - 'É_' => '殳', - 'É`' => '毌', - 'Éa' => 'æ°”', - 'Éb' => '爿', - 'Éc' => '丱', - 'Éd' => '丼', - 'Ée' => '仨', - 'Éf' => '仜', - 'Ég' => '仩', - 'Éh' => '仡', - 'Éi' => 'ä»', - 'Éj' => '仚', - 'Ék' => '刌', - 'Él' => '匜', - 'Ém' => 'åŒ', - 'Én' => '圢', - 'Éo' => '圣', - 'Ép' => '夗', - 'Éq' => '夯', - 'Ér' => 'å®', - 'És' => '宄', - 'Ét' => 'å°’', - 'Éu' => 'å°»', - 'Év' => 'å±´', - 'Éw' => 'å±³', - 'Éx' => '帄', - 'Éy' => '庀', - 'Éz' => '庂', - 'É{' => '忉', - 'É|' => '戉', - 'É}' => 'æ‰', - 'É~' => 'æ°•', - 'É¡' => 'æ°¶', - 'É¢' => '汃', - 'É£' => 'æ°¿', - 'ɤ' => 'æ°»', - 'É¥' => '犮', - 'ɦ' => '犰', - 'ɧ' => '玊', - 'ɨ' => '禸', - 'É©' => 'è‚Š', - 'ɪ' => '阞', - 'É«' => '伎', - 'ɬ' => '优', - 'É­' => '伬', - 'É®' => '仵', - 'ɯ' => 'ä¼”', - 'É°' => 'ä»±', - 'ɱ' => 'ä¼€', - 'ɲ' => 'ä»·', - 'ɳ' => '伈', - 'É´' => 'ä¼', - 'ɵ' => '伂', - 'ɶ' => 'ä¼…', - 'É·' => 'ä¼¢', - 'ɸ' => '伓', - 'ɹ' => '伄', - 'ɺ' => 'ä»´', - 'É»' => 'ä¼’', - 'ɼ' => '冱', - 'ɽ' => '刓', - 'ɾ' => '刉', - 'É¿' => 'åˆ', - 'ÉÀ' => '劦', - 'ÉÁ' => '匢', - 'ÉÂ' => '匟', - 'ÉÃ' => 'å', - 'ÉÄ' => '厊', - 'ÉÅ' => 'å‡', - 'ÉÆ' => '囡', - 'ÉÇ' => '囟', - 'ÉÈ' => '圮', - 'ÉÉ' => '圪', - 'ÉÊ' => '圴', - 'ÉË' => '夼', - 'ÉÌ' => '妀', - 'ÉÍ' => '奼', - 'ÉÎ' => '妅', - 'ÉÏ' => '奻', - 'ÉÐ' => '奾', - 'ÉÑ' => '奷', - 'ÉÒ' => '奿', - 'ÉÓ' => 'å­–', - 'ÉÔ' => 'å°•', - 'ÉÕ' => 'å°¥', - 'ÉÖ' => 'å±¼', - 'É×' => '屺', - 'ÉØ' => 'å±»', - 'ÉÙ' => 'å±¾', - 'ÉÚ' => 'å·Ÿ', - 'ÉÛ' => 'å¹µ', - 'ÉÜ' => '庄', - 'ÉÝ' => '异', - 'ÉÞ' => '弚', - 'Éß' => 'å½´', - 'Éà' => 'å¿•', - 'Éá' => 'å¿”', - 'Éâ' => 'å¿', - 'Éã' => '扜', - 'Éä' => '扞', - 'Éå' => '扤', - 'Éæ' => '扡', - 'Éç' => '扦', - 'Éè' => '扢', - 'Éé' => '扙', - 'Éê' => '扠', - 'Éë' => '扚', - 'Éì' => '扥', - 'Éí' => 'æ—¯', - 'Éî' => 'æ—®', - 'Éï' => '朾', - 'Éð' => '朹', - 'Éñ' => '朸', - 'Éò' => '朻', - 'Éó' => '机', - 'Éô' => '朿', - 'Éõ' => '朼', - 'Éö' => '朳', - 'É÷' => 'æ°˜', - 'Éø' => '汆', - 'Éù' => 'æ±’', - 'Éú' => '汜', - 'Éû' => 'æ±', - 'Éü' => '汊', - 'Éý' => 'æ±”', - 'Éþ' => '汋', - 'Ê@' => '汌', - 'ÊA' => 'ç±', - 'ÊB' => '牞', - 'ÊC' => '犴', - 'ÊD' => '犵', - 'ÊE' => '玎', - 'ÊF' => '甪', - 'ÊG' => '癿', - 'ÊH' => '穵', - 'ÊI' => '网', - 'ÊJ' => '艸', - 'ÊK' => '艼', - 'ÊL' => '芀', - 'ÊM' => '艽', - 'ÊN' => '艿', - 'ÊO' => 'è™', - 'ÊP' => '襾', - 'ÊQ' => 'é‚™', - 'ÊR' => 'é‚—', - 'ÊS' => '邘', - 'ÊT' => 'é‚›', - 'ÊU' => 'é‚”', - 'ÊV' => '阢', - 'ÊW' => '阤', - 'ÊX' => '阠', - 'ÊY' => '阣', - 'ÊZ' => 'ä½–', - 'Ê[' => 'ä¼»', - 'Ê\\' => 'ä½¢', - 'Ê]' => '佉', - 'Ê^' => '体', - 'Ê_' => '佤', - 'Ê`' => 'ä¼¾', - 'Êa' => '佧', - 'Êb' => 'ä½’', - 'Êc' => '佟', - 'Êd' => 'ä½', - 'Êe' => '佘', - 'Êf' => 'ä¼­', - 'Êg' => 'ä¼³', - 'Êh' => '伿', - 'Êi' => '佡', - 'Êj' => 'å†', - 'Êk' => '冹', - 'Êl' => '刜', - 'Êm' => '刞', - 'Ên' => '刡', - 'Êo' => '劭', - 'Êp' => '劮', - 'Êq' => '匉', - 'Êr' => 'å£', - 'Ês' => 'å²', - 'Êt' => '厎', - 'Êu' => 'åŽ', - 'Êv' => 'å°', - 'Êw' => 'å·', - 'Êx' => 'åª', - 'Êy' => 'å‘”', - 'Êz' => 'å‘…', - 'Ê{' => 'å™', - 'Ê|' => 'åœ', - 'Ê}' => 'å¥', - 'Ê~' => 'å˜', - 'Ê¡' => 'å½', - 'Ê¢' => 'å‘', - 'Ê£' => 'å‘', - 'ʤ' => 'å¨', - 'Ê¥' => 'å¤', - 'ʦ' => '呇', - 'ʧ' => 'å›®', - 'ʨ' => '囧', - 'Ê©' => '囥', - 'ʪ' => 'å', - 'Ê«' => 'å…', - 'ʬ' => 'åŒ', - 'Ê­' => 'å‰', - 'Ê®' => 'å‹', - 'ʯ' => 'å’', - 'Ê°' => '夆', - 'ʱ' => '奀', - 'ʲ' => '妦', - 'ʳ' => '妘', - 'Ê´' => '妠', - 'ʵ' => '妗', - 'ʶ' => '妎', - 'Ê·' => '妢', - 'ʸ' => 'å¦', - 'ʹ' => 'å¦', - 'ʺ' => '妧', - 'Ê»' => '妡', - 'ʼ' => '宎', - 'ʽ' => 'å®’', - 'ʾ' => 'å°¨', - 'Ê¿' => 'å°ª', - 'ÊÀ' => 'å²', - 'ÊÁ' => 'å²', - 'ÊÂ' => '岈', - 'ÊÃ' => '岋', - 'ÊÄ' => '岉', - 'ÊÅ' => 'å²’', - 'ÊÆ' => '岊', - 'ÊÇ' => '岆', - 'ÊÈ' => '岓', - 'ÊÉ' => '岕', - 'ÊÊ' => 'å· ', - 'ÊË' => '帊', - 'ÊÌ' => '帎', - 'ÊÍ' => '庋', - 'ÊÎ' => '庉', - 'ÊÏ' => '庌', - 'ÊÐ' => '庈', - 'ÊÑ' => 'åº', - 'ÊÒ' => 'å¼…', - 'ÊÓ' => 'å¼', - 'ÊÔ' => '彸', - 'ÊÕ' => '彶', - 'ÊÖ' => 'å¿’', - 'Ê×' => 'å¿‘', - 'ÊØ' => 'å¿', - 'ÊÙ' => 'å¿­', - 'ÊÚ' => '忨', - 'ÊÛ' => 'å¿®', - 'ÊÜ' => '忳', - 'ÊÝ' => 'å¿¡', - 'ÊÞ' => '忤', - 'Êß' => 'å¿£', - 'Êà' => '忺', - 'Êá' => '忯', - 'Êâ' => 'å¿·', - 'Êã' => 'å¿»', - 'Êä' => '怀', - 'Êå' => 'å¿´', - 'Êæ' => '戺', - 'Êç' => '抃', - 'Êè' => '抌', - 'Êé' => '抎', - 'Êê' => 'æŠ', - 'Êë' => '抔', - 'Êì' => '抇', - 'Êí' => '扱', - 'Êî' => '扻', - 'Êï' => '扺', - 'Êð' => '扰', - 'Êñ' => 'æŠ', - 'Êò' => '抈', - 'Êó' => '扷', - 'Êô' => '扽', - 'Êõ' => '扲', - 'Êö' => '扴', - 'Ê÷' => 'æ”·', - 'Êø' => 'æ—°', - 'Êù' => 'æ—´', - 'Êú' => 'æ—³', - 'Êû' => 'æ—²', - 'Êü' => 'æ—µ', - 'Êý' => 'æ…', - 'Êþ' => 'æ‡', - 'Ë@' => 'æ™', - 'ËA' => 'æ•', - 'ËB' => 'æŒ', - 'ËC' => 'æˆ', - 'ËD' => 'æ', - 'ËE' => 'æ', - 'ËF' => 'æš', - 'ËG' => 'æ‹', - 'ËH' => 'æ¯', - 'ËI' => 'æ°™', - 'ËJ' => 'æ°š', - 'ËK' => '汸', - 'ËL' => '汧', - 'ËM' => '汫', - 'ËN' => '沄', - 'ËO' => '沋', - 'ËP' => 'æ²', - 'ËQ' => 'æ±±', - 'ËR' => '汯', - 'ËS' => '汩', - 'ËT' => '沚', - 'ËU' => 'æ±­', - 'ËV' => '沇', - 'ËW' => '沕', - 'ËX' => '沜', - 'ËY' => '汦', - 'ËZ' => 'æ±³', - 'Ë[' => 'æ±¥', - 'Ë\\' => 'æ±»', - 'Ë]' => '沎', - 'Ë^' => 'ç´', - 'Ë_' => 'çº', - 'Ë`' => '牣', - 'Ëa' => '犿', - 'Ëb' => '犽', - 'Ëc' => '狃', - 'Ëd' => '狆', - 'Ëe' => 'ç‹', - 'Ëf' => '犺', - 'Ëg' => 'ç‹…', - 'Ëh' => '玕', - 'Ëi' => '玗', - 'Ëj' => '玓', - 'Ëk' => '玔', - 'Ël' => '玒', - 'Ëm' => '町', - 'Ën' => '甹', - 'Ëo' => 'ç–”', - 'Ëp' => 'ç–•', - 'Ëq' => 'çš', - 'Ër' => '礽', - 'Ës' => '耴', - 'Ët' => 'è‚•', - 'Ëu' => 'è‚™', - 'Ëv' => 'è‚', - 'Ëw' => 'è‚’', - 'Ëx' => 'è‚œ', - 'Ëy' => 'èŠ', - 'Ëz' => 'èŠ', - 'Ë{' => '芅', - 'Ë|' => '芎', - 'Ë}' => '芑', - 'Ë~' => '芓', - 'Ë¡' => '芊', - 'Ë¢' => '芃', - 'Ë£' => '芄', - 'ˤ' => '豸', - 'Ë¥' => '迉', - '˦' => '辿', - '˧' => 'é‚Ÿ', - '˨' => 'é‚¡', - 'Ë©' => 'é‚¥', - '˪' => 'é‚ž', - 'Ë«' => '邧', - 'ˬ' => 'é‚ ', - 'Ë­' => '阰', - 'Ë®' => '阨', - '˯' => '阯', - 'Ë°' => '阭', - '˱' => '丳', - '˲' => '侘', - '˳' => 'ä½¼', - 'Ë´' => 'ä¾…', - '˵' => 'ä½½', - '˶' => 'ä¾€', - 'Ë·' => '侇', - '˸' => '佶', - '˹' => 'ä½´', - '˺' => '侉', - 'Ë»' => '侄', - '˼' => 'ä½·', - '˽' => '佌', - '˾' => 'ä¾—', - 'Ë¿' => '佪', - 'ËÀ' => '侚', - 'ËÁ' => 'ä½¹', - 'ËÂ' => 'ä¾', - 'ËÃ' => '佸', - 'ËÄ' => 'ä¾', - 'ËÅ' => '侜', - 'ËÆ' => 'ä¾”', - 'ËÇ' => '侞', - 'ËÈ' => 'ä¾’', - 'ËÉ' => '侂', - 'ËÊ' => '侕', - 'ËË' => '佫', - 'ËÌ' => 'ä½®', - 'ËÍ' => '冞', - 'ËÎ' => '冼', - 'ËÏ' => '冾', - 'ËÐ' => '刵', - 'ËÑ' => '刲', - 'ËÒ' => '刳', - 'ËÓ' => '剆', - 'ËÔ' => '刱', - 'ËÕ' => '劼', - 'ËÖ' => '匊', - 'Ë×' => '匋', - 'ËØ' => '匼', - 'ËÙ' => '厒', - 'ËÚ' => '厔', - 'ËÛ' => 'å’‡', - 'ËÜ' => 'å‘¿', - 'ËÝ' => 'å’', - 'ËÞ' => 'å’‘', - 'Ëß' => 'å’‚', - 'Ëà' => 'å’ˆ', - 'Ëá' => 'å‘«', - 'Ëâ' => '呺', - 'Ëã' => '呾', - 'Ëä' => 'å‘¥', - 'Ëå' => '呬', - 'Ëæ' => 'å‘´', - 'Ëç' => '呦', - 'Ëè' => 'å’', - 'Ëé' => '呯', - 'Ëê' => 'å‘¡', - 'Ëë' => 'å‘ ', - 'Ëì' => 'å’˜', - 'Ëí' => 'å‘£', - 'Ëî' => '呧', - 'Ëï' => '呤', - 'Ëð' => 'å›·', - 'Ëñ' => '囹', - 'Ëò' => 'å¯', - 'Ëó' => 'å²', - 'Ëô' => 'å­', - 'Ëõ' => 'å«', - 'Ëö' => 'å±', - 'Ë÷' => 'å°', - 'Ëø' => 'å¶', - 'Ëù' => '垀', - 'Ëú' => 'åµ', - 'Ëû' => 'å»', - 'Ëü' => 'å³', - 'Ëý' => 'å´', - 'Ëþ' => 'å¢', - 'Ì@' => 'å¨', - 'ÌA' => 'å½', - 'ÌB' => '夌', - 'ÌC' => '奅', - 'ÌD' => '妵', - 'ÌE' => '妺', - 'ÌF' => 'å§', - 'ÌG' => '姎', - 'ÌH' => '妲', - 'ÌI' => '姌', - 'ÌJ' => 'å§', - 'ÌK' => '妶', - 'ÌL' => '妼', - 'ÌM' => '姃', - 'ÌN' => '姖', - 'ÌO' => '妱', - 'ÌP' => '妽', - 'ÌQ' => '姀', - 'ÌR' => '姈', - 'ÌS' => '妴', - 'ÌT' => '姇', - 'ÌU' => 'å­¢', - 'ÌV' => 'å­¥', - 'ÌW' => '宓', - 'ÌX' => '宕', - 'ÌY' => '屄', - 'ÌZ' => '屇', - 'Ì[' => 'å²®', - 'Ì\\' => '岤', - 'Ì]' => 'å² ', - 'Ì^' => 'å²µ', - 'Ì_' => '岯', - 'Ì`' => '岨', - 'Ìa' => '岬', - 'Ìb' => '岟', - 'Ìc' => 'å²£', - 'Ìd' => 'å²­', - 'Ìe' => 'å²¢', - 'Ìf' => '岪', - 'Ìg' => '岧', - 'Ìh' => 'å²', - 'Ìi' => 'å²¥', - 'Ìj' => '岶', - 'Ìk' => 'å²°', - 'Ìl' => '岦', - 'Ìm' => '帗', - 'Ìn' => '帔', - 'Ìo' => '帙', - 'Ìp' => '弨', - 'Ìq' => 'å¼¢', - 'Ìr' => 'å¼£', - 'Ìs' => '弤', - 'Ìt' => 'å½”', - 'Ìu' => '徂', - 'Ìv' => 'å½¾', - 'Ìw' => 'å½½', - 'Ìx' => 'å¿ž', - 'Ìy' => 'å¿¥', - 'Ìz' => '怭', - 'Ì{' => '怦', - 'Ì|' => '怙', - 'Ì}' => '怲', - 'Ì~' => '怋', - 'Ì¡' => '怴', - 'Ì¢' => '怊', - 'Ì£' => '怗', - '̤' => '怳', - 'Ì¥' => '怚', - '̦' => '怞', - '̧' => '怬', - '̨' => '怢', - 'Ì©' => 'æ€', - '̪' => 'æ€', - 'Ì«' => '怮', - '̬' => '怓', - 'Ì­' => '怑', - 'Ì®' => '怌', - '̯' => '怉', - 'Ì°' => '怜', - '̱' => '戔', - '̲' => '戽', - '̳' => '抭', - 'Ì´' => '抴', - '̵' => 'æ‹‘', - '̶' => '抾', - 'Ì·' => '抪', - '̸' => '抶', - '̹' => 'æ‹Š', - '̺' => '抮', - 'Ì»' => '抳', - '̼' => '抯', - '̽' => '抻', - '̾' => '抩', - 'Ì¿' => '抰', - 'ÌÀ' => '抸', - 'ÌÁ' => '攽', - 'ÌÂ' => 'æ–¨', - 'ÌÃ' => 'æ–»', - 'ÌÄ' => '昉', - 'ÌÅ' => 'æ—¼', - 'ÌÆ' => '昄', - 'ÌÇ' => '昒', - 'ÌÈ' => '昈', - 'ÌÉ' => 'æ—»', - 'ÌÊ' => '昃', - 'ÌË' => '昋', - 'ÌÌ' => 'æ˜', - 'ÌÍ' => '昅', - 'ÌÎ' => 'æ—½', - 'ÌÏ' => '昑', - 'ÌÐ' => 'æ˜', - 'ÌÑ' => '曶', - 'ÌÒ' => '朊', - 'ÌÓ' => 'æž…', - 'ÌÔ' => 'æ¬', - 'ÌÕ' => '枎', - 'ÌÖ' => 'æž’', - 'Ì×' => 'æ¶', - 'ÌØ' => 'æ»', - 'ÌÙ' => '枘', - 'ÌÚ' => '枆', - 'ÌÛ' => 'æž„', - 'ÌÜ' => 'æ´', - 'ÌÝ' => 'æž', - 'ÌÞ' => '枌', - 'Ìß' => 'æº', - 'Ìà' => '枟', - 'Ìá' => 'æž‘', - 'Ìâ' => 'æž™', - 'Ìã' => '枃', - 'Ìä' => 'æ½', - 'Ìå' => 'æž', - 'Ìæ' => 'æ¸', - 'Ìç' => 'æ¹', - 'Ìè' => 'æž”', - 'Ìé' => '欥', - 'Ìê' => '殀', - 'Ìë' => 'æ­¾', - 'Ìì' => '毞', - 'Ìí' => 'æ°', - 'Ìî' => '沓', - 'Ìï' => '泬', - 'Ìð' => '泫', - 'Ìñ' => 'æ³®', - 'Ìò' => 'æ³™', - 'Ìó' => '沶', - 'Ìô' => 'æ³”', - 'Ìõ' => 'æ²­', - 'Ìö' => '泧', - 'Ì÷' => 'æ²·', - 'Ìø' => 'æ³', - 'Ìù' => '泂', - 'Ìú' => '沺', - 'Ìû' => '泃', - 'Ìü' => '泆', - 'Ìý' => 'æ³­', - 'Ìþ' => 'æ³²', - 'Í@' => 'æ³’', - 'ÍA' => 'æ³', - 'ÍB' => 'æ²´', - 'ÍC' => '沊', - 'ÍD' => 'æ²', - 'ÍE' => 'æ²€', - 'ÍF' => '泞', - 'ÍG' => 'æ³€', - 'ÍH' => 'æ´°', - 'ÍI' => 'æ³', - 'ÍJ' => '泇', - 'ÍK' => 'æ²°', - 'ÍL' => 'æ³¹', - 'ÍM' => 'æ³', - 'ÍN' => '泩', - 'ÍO' => '泑', - 'ÍP' => 'ç‚”', - 'ÍQ' => '炘', - 'ÍR' => 'ç‚…', - 'ÍS' => 'ç‚“', - 'ÍT' => '炆', - 'ÍU' => 'ç‚„', - 'ÍV' => 'ç‚‘', - 'ÍW' => 'ç‚–', - 'ÍX' => 'ç‚‚', - 'ÍY' => 'ç‚š', - 'ÍZ' => '炃', - 'Í[' => '牪', - 'Í\\' => 'ç‹–', - 'Í]' => 'ç‹‹', - 'Í^' => '狘', - 'Í_' => '狉', - 'Í`' => 'ç‹œ', - 'Ía' => 'ç‹’', - 'Íb' => 'ç‹”', - 'Íc' => 'ç‹š', - 'Íd' => 'ç‹Œ', - 'Íe' => 'ç‹‘', - 'Íf' => '玤', - 'Íg' => '玡', - 'Íh' => '玭', - 'Íi' => '玦', - 'Íj' => '玢', - 'Ík' => '玠', - 'Íl' => '玬', - 'Ím' => 'çŽ', - 'Ín' => 'ç“', - 'Ío' => '瓨', - 'Íp' => '甿', - 'Íq' => 'ç•€', - 'Ír' => '甾', - 'Ís' => 'ç–Œ', - 'Ít' => 'ç–˜', - 'Íu' => '皯', - 'Ív' => '盳', - 'Íw' => 'ç›±', - 'Íx' => 'ç›°', - 'Íy' => '盵', - 'Íz' => '矸', - 'Í{' => '矼', - 'Í|' => '矹', - 'Í}' => '矻', - 'Í~' => '矺', - 'Í¡' => '矷', - 'Í¢' => '祂', - 'Í£' => '礿', - 'ͤ' => '秅', - 'Í¥' => '穸', - 'ͦ' => 'ç©»', - 'ͧ' => 'ç«»', - 'ͨ' => 'ç±µ', - 'Í©' => 'ç³½', - 'ͪ' => '耵', - 'Í«' => 'è‚', - 'ͬ' => 'è‚®', - 'Í­' => 'è‚£', - 'Í®' => '肸', - 'ͯ' => '肵', - 'Í°' => 'è‚­', - 'ͱ' => '舠', - 'Ͳ' => '芠', - 'ͳ' => 'è‹€', - 'Í´' => '芫', - '͵' => '芚', - 'Ͷ' => '芘', - 'Í·' => '芛', - '͸' => '芵', - '͹' => '芧', - 'ͺ' => '芮', - 'Í»' => '芼', - 'ͼ' => '芞', - 'ͽ' => '芺', - ';' => '芴', - 'Í¿' => '芨', - 'ÍÀ' => '芡', - 'ÍÁ' => '芩', - 'ÍÂ' => 'è‹‚', - 'ÍÃ' => '芤', - 'ÍÄ' => '苃', - 'ÍÅ' => '芶', - 'ÍÆ' => '芢', - 'ÍÇ' => 'è™°', - 'ÍÈ' => '虯', - 'ÍÉ' => 'è™­', - 'ÍÊ' => 'è™®', - 'ÍË' => 'è±–', - 'ÍÌ' => 'è¿’', - 'ÍÍ' => 'è¿‹', - 'ÍÎ' => 'è¿“', - 'ÍÏ' => 'è¿', - 'ÍÐ' => 'è¿–', - 'ÍÑ' => 'è¿•', - 'ÍÒ' => 'è¿—', - 'ÍÓ' => '邲', - 'ÍÔ' => 'é‚´', - 'ÍÕ' => '邯', - 'ÍÖ' => '邳', - 'Í×' => 'é‚°', - 'ÍØ' => '阹', - 'ÍÙ' => '阽', - 'ÍÚ' => '阼', - 'ÍÛ' => '阺', - 'ÍÜ' => '陃', - 'ÍÝ' => 'ä¿', - 'ÍÞ' => 'ä¿…', - 'Íß' => 'ä¿“', - 'Íà' => 'ä¾²', - 'Íá' => '俉', - 'Íâ' => 'ä¿‹', - 'Íã' => 'ä¿', - 'Íä' => 'ä¿”', - 'Íå' => 'ä¿œ', - 'Íæ' => 'ä¿™', - 'Íç' => 'ä¾»', - 'Íè' => 'ä¾³', - 'Íé' => 'ä¿›', - 'Íê' => '俇', - 'Íë' => 'ä¿–', - 'Íì' => '侺', - 'Íí' => 'ä¿€', - 'Íî' => 'ä¾¹', - 'Íï' => '俬', - 'Íð' => '剄', - 'Íñ' => '剉', - 'Íò' => 'å‹€', - 'Íó' => 'å‹‚', - 'Íô' => '匽', - 'Íõ' => 'å¼', - 'Íö' => '厗', - 'Í÷' => '厖', - 'Íø' => '厙', - 'Íù' => '厘', - 'Íú' => 'å’º', - 'Íû' => 'å’¡', - 'Íü' => 'å’­', - 'Íý' => 'å’¥', - 'Íþ' => 'å“', - 'Î@' => '哃', - 'ÎA' => 'èŒ', - 'ÎB' => 'å’·', - 'ÎC' => 'å’®', - 'ÎD' => 'å“–', - 'ÎE' => 'å’¶', - 'ÎF' => 'å“…', - 'ÎG' => '哆', - 'ÎH' => 'å’ ', - 'ÎI' => 'å‘°', - 'ÎJ' => 'å’¼', - 'ÎK' => 'å’¢', - 'ÎL' => 'å’¾', - 'ÎM' => '呲', - 'ÎN' => 'å“ž', - 'ÎO' => 'å’°', - 'ÎP' => 'åžµ', - 'ÎQ' => 'åžž', - 'ÎR' => '垟', - 'ÎS' => '垤', - 'ÎT' => '垌', - 'ÎU' => 'åž—', - 'ÎV' => 'åž', - 'ÎW' => 'åž›', - 'ÎX' => 'åž”', - 'ÎY' => '垘', - 'ÎZ' => 'åž', - 'Î[' => 'åž™', - 'Î\\' => '垥', - 'Î]' => 'åžš', - 'Î^' => 'åž•', - 'Î_' => '壴', - 'Î`' => 'å¤', - 'Îa' => '奓', - 'Îb' => '姡', - 'Îc' => '姞', - 'Îd' => '姮', - 'Îe' => '娀', - 'Îf' => '姱', - 'Îg' => 'å§', - 'Îh' => '姺', - 'Îi' => '姽', - 'Îj' => '姼', - 'Îk' => '姶', - 'Îl' => '姤', - 'Îm' => '姲', - 'În' => '姷', - 'Îo' => '姛', - 'Îp' => '姩', - 'Îq' => '姳', - 'Îr' => '姵', - 'Îs' => '姠', - 'Ît' => '姾', - 'Îu' => '姴', - 'Îv' => '姭', - 'Îw' => '宨', - 'Îx' => '屌', - 'Îy' => 'å³', - 'Îz' => '峘', - 'Î{' => '峌', - 'Î|' => 'å³—', - 'Î}' => '峋', - 'Î~' => 'å³›', - 'Ρ' => '峞', - '΢' => '峚', - 'Σ' => '峉', - 'Τ' => '峇', - 'Î¥' => '峊', - 'Φ' => 'å³–', - 'Χ' => '峓', - 'Ψ' => 'å³”', - 'Ω' => 'å³', - 'Ϊ' => '峈', - 'Ϋ' => '峆', - 'ά' => '峎', - 'έ' => '峟', - 'ή' => '峸', - 'ί' => 'å·¹', - 'ΰ' => '帡', - 'α' => '帢', - 'β' => '帣', - 'γ' => '帠', - 'δ' => '帤', - 'ε' => '庰', - 'ζ' => '庤', - 'η' => '庢', - 'θ' => '庛', - 'ι' => '庣', - 'κ' => '庥', - 'λ' => '弇', - 'μ' => 'å¼®', - 'ν' => 'å½–', - 'ξ' => '徆', - 'ο' => '怷', - 'ÎÀ' => '怹', - 'ÎÁ' => 'æ”', - 'ÎÂ' => 'æ²', - 'ÎÃ' => 'æž', - 'ÎÄ' => 'æ…', - 'ÎÅ' => 'æ“', - 'ÎÆ' => 'æ‡', - 'ÎÇ' => 'æ‰', - 'ÎÈ' => 'æ›', - 'ÎÉ' => 'æŒ', - 'ÎÊ' => 'æ€', - 'ÎË' => 'æ‚', - 'ÎÌ' => 'æŸ', - 'ÎÍ' => '怤', - 'ÎÎ' => 'æ„', - 'ÎÏ' => 'æ˜', - 'ÎÐ' => 'æ¦', - 'ÎÑ' => 'æ®', - 'ÎÒ' => '扂', - 'ÎÓ' => '扃', - 'ÎÔ' => 'æ‹', - 'ÎÕ' => 'æŒ', - 'ÎÖ' => '挋', - 'Î×' => '拵', - 'ÎØ' => '挎', - 'ÎÙ' => '挃', - 'ÎÚ' => 'æ‹«', - 'ÎÛ' => '拹', - 'ÎÜ' => 'æŒ', - 'ÎÝ' => '挌', - 'ÎÞ' => '拸', - 'Îß' => '拶', - 'Îà' => '挀', - 'Îá' => '挓', - 'Îâ' => '挔', - 'Îã' => '拺', - 'Îä' => '挕', - 'Îå' => 'æ‹»', - 'Îæ' => 'æ‹°', - 'Îç' => 'æ•', - 'Îè' => '敃', - 'Îé' => 'æ–ª', - 'Îê' => 'æ–¿', - 'Îë' => '昶', - 'Îì' => '昡', - 'Îí' => '昲', - 'Îî' => '昵', - 'Îï' => '昜', - 'Îð' => '昦', - 'Îñ' => '昢', - 'Îò' => '昳', - 'Îó' => '昫', - 'Îô' => '昺', - 'Îõ' => 'æ˜', - 'Îö' => '昴', - 'Î÷' => '昹', - 'Îø' => '昮', - 'Îù' => 'æœ', - 'Îú' => 'æœ', - 'Îû' => 'æŸ', - 'Îü' => '柲', - 'Îý' => '柈', - 'Îþ' => '枺', - 'Ï@' => '柜', - 'ÏA' => 'æž»', - 'ÏB' => '柸', - 'ÏC' => '柘', - 'ÏD' => '柀', - 'ÏE' => 'æž·', - 'ÏF' => '柅', - 'ÏG' => '柫', - 'ÏH' => '柤', - 'ÏI' => '柟', - 'ÏJ' => 'æžµ', - 'ÏK' => 'æŸ', - 'ÏL' => 'æž³', - 'ÏM' => '柷', - 'ÏN' => '柶', - 'ÏO' => '柮', - 'ÏP' => '柣', - 'ÏQ' => '柂', - 'ÏR' => 'æž¹', - 'ÏS' => '柎', - 'ÏT' => '柧', - 'ÏU' => '柰', - 'ÏV' => 'æž²', - 'ÏW' => '柼', - 'ÏX' => '柆', - 'ÏY' => '柭', - 'ÏZ' => '柌', - 'Ï[' => 'æž®', - 'Ï\\' => '柦', - 'Ï]' => '柛', - 'Ï^' => '柺', - 'Ï_' => '柉', - 'Ï`' => '柊', - 'Ïa' => '柃', - 'Ïb' => '柪', - 'Ïc' => '柋', - 'Ïd' => '欨', - 'Ïe' => '殂', - 'Ïf' => '殄', - 'Ïg' => '殶', - 'Ïh' => '毖', - 'Ïi' => '毘', - 'Ïj' => '毠', - 'Ïk' => 'æ° ', - 'Ïl' => 'æ°¡', - 'Ïm' => 'æ´¨', - 'Ïn' => 'æ´´', - 'Ïo' => 'æ´­', - 'Ïp' => 'æ´Ÿ', - 'Ïq' => 'æ´¼', - 'Ïr' => 'æ´¿', - 'Ïs' => 'æ´’', - 'Ït' => 'æ´Š', - 'Ïu' => '泚', - 'Ïv' => 'æ´³', - 'Ïw' => 'æ´„', - 'Ïx' => 'æ´™', - 'Ïy' => 'æ´º', - 'Ïz' => 'æ´š', - 'Ï{' => 'æ´‘', - 'Ï|' => 'æ´€', - 'Ï}' => 'æ´', - 'Ï~' => '浂', - 'Ï¡' => 'æ´', - 'Ï¢' => 'æ´˜', - 'Ï£' => 'æ´·', - 'Ϥ' => 'æ´ƒ', - 'Ï¥' => 'æ´', - 'Ϧ' => 'æµ€', - 'ϧ' => 'æ´‡', - 'Ϩ' => 'æ´ ', - 'Ï©' => 'æ´¬', - 'Ϫ' => 'æ´ˆ', - 'Ï«' => 'æ´¢', - 'Ϭ' => 'æ´‰', - 'Ï­' => 'æ´', - 'Ï®' => 'ç‚·', - 'ϯ' => 'ç‚Ÿ', - 'Ï°' => '炾', - 'ϱ' => '炱', - 'ϲ' => 'ç‚°', - 'ϳ' => 'ç‚¡', - 'Ï´' => 'ç‚´', - 'ϵ' => '炵', - '϶' => 'ç‚©', - 'Ï·' => 'ç‰', - 'ϸ' => '牉', - 'Ϲ' => '牊', - 'Ϻ' => '牬', - 'Ï»' => '牰', - 'ϼ' => '牳', - 'Ͻ' => '牮', - 'Ͼ' => 'ç‹Š', - 'Ï¿' => '狤', - 'ÏÀ' => '狨', - 'ÏÁ' => 'ç‹«', - 'ÏÂ' => 'ç‹Ÿ', - 'ÏÃ' => '狪', - 'ÏÄ' => '狦', - 'ÏÅ' => 'ç‹£', - 'ÏÆ' => '玅', - 'ÏÇ' => 'çŒ', - 'ÏÈ' => 'ç‚', - 'ÏÉ' => 'çˆ', - 'ÏÊ' => 'ç…', - 'ÏË' => '玹', - 'ÏÌ' => '玶', - 'ÏÍ' => '玵', - 'ÏÎ' => '玴', - 'ÏÏ' => 'ç«', - 'ÏÐ' => '玿', - 'ÏÑ' => 'ç‡', - 'ÏÒ' => '玾', - 'ÏÓ' => 'çƒ', - 'ÏÔ' => 'ç†', - 'ÏÕ' => '玸', - 'ÏÖ' => 'ç‹', - 'Ï×' => '瓬', - 'ÏØ' => 'ç“®', - 'ÏÙ' => 'ç”®', - 'ÏÚ' => '畇', - 'ÏÛ' => '畈', - 'ÏÜ' => 'ç–§', - 'ÏÝ' => 'ç–ª', - 'ÏÞ' => '癹', - 'Ïß' => '盄', - 'Ïà' => '眈', - 'Ïá' => '眃', - 'Ïâ' => '眄', - 'Ïã' => '眅', - 'Ïä' => '眊', - 'Ïå' => 'ç›·', - 'Ïæ' => 'ç›»', - 'Ïç' => '盺', - 'Ïè' => '矧', - 'Ïé' => '矨', - 'Ïê' => 'ç †', - 'Ïë' => 'ç ‘', - 'Ïì' => 'ç ’', - 'Ïí' => 'ç …', - 'Ïî' => 'ç ', - 'Ïï' => 'ç ', - 'Ïð' => 'ç Ž', - 'Ïñ' => 'ç ‰', - 'Ïò' => 'ç ƒ', - 'Ïó' => 'ç “', - 'Ïô' => '祊', - 'Ïõ' => '祌', - 'Ïö' => '祋', - 'Ï÷' => '祅', - 'Ïø' => '祄', - 'Ïù' => '秕', - 'Ïú' => 'ç§', - 'Ïû' => 'ç§', - 'Ïü' => '秖', - 'Ïý' => '秎', - 'Ïþ' => '窀', - 'Ð@' => '穾', - 'ÐA' => 'ç«‘', - 'ÐB' => '笀', - 'ÐC' => 'ç¬', - 'ÐD' => '籺', - 'ÐE' => '籸', - 'ÐF' => 'ç±¹', - 'ÐG' => '籿', - 'ÐH' => 'ç²€', - 'ÐI' => 'ç²', - 'ÐJ' => 'ç´ƒ', - 'ÐK' => 'ç´ˆ', - 'ÐL' => 'ç´', - 'ÐM' => '罘', - 'ÐN' => '羑', - 'ÐO' => 'ç¾', - 'ÐP' => 'ç¾¾', - 'ÐQ' => '耇', - 'ÐR' => '耎', - 'ÐS' => 'è€', - 'ÐT' => '耔', - 'ÐU' => '耷', - 'ÐV' => '胘', - 'ÐW' => '胇', - 'ÐX' => '胠', - 'ÐY' => '胑', - 'ÐZ' => '胈', - 'Ð[' => '胂', - 'Ð\\' => 'èƒ', - 'Ð]' => '胅', - 'Ð^' => '胣', - 'Ð_' => '胙', - 'Ð`' => '胜', - 'Ða' => '胊', - 'Ðb' => '胕', - 'Ðc' => '胉', - 'Ðd' => 'èƒ', - 'Ðe' => '胗', - 'Ðf' => '胦', - 'Ðg' => 'èƒ', - 'Ðh' => '臿', - 'Ði' => '舡', - 'Ðj' => '芔', - 'Ðk' => 'è‹™', - 'Ðl' => '苾', - 'Ðm' => '苹', - 'Ðn' => '茇', - 'Ðo' => '苨', - 'Ðp' => '茀', - 'Ðq' => 'è‹•', - 'Ðr' => '茺', - 'Ðs' => 'è‹«', - 'Ðt' => 'è‹–', - 'Ðu' => 'è‹´', - 'Ðv' => '苬', - 'Ðw' => 'è‹¡', - 'Ðx' => '苲', - 'Ðy' => '苵', - 'Ðz' => '茌', - 'Ð{' => 'è‹»', - 'Ð|' => '苶', - 'Ð}' => 'è‹°', - 'Ð~' => '苪', - 'С' => '苤', - 'Т' => 'è‹ ', - 'У' => '苺', - 'Ф' => '苳', - 'Ð¥' => 'è‹­', - 'Ц' => 'è™·', - 'Ч' => 'è™´', - 'Ш' => '虼', - 'Щ' => '虳', - 'Ъ' => 'è¡', - 'Ы' => 'è¡Ž', - 'Ь' => '衧', - 'Э' => '衪', - 'Ю' => 'è¡©', - 'Я' => '觓', - 'а' => '訄', - 'б' => '訇', - 'в' => 'èµ²', - 'г' => 'è¿£', - 'д' => 'è¿¡', - 'е' => 'è¿®', - 'ж' => 'è¿ ', - 'з' => '郱', - 'и' => '邽', - 'й' => 'é‚¿', - 'к' => '郕', - 'л' => '郅', - 'м' => '邾', - 'н' => '郇', - 'о' => '郋', - 'п' => '郈', - 'ÐÀ' => '釔', - 'ÐÁ' => '釓', - 'ÐÂ' => 'é™”', - 'ÐÃ' => 'é™', - 'ÐÄ' => '陑', - 'ÐÅ' => '陓', - 'ÐÆ' => '陊', - 'ÐÇ' => '陎', - 'ÐÈ' => '倞', - 'ÐÉ' => '倅', - 'ÐÊ' => '倇', - 'ÐË' => '倓', - 'ÐÌ' => '倢', - 'ÐÍ' => '倰', - 'ÐÎ' => '倛', - 'ÐÏ' => '俵', - 'ÐÐ' => 'ä¿´', - 'ÐÑ' => '倳', - 'ÐÒ' => '倷', - 'ÐÓ' => '倬', - 'ÐÔ' => '俶', - 'ÐÕ' => 'ä¿·', - 'ÐÖ' => '倗', - 'Ð×' => '倜', - 'ÐØ' => '倠', - 'ÐÙ' => '倧', - 'ÐÚ' => '倵', - 'ÐÛ' => '倯', - 'ÐÜ' => '倱', - 'ÐÝ' => '倎', - 'ÐÞ' => 'å…š', - 'Ðß' => '冔', - 'Ðà' => '冓', - 'Ðá' => '凊', - 'Ðâ' => '凄', - 'Ðã' => '凅', - 'Ðä' => '凈', - 'Ðå' => '凎', - 'Ðæ' => '剡', - 'Ðç' => '剚', - 'Ðè' => '剒', - 'Ðé' => '剞', - 'Ðê' => '剟', - 'Ðë' => '剕', - 'Ðì' => '剢', - 'Ðí' => 'å‹', - 'Ðî' => '匎', - 'Ðï' => '厞', - 'Ðð' => '唦', - 'Ðñ' => 'å“¢', - 'Ðò' => 'å”—', - 'Ðó' => 'å”’', - 'Ðô' => '哧', - 'Ðõ' => '哳', - 'Ðö' => '哤', - 'Ð÷' => '唚', - 'Ðø' => 'å“¿', - 'Ðù' => '唄', - 'Ðú' => '唈', - 'Ðû' => 'å“«', - 'Ðü' => '唑', - 'Ðý' => 'å”…', - 'Ðþ' => '哱', - 'Ñ@' => '唊', - 'ÑA' => 'å“»', - 'ÑB' => 'å“·', - 'ÑC' => '哸', - 'ÑD' => 'å“ ', - 'ÑE' => '唎', - 'ÑF' => '唃', - 'ÑG' => '唋', - 'ÑH' => 'åœ', - 'ÑI' => '圂', - 'ÑJ' => '埌', - 'ÑK' => 'å ²', - 'ÑL' => '埕', - 'ÑM' => '埒', - 'ÑN' => '垺', - 'ÑO' => '埆', - 'ÑP' => 'åž½', - 'ÑQ' => 'åž¼', - 'ÑR' => '垸', - 'ÑS' => '垶', - 'ÑT' => 'åž¿', - 'ÑU' => '埇', - 'ÑV' => 'åŸ', - 'ÑW' => 'åž¹', - 'ÑX' => 'åŸ', - 'ÑY' => '夎', - 'ÑZ' => '奊', - 'Ñ[' => '娙', - 'Ñ\\' => '娖', - 'Ñ]' => '娭', - 'Ñ^' => '娮', - 'Ñ_' => '娕', - 'Ñ`' => 'å¨', - 'Ña' => '娗', - 'Ñb' => '娊', - 'Ñc' => '娞', - 'Ñd' => '娳', - 'Ñe' => 'å­¬', - 'Ñf' => '宧', - 'Ñg' => 'å®­', - 'Ñh' => '宬', - 'Ñi' => 'å°ƒ', - 'Ñj' => 'å±–', - 'Ñk' => 'å±”', - 'Ñl' => '峬', - 'Ñm' => '峿', - 'Ñn' => 'å³®', - 'Ño' => 'å³±', - 'Ñp' => 'å³·', - 'Ñq' => 'å´€', - 'Ñr' => 'å³¹', - 'Ñs' => '帩', - 'Ñt' => '帨', - 'Ñu' => '庨', - 'Ñv' => '庮', - 'Ñw' => '庪', - 'Ñx' => '庬', - 'Ñy' => 'å¼³', - 'Ñz' => 'å¼°', - 'Ñ{' => '彧', - 'Ñ|' => 'æ', - 'Ñ}' => 'æš', - 'Ñ~' => 'æ§', - 'Ñ¡' => 'æ', - 'Ñ¢' => 'æ‚¢', - 'Ñ£' => '悈', - 'Ѥ' => 'æ‚€', - 'Ñ¥' => 'æ‚’', - 'Ѧ' => 'æ‚', - 'ѧ' => 'æ‚', - 'Ѩ' => '悃', - 'Ñ©' => 'æ‚•', - 'Ѫ' => 'æ‚›', - 'Ñ«' => 'æ‚—', - 'Ѭ' => '悇', - 'Ñ­' => 'æ‚œ', - 'Ñ®' => 'æ‚Ž', - 'ѯ' => '戙', - 'Ñ°' => '扆', - 'ѱ' => '拲', - 'Ѳ' => 'æŒ', - 'ѳ' => 'æ–', - 'Ñ´' => '挬', - 'ѵ' => 'æ„', - 'Ѷ' => 'æ…', - 'Ñ·' => '挶', - 'Ѹ' => 'æƒ', - 'ѹ' => 'æ¤', - 'Ѻ' => '挹', - 'Ñ»' => 'æ‹', - 'Ѽ' => 'æŠ', - 'ѽ' => '挼', - 'Ѿ' => '挩', - 'Ñ¿' => 'æ', - 'ÑÀ' => '挴', - 'ÑÁ' => 'æ˜', - 'ÑÂ' => 'æ”', - 'ÑÃ' => 'æ™', - 'ÑÄ' => '挭', - 'ÑÅ' => 'æ‡', - 'ÑÆ' => '挳', - 'ÑÇ' => 'æš', - 'ÑÈ' => 'æ‘', - 'ÑÉ' => '挸', - 'ÑÊ' => 'æ—', - 'ÑË' => 'æ€', - 'ÑÌ' => 'æˆ', - 'ÑÍ' => 'æ•Š', - 'ÑÎ' => '敆', - 'ÑÏ' => 'æ—†', - 'ÑÐ' => 'æ—ƒ', - 'ÑÑ' => 'æ—„', - 'ÑÒ' => 'æ—‚', - 'ÑÓ' => '晊', - 'ÑÔ' => '晟', - 'ÑÕ' => '晇', - 'ÑÖ' => '晑', - 'Ñ×' => '朒', - 'ÑØ' => '朓', - 'ÑÙ' => 'æ Ÿ', - 'ÑÚ' => 'æ š', - 'ÑÛ' => '桉', - 'ÑÜ' => 'æ ²', - 'ÑÝ' => 'æ ³', - 'ÑÞ' => 'æ »', - 'Ñß' => 'æ¡‹', - 'Ñà' => 'æ¡', - 'Ñá' => 'æ –', - 'Ñâ' => 'æ ±', - 'Ñã' => 'æ œ', - 'Ñä' => 'æ µ', - 'Ñå' => 'æ «', - 'Ñæ' => 'æ ­', - 'Ñç' => 'æ ¯', - 'Ñè' => 'æ¡Ž', - 'Ñé' => 'æ¡„', - 'Ñê' => 'æ ´', - 'Ñë' => 'æ ', - 'Ñì' => 'æ ’', - 'Ñí' => 'æ ”', - 'Ñî' => 'æ ¦', - 'Ñï' => 'æ ¨', - 'Ñð' => 'æ ®', - 'Ññ' => 'æ¡', - 'Ñò' => 'æ º', - 'Ñó' => 'æ ¥', - 'Ñô' => 'æ  ', - 'Ñõ' => '欬', - 'Ñö' => '欯', - 'Ñ÷' => '欭', - 'Ñø' => '欱', - 'Ñù' => '欴', - 'Ñú' => 'æ­­', - 'Ñû' => 'è‚‚', - 'Ñü' => '殈', - 'Ñý' => '毦', - 'Ñþ' => '毤', - 'Ò@' => '毨', - 'ÒA' => '毣', - 'ÒB' => '毢', - 'ÒC' => '毧', - 'ÒD' => 'æ°¥', - 'ÒE' => '浺', - 'ÒF' => 'æµ£', - 'ÒG' => '浤', - 'ÒH' => '浶', - 'ÒI' => 'æ´', - 'ÒJ' => '浡', - 'ÒK' => '涒', - 'ÒL' => '浘', - 'ÒM' => 'æµ¢', - 'ÒN' => 'æµ­', - 'ÒO' => '浯', - 'ÒP' => '涑', - 'ÒQ' => 'æ¶', - 'ÒR' => 'æ·¯', - 'ÒS' => '浿', - 'ÒT' => '涆', - 'ÒU' => '浞', - 'ÒV' => '浧', - 'ÒW' => 'æµ ', - 'ÒX' => '涗', - 'ÒY' => 'æµ°', - 'ÒZ' => 'æµ¼', - 'Ò[' => '浟', - 'Ò\\' => '涂', - 'Ò]' => '涘', - 'Ò^' => 'æ´¯', - 'Ò_' => '浨', - 'Ò`' => '涋', - 'Òa' => 'æµ¾', - 'Òb' => '涀', - 'Òc' => '涄', - 'Òd' => 'æ´–', - 'Òe' => '涃', - 'Òf' => 'æµ»', - 'Òg' => 'æµ½', - 'Òh' => 'æµµ', - 'Òi' => 'æ¶', - 'Òj' => '烜', - 'Òk' => '烓', - 'Òl' => '烑', - 'Òm' => 'çƒ', - 'Òn' => '烋', - 'Òo' => 'ç¼¹', - 'Òp' => '烢', - 'Òq' => '烗', - 'Òr' => '烒', - 'Òs' => '烞', - 'Òt' => '烠', - 'Òu' => '烔', - 'Òv' => 'çƒ', - 'Òw' => '烅', - 'Òx' => '烆', - 'Òy' => '烇', - 'Òz' => '烚', - 'Ò{' => '烎', - 'Ò|' => '烡', - 'Ò}' => '牂', - 'Ò~' => '牸', - 'Ò¡' => '牷', - 'Ò¢' => '牶', - 'Ò£' => '猀', - 'Ò¤' => '狺', - 'Ò¥' => 'ç‹´', - 'Ò¦' => '狾', - 'Ò§' => '狶', - 'Ò¨' => '狳', - 'Ò©' => 'ç‹»', - 'Òª' => 'çŒ', - 'Ò«' => 'ç“', - 'Ò¬' => 'ç™', - 'Ò­' => 'ç¥', - 'Ò®' => 'ç–', - 'Ò¯' => '玼', - 'Ò°' => 'ç§', - 'Ò±' => 'ç£', - 'Ò²' => 'ç©', - 'Ò³' => 'çœ', - 'Ò´' => 'ç’', - 'Òµ' => 'ç›', - 'Ò¶' => 'ç”', - 'Ò·' => 'ç', - 'Ò¸' => 'çš', - 'Ò¹' => 'ç—', - 'Òº' => 'ç˜', - 'Ò»' => 'ç¨', - 'Ò¼' => 'ç“ž', - 'Ò½' => 'ç“Ÿ', - 'Ò¾' => 'ç“´', - 'Ò¿' => '瓵', - 'ÒÀ' => '甡', - 'ÒÁ' => 'ç•›', - 'ÒÂ' => 'ç•Ÿ', - 'ÒÃ' => 'ç–°', - 'ÒÄ' => 'ç—', - 'ÒÅ' => 'ç–»', - 'ÒÆ' => 'ç—„', - 'ÒÇ' => 'ç—€', - 'ÒÈ' => 'ç–¿', - 'ÒÉ' => 'ç–¶', - 'ÒÊ' => 'ç–º', - 'ÒË' => '皊', - 'ÒÌ' => '盉', - 'ÒÍ' => 'çœ', - 'ÒÎ' => '眛', - 'ÒÏ' => 'çœ', - 'ÒÐ' => '眓', - 'ÒÑ' => '眒', - 'ÒÒ' => '眣', - 'ÒÓ' => '眑', - 'ÒÔ' => '眕', - 'ÒÕ' => '眙', - 'ÒÖ' => '眚', - 'Ò×' => '眢', - 'ÒØ' => '眧', - 'ÒÙ' => 'ç £', - 'ÒÚ' => 'ç ¬', - 'ÒÛ' => 'ç ¢', - 'ÒÜ' => 'ç µ', - 'ÒÝ' => 'ç ¯', - 'ÒÞ' => 'ç ¨', - 'Òß' => 'ç ®', - 'Òà' => 'ç «', - 'Òá' => 'ç ¡', - 'Òâ' => 'ç ©', - 'Òã' => 'ç ³', - 'Òä' => 'ç ª', - 'Òå' => 'ç ±', - 'Òæ' => '祔', - 'Òç' => '祛', - 'Òè' => 'ç¥', - 'Òé' => '祜', - 'Òê' => '祓', - 'Òë' => '祒', - 'Òì' => '祑', - 'Òí' => '秫', - 'Òî' => '秬', - 'Òï' => '秠', - 'Òð' => '秮', - 'Òñ' => '秭', - 'Òò' => '秪', - 'Òó' => '秜', - 'Òô' => '秞', - 'Òõ' => 'ç§', - 'Òö' => '窆', - 'Ò÷' => '窉', - 'Òø' => '窅', - 'Òù' => '窋', - 'Òú' => '窌', - 'Òû' => '窊', - 'Òü' => '窇', - 'Òý' => '竘', - 'Òþ' => 'ç¬', - 'Ó@' => '笄', - 'ÓA' => '笓', - 'ÓB' => '笅', - 'ÓC' => 'ç¬', - 'ÓD' => '笈', - 'ÓE' => '笊', - 'ÓF' => '笎', - 'ÓG' => '笉', - 'ÓH' => '笒', - 'ÓI' => '粄', - 'ÓJ' => '粑', - 'ÓK' => '粊', - 'ÓL' => '粌', - 'ÓM' => '粈', - 'ÓN' => 'ç²', - 'ÓO' => 'ç²…', - 'ÓP' => 'ç´ž', - 'ÓQ' => 'ç´', - 'ÓR' => 'ç´‘', - 'ÓS' => 'ç´Ž', - 'ÓT' => 'ç´˜', - 'ÓU' => 'ç´–', - 'ÓV' => 'ç´“', - 'ÓW' => 'ç´Ÿ', - 'ÓX' => 'ç´’', - 'ÓY' => 'ç´', - 'ÓZ' => 'ç´Œ', - 'Ó[' => '罜', - 'Ó\\' => '罡', - 'Ó]' => '罞', - 'Ó^' => 'ç½ ', - 'Ó_' => 'ç½', - 'Ó`' => 'ç½›', - 'Óa' => 'ç¾–', - 'Ób' => 'ç¾’', - 'Óc' => '翃', - 'Ód' => 'ç¿‚', - 'Óe' => 'ç¿€', - 'Óf' => '耖', - 'Óg' => '耾', - 'Óh' => '耹', - 'Ói' => '胺', - 'Ój' => '胲', - 'Ók' => '胹', - 'Ól' => '胵', - 'Óm' => 'è„', - 'Ón' => '胻', - 'Óo' => 'è„€', - 'Óp' => 'èˆ', - 'Óq' => '舯', - 'Ór' => '舥', - 'Ós' => '茳', - 'Ót' => '茭', - 'Óu' => 'è„', - 'Óv' => '茙', - 'Ów' => 'è‘', - 'Óx' => '茥', - 'Óy' => 'è–', - 'Óz' => '茿', - 'Ó{' => 'è', - 'Ó|' => '茦', - 'Ó}' => '茜', - 'Ó~' => '茢', - 'Ó¡' => 'è‚', - 'Ó¢' => 'èŽ', - 'Ó£' => '茛', - 'Ó¤' => '茪', - 'Ó¥' => '茈', - 'Ó¦' => '茼', - 'Ó§' => 'è', - 'Ó¨' => '茖', - 'Ó©' => '茤', - 'Óª' => '茠', - 'Ó«' => '茷', - 'Ó¬' => '茯', - 'Ó­' => '茩', - 'Ó®' => 'è‡', - 'Ó¯' => 'è…', - 'Ó°' => 'èŒ', - 'Ó±' => 'è“', - 'Ó²' => '茞', - 'Ó³' => '茬', - 'Ó´' => 'è‹', - 'Óµ' => '茧', - 'Ó¶' => 'èˆ', - 'Ó·' => '虓', - 'Ó¸' => 'è™’', - 'Ó¹' => '蚢', - 'Óº' => '蚨', - 'Ó»' => 'èš–', - 'Ó¼' => 'èš', - 'Ó½' => 'èš‘', - 'Ó¾' => 'èšž', - 'Ó¿' => '蚇', - 'ÓÀ' => 'èš—', - 'ÓÁ' => '蚆', - 'ÓÂ' => 'èš‹', - 'ÓÃ' => 'èšš', - 'ÓÄ' => 'èš…', - 'ÓÅ' => '蚥', - 'ÓÆ' => 'èš™', - 'ÓÇ' => 'èš¡', - 'ÓÈ' => '蚧', - 'ÓÉ' => 'èš•', - 'ÓÊ' => '蚘', - 'ÓË' => '蚎', - 'ÓÌ' => 'èš', - 'ÓÍ' => 'èš', - 'ÓÎ' => 'èš”', - 'ÓÏ' => '衃', - 'ÓÐ' => 'è¡„', - 'ÓÑ' => 'è¡­', - 'ÓÒ' => '衵', - 'ÓÓ' => '衶', - 'ÓÔ' => '衲', - 'ÓÕ' => '袀', - 'ÓÖ' => '衱', - 'Ó×' => 'è¡¿', - 'ÓØ' => '衯', - 'ÓÙ' => '袃', - 'ÓÚ' => '衾', - 'ÓÛ' => 'è¡´', - 'ÓÜ' => '衼', - 'ÓÝ' => '訒', - 'ÓÞ' => '豇', - 'Óß' => 'è±—', - 'Óà' => 'è±»', - 'Óá' => '貤', - 'Óâ' => 'è²£', - 'Óã' => '赶', - 'Óä' => '赸', - 'Óå' => '趵', - 'Óæ' => '趷', - 'Óç' => '趶', - 'Óè' => '軑', - 'Óé' => '軓', - 'Óê' => '迾', - 'Óë' => '迵', - 'Óì' => '适', - 'Óí' => 'è¿¿', - 'Óî' => 'è¿»', - 'Óï' => '逄', - 'Óð' => '迼', - 'Óñ' => '迶', - 'Óò' => '郖', - 'Óó' => '郠', - 'Óô' => '郙', - 'Óõ' => '郚', - 'Óö' => '郣', - 'Ó÷' => '郟', - 'Óø' => '郥', - 'Óù' => '郘', - 'Óú' => '郛', - 'Óû' => '郗', - 'Óü' => '郜', - 'Óý' => '郤', - 'Óþ' => 'é…', - 'Ô@' => 'é…Ž', - 'ÔA' => 'é…', - 'ÔB' => '釕', - 'ÔC' => '釢', - 'ÔD' => '釚', - 'ÔE' => '陜', - 'ÔF' => '陟', - 'ÔG' => 'éš¼', - 'ÔH' => '飣', - 'ÔI' => 'é«Ÿ', - 'ÔJ' => '鬯', - 'ÔK' => '乿', - 'ÔL' => 'å°', - 'ÔM' => 'åª', - 'ÔN' => 'å¡', - 'ÔO' => 'åž', - 'ÔP' => 'å ', - 'ÔQ' => 'å“', - 'ÔR' => 'å‹', - 'ÔS' => 'å', - 'ÔT' => 'å²', - 'ÔU' => 'åˆ', - 'ÔV' => 'å', - 'ÔW' => 'å', - 'ÔX' => 'å›', - 'ÔY' => 'åŠ', - 'ÔZ' => 'å¢', - 'Ô[' => '倕', - 'Ô\\' => 'å…', - 'Ô]' => 'åŸ', - 'Ô^' => 'å©', - 'Ô_' => 'å«', - 'Ô`' => 'å£', - 'Ôa' => 'å¤', - 'Ôb' => 'å†', - 'Ôc' => 'å€', - 'Ôd' => 'å®', - 'Ôe' => 'å³', - 'Ôf' => 'å—', - 'Ôg' => 'å‘', - 'Ôh' => 'å‡', - 'Ôi' => '剫', - 'Ôj' => '剭', - 'Ôk' => '剬', - 'Ôl' => '剮', - 'Ôm' => 'å‹–', - 'Ôn' => 'å‹“', - 'Ôo' => '匭', - 'Ôp' => '厜', - 'Ôq' => '啵', - 'Ôr' => '啶', - 'Ôs' => '唼', - 'Ôt' => 'å•', - 'Ôu' => 'å•', - 'Ôv' => 'å”´', - 'Ôw' => '唪', - 'Ôx' => 'å•‘', - 'Ôy' => 'å•¢', - 'Ôz' => '唶', - 'Ô{' => '唵', - 'Ô|' => 'å”°', - 'Ô}' => 'å•’', - 'Ô~' => 'å•…', - 'Ô¡' => '唌', - 'Ô¢' => '唲', - 'Ô£' => 'å•¥', - 'Ô¤' => 'å•Ž', - 'Ô¥' => '唹', - 'Ô¦' => '啈', - 'Ô§' => 'å”­', - 'Ô¨' => 'å”»', - 'Ô©' => 'å•€', - 'Ôª' => 'å•‹', - 'Ô«' => '圊', - 'Ô¬' => '圇', - 'Ô­' => '埻', - 'Ô®' => 'å ”', - 'Ô¯' => '埢', - 'Ô°' => '埶', - 'Ô±' => '埜', - 'Ô²' => '埴', - 'Ô³' => 'å €', - 'Ô´' => '埭', - 'Ôµ' => '埽', - 'Ô¶' => 'å ˆ', - 'Ô·' => '埸', - 'Ô¸' => 'å ‹', - 'Ô¹' => '埳', - 'Ôº' => 'åŸ', - 'Ô»' => 'å ‡', - 'Ô¼' => '埮', - 'Ô½' => '埣', - 'Ô¾' => '埲', - 'Ô¿' => '埥', - 'ÔÀ' => '埬', - 'ÔÁ' => '埡', - 'ÔÂ' => 'å Ž', - 'ÔÃ' => '埼', - 'ÔÄ' => 'å ', - 'ÔÅ' => '埧', - 'ÔÆ' => 'å ', - 'ÔÇ' => 'å Œ', - 'ÔÈ' => '埱', - 'ÔÉ' => '埩', - 'ÔÊ' => '埰', - 'ÔË' => 'å ', - 'ÔÌ' => 'å „', - 'ÔÍ' => '奜', - 'ÔÎ' => 'å© ', - 'ÔÏ' => '婘', - 'ÔÐ' => 'å©•', - 'ÔÑ' => '婧', - 'ÔÒ' => 'å©ž', - 'ÔÓ' => '娸', - 'ÔÔ' => '娵', - 'ÔÕ' => 'å©­', - 'ÔÖ' => 'å©', - 'Ô×' => 'å©Ÿ', - 'ÔØ' => 'å©¥', - 'ÔÙ' => '婬', - 'ÔÚ' => 'å©“', - 'ÔÛ' => '婤', - 'ÔÜ' => 'å©—', - 'ÔÝ' => '婃', - 'ÔÞ' => 'å©', - 'Ôß' => 'å©’', - 'Ôà' => 'å©„', - 'Ôá' => 'å©›', - 'Ôâ' => '婈', - 'Ôã' => '媎', - 'Ôä' => '娾', - 'Ôå' => 'å©', - 'Ôæ' => '娹', - 'Ôç' => 'å©Œ', - 'Ôè' => 'å©°', - 'Ôé' => 'å©©', - 'Ôê' => '婇', - 'Ôë' => 'å©‘', - 'Ôì' => 'å©–', - 'Ôí' => 'å©‚', - 'Ôî' => 'å©œ', - 'Ôï' => 'å­²', - 'Ôð' => 'å­®', - 'Ôñ' => 'å¯', - 'Ôò' => '寀', - 'Ôó' => 'å±™', - 'Ôô' => 'å´ž', - 'Ôõ' => 'å´‹', - 'Ôö' => 'å´', - 'Ô÷' => 'å´š', - 'Ôø' => 'å´ ', - 'Ôù' => 'å´Œ', - 'Ôú' => 'å´¨', - 'Ôû' => 'å´', - 'Ôü' => 'å´¦', - 'Ôý' => 'å´¥', - 'Ôþ' => 'å´', - 'Õ@' => 'å´°', - 'ÕA' => 'å´’', - 'ÕB' => 'å´£', - 'ÕC' => 'å´Ÿ', - 'ÕD' => 'å´®', - 'ÕE' => '帾', - 'ÕF' => '帴', - 'ÕG' => '庱', - 'ÕH' => '庴', - 'ÕI' => '庹', - 'ÕJ' => '庲', - 'ÕK' => '庳', - 'ÕL' => '弶', - 'ÕM' => '弸', - 'ÕN' => 'å¾›', - 'ÕO' => 'å¾–', - 'ÕP' => '徟', - 'ÕQ' => 'æ‚Š', - 'ÕR' => 'æ‚', - 'ÕS' => '悆', - 'ÕT' => '悾', - 'ÕU' => 'æ‚°', - 'ÕV' => '悺', - 'ÕW' => '惓', - 'ÕX' => '惔', - 'ÕY' => 'æƒ', - 'ÕZ' => '惤', - 'Õ[' => '惙', - 'Õ\\' => 'æƒ', - 'Õ]' => '惈', - 'Õ^' => '悱', - 'Õ_' => '惛', - 'Õ`' => 'æ‚·', - 'Õa' => '惊', - 'Õb' => 'æ‚¿', - 'Õc' => '惃', - 'Õd' => 'æƒ', - 'Õe' => '惀', - 'Õf' => '挲', - 'Õg' => 'æ¥', - 'Õh' => '掊', - 'Õi' => '掂', - 'Õj' => 'æ½', - 'Õk' => '掽', - 'Õl' => '掞', - 'Õm' => '掭', - 'Õn' => 'æŽ', - 'Õo' => '掗', - 'Õp' => '掫', - 'Õq' => '掎', - 'Õr' => 'æ¯', - 'Õs' => '掇', - 'Õt' => 'æŽ', - 'Õu' => 'æ®', - 'Õv' => '掯', - 'Õw' => 'æµ', - 'Õx' => '掜', - 'Õy' => 'æ­', - 'Õz' => '掮', - 'Õ{' => 'æ¼', - 'Õ|' => '掤', - 'Õ}' => '挻', - 'Õ~' => '掟', - 'Õ¡' => 'æ¸', - 'Õ¢' => '掅', - 'Õ£' => 'æŽ', - 'Õ¤' => '掑', - 'Õ¥' => 'æŽ', - 'Õ¦' => 'æ°', - 'Õ§' => 'æ•“', - 'Õ¨' => 'æ—', - 'Õ©' => '晥', - 'Õª' => '晡', - 'Õ«' => 'æ™›', - 'Õ¬' => 'æ™™', - 'Õ­' => '晜', - 'Õ®' => '晢', - 'Õ¯' => '朘', - 'Õ°' => '桹', - 'Õ±' => '梇', - 'Õ²' => 'æ¢', - 'Õ³' => '梜', - 'Õ´' => 'æ¡­', - 'Õµ' => 'æ¡®', - 'Õ¶' => '梮', - 'Õ·' => '梫', - 'Õ¸' => '楖', - 'Õ¹' => '桯', - 'Õº' => '梣', - 'Õ»' => '梬', - 'Õ¼' => '梩', - 'Õ½' => '桵', - 'Õ¾' => 'æ¡´', - 'Õ¿' => '梲', - 'ÕÀ' => 'æ¢', - 'ÕÁ' => 'æ¡·', - 'ÕÂ' => '梒', - 'ÕÃ' => '桼', - 'ÕÄ' => 'æ¡«', - 'ÕÅ' => '桲', - 'ÕÆ' => '梪', - 'ÕÇ' => '梀', - 'ÕÈ' => '桱', - 'ÕÉ' => '桾', - 'ÕÊ' => '梛', - 'ÕË' => '梖', - 'ÕÌ' => '梋', - 'ÕÍ' => '梠', - 'ÕÎ' => '梉', - 'ÕÏ' => '梤', - 'ÕÐ' => '桸', - 'ÕÑ' => 'æ¡»', - 'ÕÒ' => '梑', - 'ÕÓ' => '梌', - 'ÕÔ' => '梊', - 'ÕÕ' => '桽', - 'ÕÖ' => '欶', - 'Õ×' => '欳', - 'ÕØ' => '欷', - 'ÕÙ' => '欸', - 'ÕÚ' => '殑', - 'ÕÛ' => 'æ®', - 'ÕÜ' => 'æ®', - 'ÕÝ' => '殎', - 'ÕÞ' => '殌', - 'Õß' => 'æ°ª', - 'Õà' => 'æ·€', - 'Õá' => '涫', - 'Õâ' => '涴', - 'Õã' => '涳', - 'Õä' => 'æ¹´', - 'Õå' => '涬', - 'Õæ' => 'æ·©', - 'Õç' => 'æ·¢', - 'Õè' => '涷', - 'Õé' => 'æ·¶', - 'Õê' => 'æ·”', - 'Õë' => '渀', - 'Õì' => 'æ·ˆ', - 'Õí' => 'æ· ', - 'Õî' => 'æ·Ÿ', - 'Õï' => 'æ·–', - 'Õð' => '涾', - 'Õñ' => 'æ·¥', - 'Õò' => 'æ·œ', - 'Õó' => 'æ·', - 'Õô' => 'æ·›', - 'Õõ' => 'æ·´', - 'Õö' => 'æ·Š', - 'Õ÷' => '涽', - 'Õø' => 'æ·­', - 'Õù' => 'æ·°', - 'Õú' => '涺', - 'Õû' => 'æ·•', - 'Õü' => 'æ·‚', - 'Õý' => 'æ·', - 'Õþ' => 'æ·‰', - 'Ö@' => 'æ·', - 'ÖA' => 'æ·²', - 'ÖB' => 'æ·“', - 'ÖC' => 'æ·½', - 'ÖD' => 'æ·—', - 'ÖE' => 'æ·', - 'ÖF' => 'æ·£', - 'ÖG' => '涻', - 'ÖH' => '烺', - 'ÖI' => 'ç„', - 'ÖJ' => '烷', - 'ÖK' => 'ç„—', - 'ÖL' => '烴', - 'ÖM' => 'ç„Œ', - 'ÖN' => '烰', - 'ÖO' => 'ç„„', - 'ÖP' => '烳', - 'ÖQ' => 'ç„', - 'ÖR' => '烼', - 'ÖS' => '烿', - 'ÖT' => '焆', - 'ÖU' => 'ç„“', - 'ÖV' => 'ç„€', - 'ÖW' => '烸', - 'ÖX' => '烶', - 'ÖY' => 'ç„‹', - 'ÖZ' => 'ç„‚', - 'Ö[' => 'ç„Ž', - 'Ö\\' => '牾', - 'Ö]' => '牻', - 'Ö^' => '牼', - 'Ö_' => '牿', - 'Ö`' => 'çŒ', - 'Öa' => '猗', - 'Öb' => '猇', - 'Öc' => '猑', - 'Öd' => '猘', - 'Öe' => '猊', - 'Öf' => '猈', - 'Ög' => 'ç‹¿', - 'Öh' => 'çŒ', - 'Öi' => '猞', - 'Öj' => '玈', - 'Ök' => 'ç¶', - 'Öl' => 'ç¸', - 'Öm' => 'çµ', - 'Ön' => 'ç„', - 'Öo' => 'ç', - 'Öp' => 'ç½', - 'Öq' => 'ç‡', - 'Ör' => 'ç€', - 'Ös' => 'çº', - 'Öt' => 'ç¼', - 'Öu' => 'ç¿', - 'Öv' => 'çŒ', - 'Öw' => 'ç‹', - 'Öx' => 'ç´', - 'Öy' => 'çˆ', - 'Öz' => '畤', - 'Ö{' => 'ç•£', - 'Ö|' => 'ç—Ž', - 'Ö}' => 'ç—’', - 'Ö~' => 'ç—', - 'Ö¡' => 'ç—‹', - 'Ö¢' => 'ç—Œ', - 'Ö£' => 'ç—‘', - 'Ö¤' => 'ç—', - 'Ö¥' => 'çš', - 'Ö¦' => '皉', - 'Ö§' => '盓', - 'Ö¨' => '眹', - 'Ö©' => '眯', - 'Öª' => '眭', - 'Ö«' => '眱', - 'Ö¬' => '眲', - 'Ö­' => '眴', - 'Ö®' => '眳', - 'Ö¯' => '眽', - 'Ö°' => '眥', - 'Ö±' => '眻', - 'Ö²' => '眵', - 'Ö³' => '硈', - 'Ö´' => 'ç¡’', - 'Öµ' => '硉', - 'Ö¶' => 'ç¡', - 'Ö·' => 'ç¡Š', - 'Ö¸' => 'ç¡Œ', - 'Ö¹' => 'ç ¦', - 'Öº' => 'ç¡…', - 'Ö»' => 'ç¡', - 'Ö¼' => '祤', - 'Ö½' => '祧', - 'Ö¾' => '祩', - 'Ö¿' => '祪', - 'ÖÀ' => '祣', - 'ÖÁ' => '祫', - 'ÖÂ' => '祡', - 'ÖÃ' => '离', - 'ÖÄ' => '秺', - 'ÖÅ' => '秸', - 'ÖÆ' => '秶', - 'ÖÇ' => '秷', - 'ÖÈ' => 'çª', - 'ÖÉ' => '窔', - 'ÖÊ' => 'çª', - 'ÖË' => '笵', - 'ÖÌ' => 'ç­‡', - 'ÖÍ' => '笴', - 'ÖÎ' => '笥', - 'ÖÏ' => '笰', - 'ÖÐ' => '笢', - 'ÖÑ' => '笤', - 'ÖÒ' => '笳', - 'ÖÓ' => '笘', - 'ÖÔ' => '笪', - 'ÖÕ' => 'ç¬', - 'ÖÖ' => '笱', - 'Ö×' => '笫', - 'ÖØ' => '笭', - 'ÖÙ' => '笯', - 'ÖÚ' => '笲', - 'ÖÛ' => '笸', - 'ÖÜ' => '笚', - 'ÖÝ' => '笣', - 'ÖÞ' => 'ç²”', - 'Öß' => '粘', - 'Öà' => 'ç²–', - 'Öá' => 'ç²£', - 'Öâ' => 'ç´µ', - 'Öã' => 'ç´½', - 'Öä' => 'ç´¸', - 'Öå' => 'ç´¶', - 'Öæ' => 'ç´º', - 'Öç' => 'çµ…', - 'Öè' => 'ç´¬', - 'Öé' => 'ç´©', - 'Öê' => 'çµ', - 'Öë' => '絇', - 'Öì' => 'ç´¾', - 'Öí' => 'ç´¿', - 'Öî' => '絊', - 'Öï' => 'ç´»', - 'Öð' => 'ç´¨', - 'Öñ' => 'ç½£', - 'Öò' => '羕', - 'Öó' => '羜', - 'Öô' => 'ç¾', - 'Öõ' => 'ç¾›', - 'Öö' => 'ç¿Š', - 'Ö÷' => 'ç¿‹', - 'Öø' => 'ç¿', - 'Öù' => 'ç¿', - 'Öú' => 'ç¿‘', - 'Öû' => '翇', - 'Öü' => 'ç¿', - 'Öý' => '翉', - 'Öþ' => '耟', - '×@' => '耞', - '×A' => '耛', - '×B' => 'è‡', - '×C' => 'èƒ', - '×D' => 'èˆ', - '×E' => '脘', - '×F' => 'è„¥', - '×G' => 'è„™', - '×H' => 'è„›', - '×I' => 'è„­', - '×J' => 'è„Ÿ', - '×K' => '脬', - '×L' => 'è„ž', - '×M' => 'è„¡', - '×N' => 'è„•', - '×O' => '脧', - '×P' => 'è„', - '×Q' => 'è„¢', - '×R' => '舑', - '×S' => '舸', - '×T' => '舳', - '×U' => '舺', - '×V' => '舴', - '×W' => '舲', - '×X' => '艴', - '×Y' => 'èŽ', - '×Z' => '莣', - '×[' => '莨', - '×\\' => 'èŽ', - '×]' => 'èº', - '×^' => 'è³', - '×_' => '莤', - '×`' => 'è´', - '×a' => 'èŽ', - '×b' => 'èŽ', - '×c' => '莕', - '×d' => '莙', - '×e' => 'èµ', - '×f' => '莔', - '×g' => '莩', - '×h' => 'è½', - '×i' => '莃', - '×j' => '莌', - '×k' => 'èŽ', - '×l' => '莛', - '×m' => '莪', - '×n' => '莋', - '×o' => 'è¾', - '×p' => '莥', - '×q' => '莯', - '×r' => '莈', - '×s' => '莗', - '×t' => '莰', - '×u' => 'è¿', - '×v' => '莦', - '×w' => '莇', - '×x' => '莮', - '×y' => 'è¶', - '×z' => '莚', - '×{' => 'è™™', - '×|' => 'è™–', - '×}' => 'èš¿', - '×~' => 'èš·', - 'ס' => '蛂', - '×¢' => 'è›', - '×£' => 'è›…', - 'פ' => '蚺', - '×¥' => 'èš°', - 'צ' => '蛈', - 'ק' => 'èš¹', - 'ר' => 'èš³', - 'ש' => '蚸', - 'ת' => '蛌', - '׫' => 'èš´', - '׬' => 'èš»', - '×­' => 'èš¼', - '×®' => '蛃', - 'ׯ' => 'èš½', - '×°' => 'èš¾', - '×±' => 'è¡’', - 'ײ' => '袉', - '׳' => '袕', - '×´' => '袨', - '×µ' => '袢', - '׶' => '袪', - '×·' => '袚', - '׸' => '袑', - '×¹' => '袡', - '׺' => '袟', - '×»' => '袘', - '×¼' => '袧', - '×½' => '袙', - '×¾' => '袛', - '׿' => '袗', - '×À' => '袤', - '×Á' => '袬', - '×Â' => '袌', - '×Ã' => '袓', - '×Ä' => '袎', - '×Å' => '覂', - '×Æ' => '觖', - '×Ç' => '觙', - '×È' => '觕', - '×É' => '訰', - '×Ê' => '訧', - '×Ë' => '訬', - '×Ì' => '訞', - '×Í' => 'è°¹', - '×Î' => 'è°»', - '×Ï' => '豜', - '×Ð' => 'è±', - '×Ñ' => 'è±½', - '×Ò' => 'è²¥', - '×Ó' => 'èµ½', - '×Ô' => 'èµ»', - '×Õ' => 'èµ¹', - '×Ö' => '趼', - '××' => 'è·‚', - '×Ø' => '趹', - '×Ù' => '趿', - '×Ú' => 'è·', - '×Û' => '軘', - '×Ü' => '軞', - '×Ý' => 'è»', - '×Þ' => '軜', - '×ß' => 'è»—', - '×à' => 'è» ', - '×á' => '軡', - '×â' => '逤', - '×ã' => '逋', - '×ä' => '逑', - '×å' => '逜', - '×æ' => '逌', - '×ç' => '逡', - '×è' => '郯', - '×é' => '郪', - '×ê' => '郰', - '×ë' => '郴', - '×ì' => '郲', - '×í' => '郳', - '×î' => '郔', - '×ï' => '郫', - '×ð' => '郬', - '×ñ' => '郩', - '×ò' => 'é…–', - '×ó' => 'é…˜', - '×ô' => 'é…š', - '×õ' => 'é…“', - '×ö' => 'é…•', - '×÷' => '釬', - '×ø' => '釴', - '×ù' => '釱', - '×ú' => '釳', - '×û' => '釸', - '×ü' => '釤', - '×ý' => '釹', - '×þ' => '釪', - 'Ø@' => '釫', - 'ØA' => '釷', - 'ØB' => '釨', - 'ØC' => '釮', - 'ØD' => '镺', - 'ØE' => 'é–†', - 'ØF' => 'é–ˆ', - 'ØG' => '陼', - 'ØH' => 'é™­', - 'ØI' => '陫', - 'ØJ' => 'é™±', - 'ØK' => '陯', - 'ØL' => 'éš¿', - 'ØM' => 'éª', - 'ØN' => 'é „', - 'ØO' => '飥', - 'ØP' => '馗', - 'ØQ' => 'å‚›', - 'ØR' => 'å‚•', - 'ØS' => 'å‚”', - 'ØT' => 'å‚ž', - 'ØU' => 'å‚‹', - 'ØV' => 'å‚£', - 'ØW' => '傃', - 'ØX' => 'å‚Œ', - 'ØY' => 'å‚Ž', - 'ØZ' => 'å‚', - 'Ø[' => 'å¨', - 'Ø\\' => 'å‚œ', - 'Ø]' => 'å‚’', - 'Ø^' => 'å‚‚', - 'Ø_' => '傇', - 'Ø`' => 'å…Ÿ', - 'Øa' => '凔', - 'Øb' => '匒', - 'Øc' => '匑', - 'Ød' => '厤', - 'Øe' => '厧', - 'Øf' => 'å–‘', - 'Øg' => 'å–¨', - 'Øh' => 'å–¥', - 'Øi' => 'å–­', - 'Øj' => 'å•·', - 'Øk' => 'å™…', - 'Øl' => 'å–¢', - 'Øm' => 'å–“', - 'Øn' => 'å–ˆ', - 'Øo' => 'å–', - 'Øp' => 'å–µ', - 'Øq' => 'å–', - 'Ør' => 'å–£', - 'Øs' => 'å–’', - 'Øt' => 'å–¤', - 'Øu' => '啽', - 'Øv' => 'å–Œ', - 'Øw' => 'å–¦', - 'Øx' => 'å•¿', - 'Øy' => 'å–•', - 'Øz' => 'å–¡', - 'Ø{' => 'å–Ž', - 'Ø|' => '圌', - 'Ø}' => 'å ©', - 'Ø~' => 'å ·', - 'Ø¡' => 'å ™', - 'Ø¢' => 'å ž', - 'Ø£' => 'å §', - 'ؤ' => 'å £', - 'Ø¥' => 'å ¨', - 'ئ' => '埵', - 'ا' => '塈', - 'ب' => 'å ¥', - 'Ø©' => 'å œ', - 'ت' => 'å ›', - 'Ø«' => 'å ³', - 'ج' => 'å ¿', - 'Ø­' => 'å ¶', - 'Ø®' => 'å ®', - 'د' => 'å ¹', - 'Ø°' => 'å ¸', - 'ر' => 'å ­', - 'ز' => 'å ¬', - 'س' => 'å »', - 'Ø´' => '奡', - 'ص' => '媯', - 'ض' => '媔', - 'Ø·' => '媟', - 'ظ' => '婺', - 'ع' => '媢', - 'غ' => '媞', - 'Ø»' => '婸', - 'ؼ' => '媦', - 'ؽ' => '婼', - 'ؾ' => '媥', - 'Ø¿' => '媬', - 'ØÀ' => '媕', - 'ØÁ' => '媮', - 'ØÂ' => '娷', - 'ØÃ' => '媄', - 'ØÄ' => '媊', - 'ØÅ' => '媗', - 'ØÆ' => '媃', - 'ØÇ' => '媋', - 'ØÈ' => '媩', - 'ØÉ' => 'å©»', - 'ØÊ' => '婽', - 'ØË' => '媌', - 'ØÌ' => '媜', - 'ØÍ' => 'åª', - 'ØÎ' => '媓', - 'ØÏ' => 'åª', - 'ØÐ' => '寪', - 'ØÑ' => 'å¯', - 'ØÒ' => '寋', - 'ØÓ' => '寔', - 'ØÔ' => '寑', - 'ØÕ' => '寊', - 'ØÖ' => '寎', - 'Ø×' => 'å°Œ', - 'ØØ' => 'å°°', - 'ØÙ' => 'å´·', - 'ØÚ' => '嵃', - 'ØÛ' => '嵫', - 'ØÜ' => 'åµ', - 'ØÝ' => '嵋', - 'ØÞ' => 'å´¿', - 'Øß' => 'å´µ', - 'Øà' => '嵑', - 'Øá' => '嵎', - 'Øâ' => '嵕', - 'Øã' => 'å´³', - 'Øä' => 'å´º', - 'Øå' => 'åµ’', - 'Øæ' => 'å´½', - 'Øç' => 'å´±', - 'Øè' => 'åµ™', - 'Øé' => '嵂', - 'Øê' => 'å´¹', - 'Øë' => '嵉', - 'Øì' => 'å´¸', - 'Øí' => 'å´¼', - 'Øî' => 'å´²', - 'Øï' => 'å´¶', - 'Øð' => 'åµ€', - 'Øñ' => 'åµ…', - 'Øò' => '幄', - 'Øó' => 'å¹', - 'Øô' => '彘', - 'Øõ' => '徦', - 'Øö' => 'å¾¥', - 'Ø÷' => '徫', - 'Øø' => '惉', - 'Øù' => '悹', - 'Øú' => '惌', - 'Øû' => '惢', - 'Øü' => '惎', - 'Øý' => '惄', - 'Øþ' => 'æ„”', - 'Ù@' => '惲', - 'ÙA' => 'æ„Š', - 'ÙB' => 'æ„–', - 'ÙC' => 'æ„…', - 'ÙD' => '惵', - 'ÙE' => 'æ„“', - 'ÙF' => '惸', - 'ÙG' => '惼', - 'ÙH' => '惾', - 'ÙI' => 'æƒ', - 'ÙJ' => '愃', - 'ÙK' => '愘', - 'ÙL' => 'æ„', - 'ÙM' => 'æ„', - 'ÙN' => '惿', - 'ÙO' => 'æ„„', - 'ÙP' => 'æ„‹', - 'ÙQ' => '扊', - 'ÙR' => '掔', - 'ÙS' => '掱', - 'ÙT' => '掰', - 'ÙU' => 'æŽ', - 'ÙV' => 'æ¥', - 'ÙW' => 'æ¨', - 'ÙX' => 'æ¯', - 'ÙY' => 'æƒ', - 'ÙZ' => 'æ’', - 'Ù[' => 'æ³', - 'Ù\\' => 'æŠ', - 'Ù]' => 'æ ', - 'Ù^' => 'æ¶', - 'Ù_' => 'æ•', - 'Ù`' => 'æ²', - 'Ùa' => 'æµ', - 'Ùb' => 'æ‘¡', - 'Ùc' => 'æŸ', - 'Ùd' => '掾', - 'Ùe' => 'æ', - 'Ùf' => 'æœ', - 'Ùg' => 'æ„', - 'Ùh' => 'æ˜', - 'Ùi' => 'æ“', - 'Ùj' => 'æ‚', - 'Ùk' => 'æ‡', - 'Ùl' => 'æŒ', - 'Ùm' => 'æ‹', - 'Ùn' => 'æˆ', - 'Ùo' => 'æ°', - 'Ùp' => 'æ—', - 'Ùq' => 'æ™', - 'Ùr' => '攲', - 'Ùs' => '敧', - 'Ùt' => '敪', - 'Ùu' => '敤', - 'Ùv' => 'æ•œ', - 'Ùw' => '敨', - 'Ùx' => 'æ•¥', - 'Ùy' => 'æ–Œ', - 'Ùz' => 'æ–', - 'Ù{' => 'æ–ž', - 'Ù|' => 'æ–®', - 'Ù}' => 'æ—', - 'Ù~' => 'æ—’', - 'Ù¡' => '晼', - 'Ù¢' => '晬', - 'Ù£' => 'æ™»', - 'Ù¤' => '暀', - 'Ù¥' => 'æ™±', - 'Ù¦' => '晹', - 'Ù§' => '晪', - 'Ù¨' => '晲', - 'Ù©' => 'æœ', - 'Ùª' => '椌', - 'Ù«' => '棓', - 'Ù¬' => '椄', - 'Ù­' => '棜', - 'Ù®' => '椪', - 'Ù¯' => '棬', - 'Ù°' => '棪', - 'Ù±' => '棱', - 'Ù²' => 'æ¤', - 'Ù³' => '棖', - 'Ù´' => '棷', - 'Ùµ' => '棫', - 'Ù¶' => '棤', - 'Ù·' => '棶', - 'Ù¸' => '椓', - 'Ù¹' => 'æ¤', - 'Ùº' => '棳', - 'Ù»' => '棡', - 'Ù¼' => '椇', - 'Ù½' => '棌', - 'Ù¾' => '椈', - 'Ù¿' => '楰', - 'ÙÀ' => '梴', - 'ÙÁ' => '椑', - 'ÙÂ' => '棯', - 'ÙÃ' => '棆', - 'ÙÄ' => '椔', - 'ÙÅ' => '棸', - 'ÙÆ' => 'æ£', - 'ÙÇ' => '棽', - 'ÙÈ' => '棼', - 'ÙÉ' => '棨', - 'ÙÊ' => '椋', - 'ÙË' => '椊', - 'ÙÌ' => '椗', - 'ÙÍ' => '棎', - 'ÙÎ' => '棈', - 'ÙÏ' => 'æ£', - 'ÙÐ' => '棞', - 'ÙÑ' => '棦', - 'ÙÒ' => '棴', - 'ÙÓ' => '棑', - 'ÙÔ' => '椆', - 'ÙÕ' => '棔', - 'ÙÖ' => '棩', - 'Ù×' => '椕', - 'ÙØ' => '椥', - 'ÙÙ' => '棇', - 'ÙÚ' => '欹', - 'ÙÛ' => '欻', - 'ÙÜ' => '欿', - 'ÙÝ' => '欼', - 'ÙÞ' => 'æ®”', - 'Ùß' => 'æ®—', - 'Ùà' => 'æ®™', - 'Ùá' => '殕', - 'Ùâ' => '殽', - 'Ùã' => '毰', - 'Ùä' => '毲', - 'Ùå' => '毳', - 'Ùæ' => 'æ°°', - 'Ùç' => 'æ·¼', - 'Ùè' => '湆', - 'Ùé' => '湇', - 'Ùê' => '渟', - 'Ùë' => '湉', - 'Ùì' => '溈', - 'Ùí' => '渼', - 'Ùî' => '渽', - 'Ùï' => 'æ¹…', - 'Ùð' => 'æ¹¢', - 'Ùñ' => '渫', - 'Ùò' => '渿', - 'Ùó' => 'æ¹', - 'Ùô' => 'æ¹', - 'Ùõ' => 'æ¹³', - 'Ùö' => '渜', - 'Ù÷' => '渳', - 'Ùø' => '湋', - 'Ùù' => 'æ¹€', - 'Ùú' => '湑', - 'Ùû' => '渻', - 'Ùü' => '渃', - 'Ùý' => '渮', - 'Ùþ' => '湞', - 'Ú@' => '湨', - 'ÚA' => '湜', - 'ÚB' => '湡', - 'ÚC' => '渱', - 'ÚD' => '渨', - 'ÚE' => 'æ¹ ', - 'ÚF' => 'æ¹±', - 'ÚG' => '湫', - 'ÚH' => '渹', - 'ÚI' => '渢', - 'ÚJ' => '渰', - 'ÚK' => '湓', - 'ÚL' => 'æ¹¥', - 'ÚM' => '渧', - 'ÚN' => '湸', - 'ÚO' => '湤', - 'ÚP' => 'æ¹·', - 'ÚQ' => '湕', - 'ÚR' => 'æ¹¹', - 'ÚS' => 'æ¹’', - 'ÚT' => '湦', - 'ÚU' => '渵', - 'ÚV' => '渶', - 'ÚW' => '湚', - 'ÚX' => 'ç„ ', - 'ÚY' => 'ç„ž', - 'ÚZ' => '焯', - 'Ú[' => '烻', - 'Ú\\' => 'ç„®', - 'Ú]' => '焱', - 'Ú^' => 'ç„£', - 'Ú_' => 'ç„¥', - 'Ú`' => 'ç„¢', - 'Úa' => '焲', - 'Úb' => 'ç„Ÿ', - 'Úc' => '焨', - 'Úd' => '焺', - 'Úe' => 'ç„›', - 'Úf' => '牋', - 'Úg' => '牚', - 'Úh' => '犈', - 'Úi' => '犉', - 'Új' => '犆', - 'Úk' => '犅', - 'Úl' => '犋', - 'Úm' => '猒', - 'Ún' => '猋', - 'Úo' => '猰', - 'Úp' => '猢', - 'Úq' => '猱', - 'Úr' => '猳', - 'Ús' => '猧', - 'Út' => '猲', - 'Úu' => '猭', - 'Úv' => '猦', - 'Úw' => '猣', - 'Úx' => '猵', - 'Úy' => '猌', - 'Úz' => 'ç®', - 'Ú{' => 'ç¬', - 'Ú|' => 'ç°', - 'Ú}' => 'ç«', - 'Ú~' => 'ç–', - 'Ú¡' => 'çš', - 'Ú¢' => 'ç¡', - 'Ú£' => 'ç­', - 'Ú¤' => 'ç±', - 'Ú¥' => 'ç¤', - 'Ú¦' => 'ç£', - 'Ú§' => 'ç', - 'Ú¨' => 'ç©', - 'Ú©' => 'ç ', - 'Úª' => 'ç²', - 'Ú«' => 'ç“»', - 'Ú¬' => '甯', - 'Ú­' => '畯', - 'Ú®' => '畬', - 'Ú¯' => 'ç—§', - 'Ú°' => 'ç—š', - 'Ú±' => 'ç—¡', - 'Ú²' => 'ç—¦', - 'Ú³' => 'ç—', - 'Ú´' => 'ç—Ÿ', - 'Úµ' => 'ç—¤', - 'Ú¶' => 'ç——', - 'Ú·' => 'çš•', - 'Ú¸' => 'çš’', - 'Ú¹' => '盚', - 'Úº' => 'ç†', - 'Ú»' => 'ç‡', - 'Ú¼' => 'ç„', - 'Ú½' => 'ç', - 'Ú¾' => 'ç…', - 'Ú¿' => 'çŠ', - 'ÚÀ' => 'çŽ', - 'ÚÁ' => 'ç‹', - 'ÚÂ' => 'çŒ', - 'ÚÃ' => '矞', - 'ÚÄ' => '矬', - 'ÚÅ' => 'ç¡ ', - 'ÚÆ' => '硤', - 'ÚÇ' => 'ç¡¥', - 'ÚÈ' => 'ç¡œ', - 'ÚÉ' => 'ç¡­', - 'ÚÊ' => '硱', - 'ÚË' => '硪', - 'ÚÌ' => 'ç¡®', - 'ÚÍ' => 'ç¡°', - 'ÚÎ' => 'ç¡©', - 'ÚÏ' => '硨', - 'ÚÐ' => 'ç¡ž', - 'ÚÑ' => 'ç¡¢', - 'ÚÒ' => '祴', - 'ÚÓ' => '祳', - 'ÚÔ' => '祲', - 'ÚÕ' => '祰', - 'ÚÖ' => '稂', - 'Ú×' => '稊', - 'ÚØ' => '稃', - 'ÚÙ' => '稌', - 'ÚÚ' => '稄', - 'ÚÛ' => '窙', - 'ÚÜ' => '竦', - 'ÚÝ' => '竤', - 'ÚÞ' => 'ç­Š', - 'Úß' => '笻', - 'Úà' => 'ç­„', - 'Úá' => 'ç­ˆ', - 'Úâ' => 'ç­Œ', - 'Úã' => 'ç­Ž', - 'Úä' => 'ç­€', - 'Úå' => 'ç­˜', - 'Úæ' => 'ç­…', - 'Úç' => 'ç²¢', - 'Úè' => '粞', - 'Úé' => '粨', - 'Úê' => '粡', - 'Úë' => '絘', - 'Úì' => '絯', - 'Úí' => 'çµ£', - 'Úî' => '絓', - 'Úï' => 'çµ–', - 'Úð' => '絧', - 'Úñ' => '絪', - 'Úò' => 'çµ', - 'Úó' => 'çµ­', - 'Úô' => '絜', - 'Úõ' => '絫', - 'Úö' => 'çµ’', - 'Ú÷' => 'çµ”', - 'Úø' => '絩', - 'Úù' => '絑', - 'Úú' => '絟', - 'Úû' => '絎', - 'Úü' => 'ç¼¾', - 'Úý' => '缿', - 'Úþ' => 'ç½¥', - 'Û@' => '罦', - 'ÛA' => 'ç¾¢', - 'ÛB' => 'ç¾ ', - 'ÛC' => '羡', - 'ÛD' => 'ç¿—', - 'ÛE' => 'è‘', - 'ÛF' => 'è', - 'ÛG' => 'è', - 'ÛH' => '胾', - 'ÛI' => '胔', - 'ÛJ' => 'è…ƒ', - 'ÛK' => 'è…Š', - 'ÛL' => 'è…’', - 'ÛM' => 'è…', - 'ÛN' => 'è…‡', - 'ÛO' => '脽', - 'ÛP' => 'è…', - 'ÛQ' => '脺', - 'ÛR' => '臦', - 'ÛS' => '臮', - 'ÛT' => '臷', - 'ÛU' => '臸', - 'ÛV' => '臹', - 'ÛW' => '舄', - 'ÛX' => '舼', - 'ÛY' => '舽', - 'ÛZ' => '舿', - 'Û[' => '艵', - 'Û\\' => '茻', - 'Û]' => 'è', - 'Û^' => 'è¹', - 'Û_' => 'è£', - 'Û`' => 'è€', - 'Ûa' => 'è¨', - 'Ûb' => 'è’', - 'Ûc' => 'è§', - 'Ûd' => 'è¤', - 'Ûe' => 'è¼', - 'Ûf' => 'è¶', - 'Ûg' => 'è', - 'Ûh' => 'è†', - 'Ûi' => 'èˆ', - 'Ûj' => 'è«', - 'Ûk' => 'è£', - 'Ûl' => '莿', - 'Ûm' => 'è', - 'Ûn' => 'è', - 'Ûo' => 'è¥', - 'Ûp' => 'è˜', - 'Ûq' => 'è¿', - 'Ûr' => 'è¡', - 'Ûs' => 'è‹', - 'Ût' => 'èŽ', - 'Ûu' => 'è–', - 'Ûv' => 'èµ', - 'Ûw' => 'è‰', - 'Ûx' => 'è‰', - 'Ûy' => 'è', - 'Ûz' => 'èž', - 'Û{' => 'è‘', - 'Û|' => 'è†', - 'Û}' => 'è‚', - 'Û~' => 'è³', - 'Û¡' => 'è•', - 'Û¢' => 'èº', - 'Û£' => 'è‡', - 'Û¤' => 'è‘', - 'Û¥' => 'èª', - 'Û¦' => 'è“', - 'Û§' => 'èƒ', - 'Û¨' => 'è¬', - 'Û©' => 'è®', - 'Ûª' => 'è„', - 'Û«' => 'è»', - 'Û¬' => 'è—', - 'Û­' => 'è¢', - 'Û®' => 'è›', - 'Û¯' => 'è›', - 'Û°' => 'è¾', - 'Û±' => '蛘', - 'Û²' => '蛢', - 'Û³' => '蛦', - 'Û´' => '蛓', - 'Ûµ' => '蛣', - 'Û¶' => '蛚', - 'Û·' => '蛪', - 'Û¸' => 'è›', - 'Û¹' => '蛫', - 'Ûº' => '蛜', - 'Û»' => '蛬', - 'Û¼' => '蛩', - 'Û½' => 'è›—', - 'Û¾' => '蛨', - 'Û¿' => '蛑', - 'ÛÀ' => '衈', - 'ÛÁ' => 'è¡–', - 'ÛÂ' => 'è¡•', - 'ÛÃ' => '袺', - 'ÛÄ' => '裗', - 'ÛÅ' => '袹', - 'ÛÆ' => '袸', - 'ÛÇ' => '裀', - 'ÛÈ' => '袾', - 'ÛÉ' => '袶', - 'ÛÊ' => '袼', - 'ÛË' => '袷', - 'ÛÌ' => '袽', - 'ÛÍ' => '袲', - 'ÛÎ' => 'è¤', - 'ÛÏ' => '裉', - 'ÛÐ' => '覕', - 'ÛÑ' => '覘', - 'ÛÒ' => '覗', - 'ÛÓ' => 'è§', - 'ÛÔ' => '觚', - 'ÛÕ' => '觛', - 'ÛÖ' => 'è©Ž', - 'Û×' => 'è©', - 'ÛØ' => '訹', - 'ÛÙ' => 'è©™', - 'ÛÚ' => 'è©€', - 'ÛÛ' => 'è©—', - 'ÛÜ' => '詘', - 'ÛÝ' => 'è©„', - 'ÛÞ' => 'è©…', - 'Ûß' => 'è©’', - 'Ûà' => '詈', - 'Ûá' => 'è©‘', - 'Ûâ' => 'è©Š', - 'Ûã' => 'è©Œ', - 'Ûä' => 'è©', - 'Ûå' => '豟', - 'Ûæ' => 'è²', - 'Ûç' => 'è²€', - 'Ûè' => '貺', - 'Ûé' => 'è²¾', - 'Ûê' => 'è²°', - 'Ûë' => 'è²¹', - 'Ûì' => 'è²µ', - 'Ûí' => '趄', - 'Ûî' => '趀', - 'Ûï' => '趉', - 'Ûð' => 'è·˜', - 'Ûñ' => 'è·“', - 'Ûò' => 'è·', - 'Ûó' => 'è·‡', - 'Ûô' => 'è·–', - 'Ûõ' => 'è·œ', - 'Ûö' => 'è·', - 'Û÷' => 'è·•', - 'Ûø' => 'è·™', - 'Ûù' => 'è·ˆ', - 'Ûú' => 'è·—', - 'Ûû' => 'è·…', - 'Ûü' => '軯', - 'Ûý' => 'è»·', - 'Ûþ' => '軺', - 'Ü@' => '軹', - 'ÜA' => '軦', - 'ÜB' => 'è»®', - 'ÜC' => '軥', - 'ÜD' => '軵', - 'ÜE' => '軧', - 'ÜF' => '軨', - 'ÜG' => '軶', - 'ÜH' => '軫', - 'ÜI' => 'è»±', - 'ÜJ' => '軬', - 'ÜK' => 'è»´', - 'ÜL' => '軩', - 'ÜM' => '逭', - 'ÜN' => '逴', - 'ÜO' => '逯', - 'ÜP' => '鄆', - 'ÜQ' => '鄬', - 'ÜR' => 'é„„', - 'ÜS' => '郿', - 'ÜT' => '郼', - 'ÜU' => '鄈', - 'ÜV' => '郹', - 'ÜW' => '郻', - 'ÜX' => 'é„', - 'ÜY' => 'é„€', - 'ÜZ' => '鄇', - 'Ü[' => 'é„…', - 'Ü\\' => '鄃', - 'Ü]' => 'é…¡', - 'Ü^' => 'é…¤', - 'Ü_' => 'é…Ÿ', - 'Ü`' => 'é…¢', - 'Üa' => 'é… ', - 'Üb' => 'éˆ', - 'Üc' => '鈊', - 'Üd' => '鈥', - 'Üe' => '鈃', - 'Üf' => '鈚', - 'Üg' => '鈦', - 'Üh' => 'éˆ', - 'Üi' => '鈌', - 'Üj' => '鈀', - 'Ük' => '鈒', - 'Ül' => '釿', - 'Üm' => '釽', - 'Ün' => '鈆', - 'Üo' => '鈄', - 'Üp' => '鈧', - 'Üq' => '鈂', - 'Ür' => '鈜', - 'Üs' => '鈤', - 'Üt' => '鈙', - 'Üu' => '鈗', - 'Üv' => '鈅', - 'Üw' => '鈖', - 'Üx' => 'é•»', - 'Üy' => 'é–', - 'Üz' => 'é–Œ', - 'Ü{' => 'é–', - 'Ü|' => '隇', - 'Ü}' => '陾', - 'Ü~' => '隈', - 'Ü¡' => '隉', - 'Ü¢' => '隃', - 'Ü£' => '隀', - 'ܤ' => '雂', - 'Ü¥' => '雈', - 'ܦ' => '雃', - 'ܧ' => 'é›±', - 'ܨ' => 'é›°', - 'Ü©' => 'é¬', - 'ܪ' => 'é°', - 'Ü«' => 'é®', - 'ܬ' => 'é ‡', - 'Ü­' => '颩', - 'Ü®' => '飫', - 'ܯ' => '鳦', - 'Ü°' => '黹', - 'ܱ' => '亃', - 'ܲ' => '亄', - 'ܳ' => '亶', - 'Ü´' => '傽', - 'ܵ' => 'å‚¿', - 'ܶ' => '僆', - 'Ü·' => 'å‚®', - 'ܸ' => '僄', - 'ܹ' => '僊', - 'ܺ' => 'å‚´', - 'Ü»' => '僈', - 'ܼ' => '僂', - 'ܽ' => 'å‚°', - 'ܾ' => 'åƒ', - 'Ü¿' => '傺', - 'ÜÀ' => '傱', - 'ÜÁ' => '僋', - 'ÜÂ' => '僉', - 'ÜÃ' => '傶', - 'ÜÄ' => '傸', - 'ÜÅ' => '凗', - 'ÜÆ' => '剺', - 'ÜÇ' => '剸', - 'ÜÈ' => '剻', - 'ÜÉ' => '剼', - 'ÜÊ' => 'å—ƒ', - 'ÜË' => 'å—›', - 'ÜÌ' => 'å—Œ', - 'ÜÍ' => 'å—', - 'ÜÎ' => 'å—‹', - 'ÜÏ' => 'å—Š', - 'ÜÐ' => 'å—', - 'ÜÑ' => 'å—€', - 'ÜÒ' => 'å—”', - 'ÜÓ' => 'å—„', - 'ÜÔ' => 'å—©', - 'ÜÕ' => 'å–¿', - 'ÜÖ' => 'å—’', - 'Ü×' => 'å–', - 'ÜØ' => 'å—', - 'ÜÙ' => 'å—•', - 'ÜÚ' => 'å—¢', - 'ÜÛ' => 'å—–', - 'ÜÜ' => 'å—ˆ', - 'ÜÝ' => 'å—²', - 'ÜÞ' => 'å—', - 'Üß' => 'å—™', - 'Üà' => 'å—‚', - 'Üá' => '圔', - 'Üâ' => 'å¡“', - 'Üã' => '塨', - 'Üä' => '塤', - 'Üå' => 'å¡', - 'Üæ' => 'å¡', - 'Üç' => '塉', - 'Üè' => '塯', - 'Üé' => 'å¡•', - 'Üê' => 'å¡Ž', - 'Üë' => 'å¡', - 'Üì' => 'å¡™', - 'Üí' => 'å¡¥', - 'Üî' => 'å¡›', - 'Üï' => 'å ½', - 'Üð' => 'å¡£', - 'Üñ' => '塱', - 'Üò' => '壼', - 'Üó' => '嫇', - 'Üô' => 'å«„', - 'Üõ' => 'å«‹', - 'Üö' => '媺', - 'Ü÷' => '媸', - 'Üø' => '媱', - 'Üù' => '媵', - 'Üú' => '媰', - 'Üû' => '媿', - 'Üü' => '嫈', - 'Üý' => '媻', - 'Üþ' => '嫆', - 'Ý@' => '媷', - 'ÝA' => 'å«€', - 'ÝB' => 'å«Š', - 'ÝC' => '媴', - 'ÝD' => '媶', - 'ÝE' => 'å«', - 'ÝF' => '媹', - 'ÝG' => 'åª', - 'ÝH' => '寖', - 'ÝI' => '寘', - 'ÝJ' => '寙', - 'ÝK' => 'å°Ÿ', - 'ÝL' => 'å°³', - 'ÝM' => 'åµ±', - 'ÝN' => 'åµ£', - 'ÝO' => '嵊', - 'ÝP' => 'åµ¥', - 'ÝQ' => 'åµ²', - 'ÝR' => '嵬', - 'ÝS' => '嵞', - 'ÝT' => '嵨', - 'ÝU' => '嵧', - 'ÝV' => 'åµ¢', - 'ÝW' => 'å·°', - 'ÝX' => 'å¹', - 'ÝY' => '幎', - 'ÝZ' => '幊', - 'Ý[' => 'å¹', - 'Ý\\' => '幋', - 'Ý]' => 'å»…', - 'Ý^' => '廌', - 'Ý_' => '廆', - 'Ý`' => '廋', - 'Ýa' => '廇', - 'Ýb' => 'å½€', - 'Ýc' => '徯', - 'Ýd' => 'å¾­', - 'Ýe' => '惷', - 'Ýf' => 'æ…‰', - 'Ýg' => 'æ…Š', - 'Ýh' => 'æ„«', - 'Ýi' => 'æ……', - 'Ýj' => '愶', - 'Ýk' => '愲', - 'Ýl' => 'æ„®', - 'Ým' => 'æ…†', - 'Ýn' => '愯', - 'Ýo' => 'æ…', - 'Ýp' => 'æ„©', - 'Ýq' => 'æ…€', - 'Ýr' => '戠', - 'Ýs' => 'é…¨', - 'Ýt' => '戣', - 'Ýu' => '戥', - 'Ýv' => '戤', - 'Ýw' => 'æ…', - 'Ýx' => 'æ±', - 'Ýy' => 'æ«', - 'Ýz' => 'æ', - 'Ý{' => 'æ’', - 'Ý|' => 'æ‰', - 'Ý}' => 'æ ', - 'Ý~' => 'æ¤', - 'Ý¡' => 'æ³', - 'Ý¢' => '摃', - 'Ý£' => 'æŸ', - 'ݤ' => 'æ•', - 'Ý¥' => 'æ˜', - 'ݦ' => 'æ¹', - 'ݧ' => 'æ·', - 'ݨ' => 'æ¢', - 'Ý©' => 'æ£', - 'ݪ' => 'æŒ', - 'Ý«' => 'æ¦', - 'ݬ' => 'æ°', - 'Ý­' => 'æ¨', - 'Ý®' => 'æ‘', - 'ݯ' => 'æµ', - 'Ý°' => 'æ¯', - 'ݱ' => 'æŠ', - 'ݲ' => 'æš', - 'ݳ' => 'æ‘€', - 'Ý´' => 'æ¥', - 'ݵ' => 'æ§', - 'ݶ' => 'æ‹', - 'Ý·' => 'æ§', - 'ݸ' => 'æ›', - 'ݹ' => 'æ®', - 'ݺ' => 'æ¡', - 'Ý»' => 'æŽ', - 'ݼ' => '敯', - 'ݽ' => 'æ–’', - 'ݾ' => 'æ—“', - 'Ý¿' => '暆', - 'ÝÀ' => '暌', - 'ÝÁ' => 'æš•', - 'ÝÂ' => 'æš', - 'ÝÃ' => 'æš‹', - 'ÝÄ' => '暊', - 'ÝÅ' => 'æš™', - 'ÝÆ' => 'æš”', - 'ÝÇ' => '晸', - 'ÝÈ' => '朠', - 'ÝÉ' => '楦', - 'ÝÊ' => '楟', - 'ÝË' => '椸', - 'ÝÌ' => '楎', - 'ÝÍ' => '楢', - 'ÝÎ' => '楱', - 'ÝÏ' => '椿', - 'ÝÐ' => '楅', - 'ÝÑ' => '楪', - 'ÝÒ' => '椹', - 'ÝÓ' => '楂', - 'ÝÔ' => '楗', - 'ÝÕ' => '楙', - 'ÝÖ' => '楺', - 'Ý×' => '楈', - 'ÝØ' => '楉', - 'ÝÙ' => '椵', - 'ÝÚ' => '楬', - 'ÝÛ' => '椳', - 'ÝÜ' => '椽', - 'ÝÝ' => '楥', - 'ÝÞ' => '棰', - 'Ýß' => '楸', - 'Ýà' => '椴', - 'Ýá' => '楩', - 'Ýâ' => '楀', - 'Ýã' => '楯', - 'Ýä' => '楄', - 'Ýå' => '楶', - 'Ýæ' => '楘', - 'Ýç' => 'æ¥', - 'Ýè' => '楴', - 'Ýé' => '楌', - 'Ýê' => '椻', - 'Ýë' => '楋', - 'Ýì' => '椷', - 'Ýí' => '楜', - 'Ýî' => 'æ¥', - 'Ýï' => '楑', - 'Ýð' => '椲', - 'Ýñ' => '楒', - 'Ýò' => '椯', - 'Ýó' => '楻', - 'Ýô' => '椼', - 'Ýõ' => 'æ­†', - 'Ýö' => 'æ­…', - 'Ý÷' => 'æ­ƒ', - 'Ýø' => 'æ­‚', - 'Ýù' => 'æ­ˆ', - 'Ýú' => 'æ­', - 'Ýû' => 'æ®›', - 'Ýü' => 'ï¨', - 'Ýý' => '毻', - 'Ýþ' => '毼', - 'Þ@' => '毹', - 'ÞA' => '毷', - 'ÞB' => '毸', - 'ÞC' => '溛', - 'ÞD' => 'æ»–', - 'ÞE' => '滈', - 'ÞF' => 'æº', - 'ÞG' => '滀', - 'ÞH' => '溟', - 'ÞI' => '溓', - 'ÞJ' => '溔', - 'ÞK' => '溠', - 'ÞL' => '溱', - 'ÞM' => '溹', - 'ÞN' => '滆', - 'ÞO' => 'æ»’', - 'ÞP' => '溽', - 'ÞQ' => 'æ»', - 'ÞR' => '溞', - 'ÞS' => '滉', - 'ÞT' => '溷', - 'ÞU' => '溰', - 'ÞV' => 'æ»', - 'ÞW' => '溦', - 'ÞX' => 'æ»', - 'ÞY' => '溲', - 'ÞZ' => '溾', - 'Þ[' => '滃', - 'Þ\\' => '滜', - 'Þ]' => '滘', - 'Þ^' => '溙', - 'Þ_' => '溒', - 'Þ`' => '溎', - 'Þa' => 'æº', - 'Þb' => '溤', - 'Þc' => '溡', - 'Þd' => '溿', - 'Þe' => '溳', - 'Þf' => 'æ»', - 'Þg' => '滊', - 'Þh' => '溗', - 'Þi' => '溮', - 'Þj' => '溣', - 'Þk' => 'ç…‡', - 'Þl' => 'ç…”', - 'Þm' => 'ç…’', - 'Þn' => 'ç…£', - 'Þo' => 'ç… ', - 'Þp' => 'ç…', - 'Þq' => 'ç…', - 'Þr' => 'ç…¢', - 'Þs' => 'ç…²', - 'Þt' => 'ç…¸', - 'Þu' => 'ç…ª', - 'Þv' => 'ç…¡', - 'Þw' => 'ç…‚', - 'Þx' => 'ç…˜', - 'Þy' => 'ç…ƒ', - 'Þz' => 'ç…‹', - 'Þ{' => 'ç…°', - 'Þ|' => 'ç…Ÿ', - 'Þ}' => 'ç…', - 'Þ~' => 'ç…“', - 'Þ¡' => 'ç…„', - 'Þ¢' => 'ç…', - 'Þ£' => 'ç…š', - 'Þ¤' => 'ç‰', - 'Þ¥' => 'çŠ', - 'Þ¦' => '犌', - 'Þ§' => '犑', - 'Þ¨' => 'çŠ', - 'Þ©' => '犎', - 'Þª' => '猼', - 'Þ«' => 'ç‚', - 'Þ¬' => '猻', - 'Þ­' => '猺', - 'Þ®' => 'ç€', - 'Þ¯' => 'çŠ', - 'Þ°' => 'ç‰', - 'Þ±' => 'ç‘„', - 'Þ²' => 'ç‘Š', - 'Þ³' => 'ç‘‹', - 'Þ´' => 'ç‘’', - 'Þµ' => 'ç‘‘', - 'Þ¶' => 'ç‘—', - 'Þ·' => 'ç‘€', - 'Þ¸' => 'ç‘', - 'Þ¹' => 'ç‘', - 'Þº' => 'ç‘Ž', - 'Þ»' => 'ç‘‚', - 'Þ¼' => '瑆', - 'Þ½' => 'ç‘', - 'Þ¾' => 'ç‘”', - 'Þ¿' => 'ç“¡', - 'ÞÀ' => 'ç“¿', - 'ÞÁ' => '瓾', - 'ÞÂ' => '瓽', - 'ÞÃ' => 'ç”', - 'ÞÄ' => '畹', - 'ÞÅ' => 'ç•·', - 'ÞÆ' => '榃', - 'ÞÇ' => 'ç—¯', - 'ÞÈ' => 'ç˜', - 'ÞÉ' => '瘃', - 'ÞÊ' => 'ç—·', - 'ÞË' => 'ç—¾', - 'ÞÌ' => 'ç—¼', - 'ÞÍ' => 'ç—¹', - 'ÞÎ' => 'ç—¸', - 'ÞÏ' => 'ç˜', - 'ÞÐ' => 'ç—»', - 'ÞÑ' => 'ç—¶', - 'ÞÒ' => 'ç—­', - 'ÞÓ' => 'ç—µ', - 'ÞÔ' => 'ç—½', - 'ÞÕ' => 'çš™', - 'ÞÖ' => 'çšµ', - 'Þ×' => 'ç›', - 'ÞØ' => 'ç•', - 'ÞÙ' => 'çŸ', - 'ÞÚ' => 'ç ', - 'ÞÛ' => 'ç’', - 'ÞÜ' => 'ç–', - 'ÞÝ' => 'çš', - 'ÞÞ' => 'ç©', - 'Þß' => 'ç§', - 'Þà' => 'ç”', - 'Þá' => 'ç™', - 'Þâ' => 'ç­', - 'Þã' => '矠', - 'Þä' => '碇', - 'Þå' => '碚', - 'Þæ' => '碔', - 'Þç' => 'ç¢', - 'Þè' => '碄', - 'Þé' => '碕', - 'Þê' => '碅', - 'Þë' => '碆', - 'Þì' => '碡', - 'Þí' => '碃', - 'Þî' => '硹', - 'Þï' => '碙', - 'Þð' => '碀', - 'Þñ' => '碖', - 'Þò' => 'ç¡»', - 'Þó' => '祼', - 'Þô' => '禂', - 'Þõ' => '祽', - 'Þö' => '祹', - 'Þ÷' => '稑', - 'Þø' => '稘', - 'Þù' => '稙', - 'Þú' => '稒', - 'Þû' => '稗', - 'Þü' => '稕', - 'Þý' => '稢', - 'Þþ' => '稓', - 'ß@' => '稛', - 'ßA' => 'ç¨', - 'ßB' => '窣', - 'ßC' => '窢', - 'ßD' => '窞', - 'ßE' => 'ç««', - 'ßF' => 'ç­¦', - 'ßG' => 'ç­¤', - 'ßH' => 'ç­­', - 'ßI' => 'ç­´', - 'ßJ' => 'ç­©', - 'ßK' => 'ç­²', - 'ßL' => 'ç­¥', - 'ßM' => 'ç­³', - 'ßN' => 'ç­±', - 'ßO' => 'ç­°', - 'ßP' => 'ç­¡', - 'ßQ' => 'ç­¸', - 'ßR' => 'ç­¶', - 'ßS' => 'ç­£', - 'ßT' => 'ç²²', - 'ßU' => 'ç²´', - 'ßV' => '粯', - 'ßW' => '綈', - 'ßX' => '綆', - 'ßY' => '綀', - 'ßZ' => 'ç¶', - 'ß[' => '絿', - 'ß\\' => '綅', - 'ß]' => '絺', - 'ß^' => '綎', - 'ß_' => 'çµ»', - 'ß`' => '綃', - 'ßa' => 'çµ¼', - 'ßb' => '綌', - 'ßc' => '綔', - 'ßd' => '綄', - 'ße' => 'çµ½', - 'ßf' => '綒', - 'ßg' => 'ç½­', - 'ßh' => '罫', - 'ßi' => '罧', - 'ßj' => '罨', - 'ßk' => '罬', - 'ßl' => '羦', - 'ßm' => 'ç¾¥', - 'ßn' => '羧', - 'ßo' => 'ç¿›', - 'ßp' => 'ç¿œ', - 'ßq' => '耡', - 'ßr' => 'è…¤', - 'ßs' => 'è… ', - 'ßt' => 'è…·', - 'ßu' => 'è…œ', - 'ßv' => 'è…©', - 'ßw' => 'è…›', - 'ßx' => 'è…¢', - 'ßy' => 'è…²', - 'ßz' => '朡', - 'ß{' => 'è…ž', - 'ß|' => 'è…¶', - 'ß}' => 'è…§', - 'ß~' => 'è…¯', - 'ß¡' => 'è…„', - 'ߢ' => 'è…¡', - 'ߣ' => 'èˆ', - 'ߤ' => '艉', - 'ߥ' => '艄', - 'ߦ' => '艀', - 'ߧ' => '艂', - 'ߨ' => '艅', - 'ß©' => '蓱', - 'ߪ' => 'è¿', - 'ß«' => 'è‘–', - '߬' => '葶', - 'ß­' => '葹', - 'ß®' => 'è’', - '߯' => 'è’', - 'ß°' => 'è‘¥', - 'ß±' => 'è‘‘', - 'ß²' => 'è‘€', - 'ß³' => 'è’†', - 'ß´' => '葧', - 'ßµ' => 'è°', - '߶' => 'è‘', - 'ß·' => '葽', - '߸' => 'è‘š', - 'ß¹' => 'è‘™', - 'ߺ' => 'è‘´', - 'ß»' => '葳', - 'ß¼' => 'è‘', - 'ß½' => '蔇', - 'ß¾' => 'è‘ž', - 'ß¿' => 'è·', - 'ßÀ' => 'èº', - 'ßÁ' => 'è´', - 'ßÂ' => '葺', - 'ßÃ' => '葃', - 'ßÄ' => '葸', - 'ßÅ' => 'è²', - 'ßÆ' => 'è‘…', - 'ßÇ' => 'è©', - 'ßÈ' => 'è™', - 'ßÉ' => 'è‘‹', - 'ßÊ' => 'è¯', - 'ßË' => 'è‘‚', - 'ßÌ' => 'è­', - 'ßÍ' => 'è‘Ÿ', - 'ßÎ' => 'è‘°', - 'ßÏ' => 'è¹', - 'ßÐ' => 'è‘Ž', - 'ßÑ' => 'è‘Œ', - 'ßÒ' => 'è‘’', - 'ßÓ' => '葯', - 'ßÔ' => 'è“…', - 'ßÕ' => 'è’Ž', - 'ßÖ' => 'è»', - 'ß×' => '葇', - 'ßØ' => 'è¶', - 'ßÙ' => 'è³', - 'ßÚ' => '葨', - 'ßÛ' => '葾', - 'ßÜ' => 'è‘„', - 'ßÝ' => 'è«', - 'ßÞ' => 'è‘ ', - 'ßß' => 'è‘”', - 'ßà' => 'è‘®', - 'ßá' => 'è‘', - 'ßâ' => '蜋', - 'ßã' => '蜄', - 'ßä' => 'è›·', - 'ßå' => '蜌', - 'ßæ' => '蛺', - 'ßç' => 'è›–', - 'ßè' => '蛵', - 'ßé' => 'è', - 'ßê' => '蛸', - 'ßë' => '蜎', - 'ßì' => '蜉', - 'ßí' => 'èœ', - 'ßî' => '蛶', - 'ßï' => 'èœ', - 'ßð' => '蜅', - 'ßñ' => '裖', - 'ßò' => '裋', - 'ßó' => 'è£', - 'ßô' => '裎', - 'ßõ' => '裞', - 'ßö' => '裛', - 'ß÷' => '裚', - 'ßø' => '裌', - 'ßù' => 'è£', - 'ßú' => '覅', - 'ßû' => '覛', - 'ßü' => '觟', - 'ßý' => '觥', - 'ßþ' => '觤', - 'à@' => '觡', - 'àA' => '觠', - 'àB' => '觢', - 'àC' => '觜', - 'àD' => '触', - 'àE' => '詶', - 'àF' => '誆', - 'àG' => 'è©¿', - 'àH' => 'è©¡', - 'àI' => '訿', - 'àJ' => 'è©·', - 'àK' => '誂', - 'àL' => '誄', - 'àM' => '詵', - 'àN' => '誃', - 'àO' => 'èª', - 'àP' => 'è©´', - 'àQ' => '詺', - 'àR' => 'è°¼', - 'àS' => '豋', - 'àT' => '豊', - 'àU' => 'è±¥', - 'àV' => '豤', - 'àW' => '豦', - 'àX' => '貆', - 'àY' => '貄', - 'àZ' => 'è²…', - 'à[' => '賌', - 'à\\' => '赨', - 'à]' => '赩', - 'à^' => '趑', - 'à_' => '趌', - 'à`' => '趎', - 'àa' => 'è¶', - 'àb' => 'è¶', - 'àc' => '趓', - 'àd' => '趔', - 'àe' => 'è¶', - 'àf' => '趒', - 'àg' => 'è·°', - 'àh' => 'è· ', - 'ài' => 'è·¬', - 'àj' => 'è·±', - 'àk' => 'è·®', - 'àl' => 'è·', - 'àm' => 'è·©', - 'àn' => 'è·£', - 'ào' => 'è·¢', - 'àp' => 'è·§', - 'àq' => 'è·²', - 'àr' => 'è·«', - 'às' => 'è·´', - 'àt' => '輆', - 'àu' => '軿', - 'àv' => 'è¼', - 'àw' => 'è¼€', - 'àx' => 'è¼…', - 'ày' => '輇', - 'àz' => '輈', - 'à{' => '輂', - 'à|' => '輋', - 'à}' => 'é’', - 'à~' => '逿', - 'à¡' => 'é„', - 'à¢' => 'é‰', - 'à£' => '逽', - 'à¤' => 'é„', - 'à¥' => 'é„', - 'à¦' => 'é„', - 'à§' => 'é„‘', - 'à¨' => 'é„–', - 'à©' => 'é„”', - 'àª' => 'é„‹', - 'à«' => 'é„Ž', - 'à¬' => 'é…®', - 'à­' => 'é…¯', - 'à®' => '鉈', - 'à¯' => '鉒', - 'à°' => '鈰', - 'à±' => '鈺', - 'à²' => '鉦', - 'à³' => '鈳', - 'à´' => '鉥', - 'àµ' => '鉞', - 'à¶' => '銃', - 'à·' => '鈮', - 'à¸' => '鉊', - 'à¹' => '鉆', - 'àº' => '鉭', - 'à»' => '鉬', - 'à¼' => 'é‰', - 'à½' => '鉠', - 'à¾' => '鉧', - 'à¿' => '鉯', - 'àÀ' => '鈶', - 'àÁ' => '鉡', - 'àÂ' => '鉰', - 'àÃ' => '鈱', - 'àÄ' => '鉔', - 'àÅ' => '鉣', - 'àÆ' => 'é‰', - 'àÇ' => '鉲', - 'àÈ' => '鉎', - 'àÉ' => '鉓', - 'àÊ' => '鉌', - 'àË' => '鉖', - 'àÌ' => '鈲', - 'àÍ' => 'é–Ÿ', - 'àÎ' => 'é–œ', - 'àÏ' => 'é–ž', - 'àÐ' => 'é–›', - 'àÑ' => 'éš’', - 'àÒ' => 'éš“', - 'àÓ' => 'éš‘', - 'àÔ' => 'éš—', - 'àÕ' => '雎', - 'àÖ' => '雺', - 'à×' => '雽', - 'àØ' => '雸', - 'àÙ' => '雵', - 'àÚ' => 'é³', - 'àÛ' => 'é·', - 'àÜ' => 'é¸', - 'àÝ' => 'é²', - 'àÞ' => 'é ', - 'àß' => 'é ', - 'àà' => 'é Ž', - 'àá' => '颬', - 'àâ' => '飶', - 'àã' => '飹', - 'àä' => '馯', - 'àå' => '馲', - 'àæ' => '馰', - 'àç' => '馵', - 'àè' => '骭', - 'àé' => '骫', - 'àê' => 'é­›', - 'àë' => '鳪', - 'àì' => 'é³­', - 'àí' => '鳧', - 'àî' => '麀', - 'àï' => '黽', - 'àð' => '僦', - 'àñ' => '僔', - 'àò' => '僗', - 'àó' => '僨', - 'àô' => '僳', - 'àõ' => '僛', - 'àö' => '僪', - 'à÷' => 'åƒ', - 'àø' => '僤', - 'àù' => '僓', - 'àú' => '僬', - 'àû' => '僰', - 'àü' => '僯', - 'àý' => '僣', - 'àþ' => '僠', - 'á@' => '凘', - 'áA' => '劀', - 'áB' => 'åŠ', - 'áC' => 'å‹©', - 'áD' => 'å‹«', - 'áE' => '匰', - 'áF' => '厬', - 'áG' => '嘧', - 'áH' => '嘕', - 'áI' => '嘌', - 'áJ' => '嘒', - 'áK' => 'å—¼', - 'áL' => 'å˜', - 'áM' => '嘜', - 'áN' => 'å˜', - 'áO' => '嘓', - 'áP' => '嘂', - 'áQ' => 'å—º', - 'áR' => 'å˜', - 'áS' => '嘄', - 'áT' => 'å—¿', - 'áU' => 'å—¹', - 'áV' => '墉', - 'áW' => '塼', - 'áX' => 'å¢', - 'áY' => '墘', - 'áZ' => '墆', - 'á[' => 'å¢', - 'á\\' => 'å¡¿', - 'á]' => 'å¡´', - 'á^' => '墋', - 'á_' => '塺', - 'á`' => '墇', - 'áa' => '墑', - 'áb' => '墎', - 'ác' => '塶', - 'ád' => '墂', - 'áe' => '墈', - 'áf' => 'å¡»', - 'ág' => '墔', - 'áh' => 'å¢', - 'ái' => '壾', - 'áj' => '奫', - 'ák' => 'å«œ', - 'ál' => 'å«®', - 'ám' => 'å«¥', - 'án' => 'å«•', - 'áo' => '嫪', - 'áp' => 'å«š', - 'áq' => 'å«­', - 'ár' => 'å««', - 'ás' => '嫳', - 'át' => 'å«¢', - 'áu' => 'å« ', - 'áv' => 'å«›', - 'áw' => '嫬', - 'áx' => 'å«ž', - 'áy' => 'å«', - 'áz' => 'å«™', - 'á{' => '嫨', - 'á|' => 'å«Ÿ', - 'á}' => 'å­·', - 'á~' => '寠', - 'á¡' => '寣', - 'á¢' => 'å±£', - 'á£' => '嶂', - 'á¤' => '嶀', - 'á¥' => 'åµ½', - 'á¦' => '嶆', - 'á§' => '嵺', - 'á¨' => 'å¶', - 'á©' => 'åµ·', - 'áª' => '嶊', - 'á«' => '嶉', - 'á¬' => '嶈', - 'á­' => 'åµ¾', - 'á®' => 'åµ¼', - 'á¯' => 'å¶', - 'á°' => 'åµ¹', - 'á±' => '嵿', - 'á²' => '幘', - 'á³' => 'å¹™', - 'á´' => '幓', - 'áµ' => '廘', - 'á¶' => '廑', - 'á·' => 'å»—', - 'á¸' => '廎', - 'á¹' => '廜', - 'áº' => '廕', - 'á»' => 'å»™', - 'á¼' => 'å»’', - 'á½' => 'å»”', - 'á¾' => '彄', - 'á¿' => '彃', - 'áÀ' => '彯', - 'áÁ' => '徶', - 'áÂ' => '愬', - 'áÃ' => '愨', - 'áÄ' => 'æ…', - 'áÅ' => 'æ…ž', - 'áÆ' => 'æ…±', - 'áÇ' => 'æ…³', - 'áÈ' => 'æ…’', - 'áÉ' => 'æ…“', - 'áÊ' => 'æ…²', - 'áË' => 'æ…¬', - 'áÌ' => '憀', - 'áÍ' => 'æ…´', - 'áÎ' => 'æ…”', - 'áÏ' => 'æ…º', - 'áÐ' => 'æ…›', - 'áÑ' => 'æ…¥', - 'áÒ' => 'æ„»', - 'áÓ' => 'æ…ª', - 'áÔ' => 'æ…¡', - 'áÕ' => 'æ…–', - 'áÖ' => '戩', - 'á×' => '戧', - 'áØ' => '戫', - 'áÙ' => 'æ«', - 'áÚ' => 'æ‘', - 'áÛ' => 'æ‘›', - 'áÜ' => 'æ‘', - 'áÝ' => 'æ‘´', - 'áÞ' => '摶', - 'áß' => '摲', - 'áà' => '摳', - 'áá' => '摽', - 'áâ' => '摵', - 'áã' => '摦', - 'áä' => 'æ’¦', - 'áå' => 'æ‘Ž', - 'áæ' => 'æ’‚', - 'áç' => 'æ‘ž', - 'áè' => 'æ‘œ', - 'áé' => 'æ‘‹', - 'áê' => 'æ‘“', - 'áë' => 'æ‘ ', - 'áì' => 'æ‘', - 'áí' => 'æ‘¿', - 'áî' => 'æ¿', - 'áï' => '摬', - 'áð' => 'æ‘«', - 'áñ' => 'æ‘™', - 'áò' => 'æ‘¥', - 'áó' => 'æ‘·', - 'áô' => '敳', - 'áõ' => 'æ– ', - 'áö' => 'æš¡', - 'á÷' => 'æš ', - 'áø' => '暟', - 'áù' => '朅', - 'áú' => '朄', - 'áû' => '朢', - 'áü' => '榱', - 'áý' => '榶', - 'áþ' => '槉', - 'â@' => '榠', - 'âA' => '槎', - 'âB' => '榖', - 'âC' => '榰', - 'âD' => '榬', - 'âE' => '榼', - 'âF' => '榑', - 'âG' => '榙', - 'âH' => '榎', - 'âI' => '榧', - 'âJ' => 'æ¦', - 'âK' => '榩', - 'âL' => '榾', - 'âM' => '榯', - 'âN' => '榿', - 'âO' => '槄', - 'âP' => '榽', - 'âQ' => '榤', - 'âR' => '槔', - 'âS' => '榹', - 'âT' => '槊', - 'âU' => '榚', - 'âV' => 'æ§', - 'âW' => '榳', - 'âX' => '榓', - 'âY' => '榪', - 'âZ' => '榡', - 'â[' => '榞', - 'â\\' => '槙', - 'â]' => '榗', - 'â^' => 'æ¦', - 'â_' => '槂', - 'â`' => '榵', - 'âa' => '榥', - 'âb' => '槆', - 'âc' => 'æ­Š', - 'âd' => 'æ­', - 'âe' => 'æ­‹', - 'âf' => '殞', - 'âg' => '殟', - 'âh' => 'æ® ', - 'âi' => '毃', - 'âj' => '毄', - 'âk' => '毾', - 'âl' => '滎', - 'âm' => '滵', - 'ân' => 'æ»±', - 'âo' => '漃', - 'âp' => 'æ¼¥', - 'âq' => '滸', - 'âr' => 'æ¼·', - 'âs' => 'æ»»', - 'ât' => 'æ¼®', - 'âu' => '漉', - 'âv' => '潎', - 'âw' => 'æ¼™', - 'âx' => '漚', - 'ây' => '漧', - 'âz' => '漘', - 'â{' => 'æ¼»', - 'â|' => 'æ¼’', - 'â}' => 'æ»­', - 'â~' => '漊', - 'â¡' => '漶', - 'â¢' => 'æ½³', - 'â£' => '滹', - 'â¤' => 'æ»®', - 'â¥' => 'æ¼­', - 'â¦' => 'æ½€', - 'â§' => 'æ¼°', - 'â¨' => 'æ¼¼', - 'â©' => 'æ¼µ', - 'âª' => '滫', - 'â«' => '漇', - 'â¬' => '漎', - 'â­' => '潃', - 'â®' => 'æ¼…', - 'â¯' => '滽', - 'â°' => '滶', - 'â±' => 'æ¼¹', - 'â²' => '漜', - 'â³' => '滼', - 'â´' => '漺', - 'âµ' => '漟', - 'â¶' => 'æ¼', - 'â·' => '漞', - 'â¸' => '漈', - 'â¹' => '漡', - 'âº' => '熇', - 'â»' => 'ç†', - 'â¼' => '熉', - 'â½' => '熀', - 'â¾' => '熅', - 'â¿' => '熂', - 'âÀ' => 'ç†', - 'âÁ' => 'ç…»', - 'âÂ' => '熆', - 'âÃ' => 'ç†', - 'âÄ' => '熗', - 'âÅ' => '牄', - 'âÆ' => '牓', - 'âÇ' => '犗', - 'âÈ' => '犕', - 'âÉ' => '犓', - 'âÊ' => 'çƒ', - 'âË' => 'ç', - 'âÌ' => 'ç‘', - 'âÍ' => 'çŒ', - 'âÎ' => 'ç‘¢', - 'âÏ' => '瑳', - 'âÐ' => '瑱', - 'âÑ' => '瑵', - 'âÒ' => '瑲', - 'âÓ' => '瑧', - 'âÔ' => 'ç‘®', - 'âÕ' => '甀', - 'âÖ' => '甂', - 'â×' => '甃', - 'âØ' => '畽', - 'âÙ' => 'ç–', - 'âÚ' => '瘖', - 'âÛ' => '瘈', - 'âÜ' => '瘌', - 'âÝ' => '瘕', - 'âÞ' => '瘑', - 'âß' => '瘊', - 'âà' => '瘔', - 'âá' => '皸', - 'ââ' => 'çž', - 'âã' => 'ç¼', - 'âä' => 'çž…', - 'âå' => 'çž‚', - 'âæ' => 'ç®', - 'âç' => '瞀', - 'âè' => 'ç¯', - 'âé' => 'ç¾', - 'âê' => '瞃', - 'âë' => '碲', - 'âì' => '碪', - 'âí' => '碴', - 'âî' => '碭', - 'âï' => '碨', - 'âð' => '硾', - 'âñ' => '碫', - 'âò' => '碞', - 'âó' => '碥', - 'âô' => '碠', - 'âõ' => '碬', - 'âö' => '碢', - 'â÷' => '碤', - 'âø' => '禘', - 'âù' => '禊', - 'âú' => '禋', - 'âû' => '禖', - 'âü' => '禕', - 'âý' => '禔', - 'âþ' => '禓', - 'ã@' => '禗', - 'ãA' => '禈', - 'ãB' => '禒', - 'ãC' => 'ç¦', - 'ãD' => '稫', - 'ãE' => 'ç©Š', - 'ãF' => '稰', - 'ãG' => '稯', - 'ãH' => '稨', - 'ãI' => '稦', - 'ãJ' => '窨', - 'ãK' => '窫', - 'ãL' => '窬', - 'ãM' => 'ç«®', - 'ãN' => '箈', - 'ãO' => '箜', - 'ãP' => '箊', - 'ãQ' => '箑', - 'ãR' => 'ç®', - 'ãS' => 'ç®–', - 'ãT' => 'ç®', - 'ãU' => '箌', - 'ãV' => 'ç®›', - 'ãW' => '箎', - 'ãX' => 'ç®…', - 'ãY' => '箘', - 'ãZ' => '劄', - 'ã[' => 'ç®™', - 'ã\\' => '箤', - 'ã]' => '箂', - 'ã^' => 'ç²»', - 'ã_' => '粿', - 'ã`' => 'ç²¼', - 'ãa' => '粺', - 'ãb' => '綧', - 'ãc' => '綷', - 'ãd' => 'ç·‚', - 'ãe' => '綣', - 'ãf' => '綪', - 'ãg' => 'ç·', - 'ãh' => 'ç·€', - 'ãi' => 'ç·…', - 'ãj' => 'ç¶', - 'ãk' => 'ç·Ž', - 'ãl' => 'ç·„', - 'ãm' => 'ç·†', - 'ãn' => 'ç·‹', - 'ão' => 'ç·Œ', - 'ãp' => '綯', - 'ãq' => '綹', - 'ãr' => '綖', - 'ãs' => '綼', - 'ãt' => '綟', - 'ãu' => '綦', - 'ãv' => '綮', - 'ãw' => '綩', - 'ãx' => '綡', - 'ãy' => 'ç·‰', - 'ãz' => 'ç½³', - 'ã{' => 'ç¿¢', - 'ã|' => 'ç¿£', - 'ã}' => 'ç¿¥', - 'ã~' => 'ç¿ž', - 'ã¡' => '耤', - 'ã¢' => 'è', - 'ã£' => 'èœ', - 'ã¤' => '膉', - 'ã¥' => '膆', - 'ã¦' => '膃', - 'ã§' => '膇', - 'ã¨' => 'è†', - 'ã©' => '膌', - 'ãª' => '膋', - 'ã«' => '舕', - 'ã¬' => 'è’—', - 'ã­' => 'è’¤', - 'ã®' => 'è’¡', - 'ã¯' => 'è’Ÿ', - 'ã°' => 'è’º', - 'ã±' => 'è“Ž', - 'ã²' => 'è“‚', - 'ã³' => 'è’¬', - 'ã´' => 'è’®', - 'ãµ' => 'è’«', - 'ã¶' => 'è’¹', - 'ã·' => 'è’´', - 'ã¸' => 'è“', - 'ã¹' => 'è“', - 'ãº' => 'è’ª', - 'ã»' => 'è’š', - 'ã¼' => 'è’±', - 'ã½' => 'è“', - 'ã¾' => 'è’', - 'ã¿' => 'è’§', - 'ãÀ' => 'è’»', - 'ãÁ' => 'è’¢', - 'ãÂ' => 'è’”', - 'ãÃ' => '蓇', - 'ãÄ' => 'è“Œ', - 'ãÅ' => 'è’›', - 'ãÆ' => 'è’©', - 'ãÇ' => 'è’¯', - 'ãÈ' => 'è’¨', - 'ãÉ' => 'è“–', - 'ãÊ' => 'è’˜', - 'ãË' => 'è’¶', - 'ãÌ' => 'è“', - 'ãÍ' => 'è’ ', - 'ãÎ' => 'è“—', - 'ãÏ' => 'è“”', - 'ãÐ' => 'è“’', - 'ãÑ' => 'è“›', - 'ãÒ' => 'è’°', - 'ãÓ' => 'è’‘', - 'ãÔ' => '虡', - 'ãÕ' => '蜳', - 'ãÖ' => '蜣', - 'ã×' => '蜨', - 'ãØ' => 'è«', - 'ãÙ' => 'è€', - 'ãÚ' => '蜮', - 'ãÛ' => '蜞', - 'ãÜ' => '蜡', - 'ãÝ' => '蜙', - 'ãÞ' => '蜛', - 'ãß' => 'èƒ', - 'ãà' => '蜬', - 'ãá' => 'è', - 'ãâ' => '蜾', - 'ãã' => 'è†', - 'ãä' => '蜠', - 'ãå' => '蜲', - 'ãæ' => '蜪', - 'ãç' => '蜭', - 'ãè' => '蜼', - 'ãé' => '蜒', - 'ãê' => '蜺', - 'ãë' => '蜱', - 'ãì' => '蜵', - 'ãí' => 'è‚', - 'ãî' => '蜦', - 'ãï' => '蜧', - 'ãð' => '蜸', - 'ãñ' => '蜤', - 'ãò' => '蜚', - 'ãó' => '蜰', - 'ãô' => '蜑', - 'ãõ' => '裷', - 'ãö' => '裧', - 'ã÷' => '裱', - 'ãø' => '裲', - 'ãù' => '裺', - 'ãú' => '裾', - 'ãû' => '裮', - 'ãü' => '裼', - 'ãý' => '裶', - 'ãþ' => '裻', - 'ä@' => '裰', - 'äA' => '裬', - 'äB' => '裫', - 'äC' => 'è¦', - 'äD' => '覡', - 'äE' => '覟', - 'äF' => '覞', - 'äG' => '觩', - 'äH' => '觫', - 'äI' => '觨', - 'äJ' => '誫', - 'äK' => '誙', - 'äL' => '誋', - 'äM' => '誒', - 'äN' => 'èª', - 'äO' => '誖', - 'äP' => 'è°½', - 'äQ' => '豨', - 'äR' => '豩', - 'äS' => '賕', - 'äT' => 'è³', - 'äU' => 'è³—', - 'äV' => '趖', - 'äW' => '踉', - 'äX' => '踂', - 'äY' => 'è·¿', - 'äZ' => 'è¸', - 'ä[' => 'è·½', - 'ä\\' => '踊', - 'ä]' => '踃', - 'ä^' => '踇', - 'ä_' => '踆', - 'ä`' => '踅', - 'äa' => 'è·¾', - 'äb' => '踀', - 'äc' => '踄', - 'äd' => 'è¼', - 'äe' => '輑', - 'äf' => '輎', - 'äg' => 'è¼', - 'äh' => 'é„£', - 'äi' => 'é„œ', - 'äj' => 'é„ ', - 'äk' => 'é„¢', - 'äl' => 'é„Ÿ', - 'äm' => 'é„', - 'än' => 'é„š', - 'äo' => '鄤', - 'äp' => 'é„¡', - 'äq' => 'é„›', - 'är' => 'é…º', - 'äs' => 'é…²', - 'ät' => 'é…¹', - 'äu' => 'é…³', - 'äv' => '銥', - 'äw' => '銤', - 'äx' => '鉶', - 'äy' => '銛', - 'äz' => '鉺', - 'ä{' => '銠', - 'ä|' => '銔', - 'ä}' => '銪', - 'ä~' => 'éŠ', - 'ä¡' => '銦', - 'ä¢' => '銚', - 'ä£' => '銫', - 'ä¤' => '鉹', - 'ä¥' => '銗', - 'ä¦' => '鉿', - 'ä§' => '銣', - 'ä¨' => 'é‹®', - 'ä©' => '銎', - 'äª' => '銂', - 'ä«' => '銕', - 'ä¬' => '銢', - 'ä­' => '鉽', - 'ä®' => '銈', - 'ä¯' => '銡', - 'ä°' => '銊', - 'ä±' => '銆', - 'ä²' => '銌', - 'ä³' => '銙', - 'ä´' => '銧', - 'äµ' => '鉾', - 'ä¶' => '銇', - 'ä·' => '銩', - 'ä¸' => 'éŠ', - 'ä¹' => '銋', - 'äº' => '鈭', - 'ä»' => 'éšž', - 'ä¼' => 'éš¡', - 'ä½' => '雿', - 'ä¾' => 'é˜', - 'ä¿' => 'é½', - 'äÀ' => 'éº', - 'äÁ' => 'é¾', - 'äÂ' => '鞃', - 'äÃ' => '鞀', - 'äÄ' => 'éž‚', - 'äÅ' => 'é»', - 'äÆ' => 'éž„', - 'äÇ' => 'éž', - 'äÈ' => 'é¿', - 'äÉ' => '韎', - 'äÊ' => 'éŸ', - 'äË' => 'é –', - 'äÌ' => '颭', - 'äÍ' => '颮', - 'äÎ' => '餂', - 'äÏ' => '餀', - 'äÐ' => '餇', - 'äÑ' => 'é¦', - 'äÒ' => '馜', - 'äÓ' => '駃', - 'äÔ' => '馹', - 'äÕ' => '馻', - 'äÖ' => '馺', - 'ä×' => '駂', - 'äØ' => '馽', - 'äÙ' => '駇', - 'äÚ' => '骱', - 'äÛ' => 'é«£', - 'äÜ' => '髧', - 'äÝ' => '鬾', - 'äÞ' => '鬿', - 'äß' => 'é­ ', - 'äà' => 'é­¡', - 'äá' => 'é­Ÿ', - 'äâ' => 'é³±', - 'äã' => 'é³²', - 'ää' => 'é³µ', - 'äå' => '麧', - 'äæ' => '僿', - 'äç' => '儃', - 'äè' => 'å„°', - 'äé' => '僸', - 'äê' => '儆', - 'äë' => '儇', - 'äì' => '僶', - 'äí' => '僾', - 'äî' => 'å„‹', - 'äï' => 'å„Œ', - 'äð' => '僽', - 'äñ' => 'å„Š', - 'äò' => '劋', - 'äó' => '劌', - 'äô' => '勱', - 'äõ' => '勯', - 'äö' => '噈', - 'ä÷' => '噂', - 'äø' => '噌', - 'äù' => '嘵', - 'äú' => 'å™', - 'äû' => '噊', - 'äü' => '噉', - 'äý' => '噆', - 'äþ' => '噘', - 'å@' => '噚', - 'åA' => '噀', - 'åB' => '嘳', - 'åC' => '嘽', - 'åD' => '嘬', - 'åE' => '嘾', - 'åF' => '嘸', - 'åG' => '嘪', - 'åH' => '嘺', - 'åI' => '圚', - 'åJ' => '墫', - 'åK' => 'å¢', - 'åL' => '墱', - 'åM' => '墠', - 'åN' => '墣', - 'åO' => '墯', - 'åP' => '墬', - 'åQ' => '墥', - 'åR' => '墡', - 'åS' => '壿', - 'åT' => 'å«¿', - 'åU' => 'å«´', - 'åV' => '嫽', - 'åW' => 'å«·', - 'åX' => '嫶', - 'åY' => '嬃', - 'åZ' => '嫸', - 'å[' => '嬂', - 'å\\' => '嫹', - 'å]' => 'å¬', - 'å^' => '嬇', - 'å_' => '嬅', - 'å`' => 'å¬', - 'åa' => '屧', - 'åb' => '嶙', - 'åc' => '嶗', - 'åd' => '嶟', - 'åe' => '嶒', - 'åf' => '嶢', - 'åg' => '嶓', - 'åh' => '嶕', - 'åi' => '嶠', - 'åj' => '嶜', - 'åk' => '嶡', - 'ål' => '嶚', - 'åm' => '嶞', - 'ån' => '幩', - 'åo' => 'å¹', - 'åp' => 'å¹ ', - 'åq' => '幜', - 'år' => 'ç·³', - 'ås' => 'å»›', - 'åt' => '廞', - 'åu' => '廡', - 'åv' => '彉', - 'åw' => 'å¾²', - 'åx' => '憋', - 'åy' => '憃', - 'åz' => 'æ…¹', - 'å{' => '憱', - 'å|' => '憰', - 'å}' => '憢', - 'å~' => '憉', - 'å¡' => '憛', - 'å¢' => '憓', - 'å£' => '憯', - 'å¤' => '憭', - 'å¥' => '憟', - 'å¦' => '憒', - 'å§' => '憪', - 'å¨' => '憡', - 'å©' => 'æ†', - 'åª' => 'æ…¦', - 'å«' => '憳', - 'å¬' => '戭', - 'å­' => 'æ‘®', - 'å®' => 'æ‘°', - 'å¯' => 'æ’–', - 'å°' => 'æ’ ', - 'å±' => 'æ’…', - 'å²' => 'æ’—', - 'å³' => 'æ’œ', - 'å´' => 'æ’', - 'åµ' => 'æ’‹', - 'å¶' => 'æ’Š', - 'å·' => 'æ’Œ', - 'å¸' => 'æ’£', - 'å¹' => 'æ’Ÿ', - 'åº' => '摨', - 'å»' => 'æ’±', - 'å¼' => 'æ’˜', - 'å½' => '敶', - 'å¾' => '敺', - 'å¿' => '敹', - 'åÀ' => 'æ•»', - 'åÁ' => 'æ–²', - 'åÂ' => 'æ–³', - 'åÃ' => 'æšµ', - 'åÄ' => 'æš°', - 'åÅ' => 'æš©', - 'åÆ' => 'æš²', - 'åÇ' => 'æš·', - 'åÈ' => '暪', - 'åÉ' => '暯', - 'åÊ' => '樀', - 'åË' => '樆', - 'åÌ' => '樗', - 'åÍ' => '槥', - 'åÎ' => '槸', - 'åÏ' => '樕', - 'åÐ' => '槱', - 'åÑ' => '槤', - 'åÒ' => '樠', - 'åÓ' => '槿', - 'åÔ' => '槬', - 'åÕ' => '槢', - 'åÖ' => '樛', - 'å×' => 'æ¨', - 'åØ' => '槾', - 'åÙ' => '樧', - 'åÚ' => '槲', - 'åÛ' => '槮', - 'åÜ' => '樔', - 'åÝ' => '槷', - 'åÞ' => '槧', - 'åß' => 'æ©€', - 'åà' => '樈', - 'åá' => '槦', - 'åâ' => '槻', - 'åã' => 'æ¨', - 'åä' => '槼', - 'åå' => '槫', - 'åæ' => '樉', - 'åç' => '樄', - 'åè' => '樘', - 'åé' => '樥', - 'åê' => 'æ¨', - 'åë' => '槶', - 'åì' => '樦', - 'åí' => '樇', - 'åî' => '槴', - 'åï' => '樖', - 'åð' => 'æ­‘', - 'åñ' => '殥', - 'åò' => '殣', - 'åó' => '殢', - 'åô' => '殦', - 'åõ' => 'æ°', - 'åö' => 'æ°€', - 'å÷' => '毿', - 'åø' => 'æ°‚', - 'åù' => 'æ½', - 'åú' => '漦', - 'åû' => 'æ½¾', - 'åü' => '澇', - 'åý' => '濆', - 'åþ' => 'æ¾’', - 'æ@' => 'æ¾', - 'æA' => '澉', - 'æB' => '澌', - 'æC' => 'æ½¢', - 'æD' => 'æ½', - 'æE' => 'æ¾…', - 'æF' => '潚', - 'æG' => 'æ¾–', - 'æH' => '潶', - 'æI' => '潬', - 'æJ' => '澂', - 'æK' => '潕', - 'æL' => 'æ½²', - 'æM' => 'æ½’', - 'æN' => 'æ½', - 'æO' => 'æ½—', - 'æP' => 'æ¾”', - 'æQ' => '澓', - 'æR' => 'æ½', - 'æS' => 'æ¼€', - 'æT' => '潡', - 'æU' => '潫', - 'æV' => 'æ½½', - 'æW' => '潧', - 'æX' => 'æ¾', - 'æY' => '潓', - 'æZ' => '澋', - 'æ[' => '潩', - 'æ\\' => '潿', - 'æ]' => '澕', - 'æ^' => 'æ½£', - 'æ_' => 'æ½·', - 'æ`' => '潪', - 'æa' => 'æ½»', - 'æb' => '熲', - 'æc' => '熯', - 'æd' => '熛', - 'æe' => '熰', - 'æf' => '熠', - 'æg' => '熚', - 'æh' => '熩', - 'æi' => '熵', - 'æj' => 'ç†', - 'æk' => '熥', - 'æl' => '熞', - 'æm' => '熤', - 'æn' => '熡', - 'æo' => '熪', - 'æp' => '熜', - 'æq' => '熧', - 'ær' => '熳', - 'æs' => '犘', - 'æt' => '犚', - 'æu' => 'ç˜', - 'æv' => 'ç’', - 'æw' => 'çž', - 'æx' => 'çŸ', - 'æy' => 'ç ', - 'æz' => 'ç', - 'æ{' => 'ç›', - 'æ|' => 'ç¡', - 'æ}' => 'çš', - 'æ~' => 'ç™', - 'æ¡' => 'ç¢', - 'æ¢' => 'ç’‡', - 'æ£' => 'ç’‰', - 'æ¤' => 'ç’Š', - 'æ¥' => 'ç’†', - 'æ¦' => 'ç’', - 'æ§' => '瑽', - 'æ¨' => 'ç’…', - 'æ©' => 'ç’ˆ', - 'æª' => '瑼', - 'æ«' => '瑹', - 'æ¬' => '甈', - 'æ­' => '甇', - 'æ®' => '畾', - 'æ¯' => '瘥', - 'æ°' => '瘞', - 'æ±' => '瘙', - 'æ²' => 'ç˜', - 'æ³' => '瘜', - 'æ´' => '瘣', - 'æµ' => '瘚', - 'æ¶' => '瘨', - 'æ·' => '瘛', - 'æ¸' => 'çšœ', - 'æ¹' => 'çš', - 'æº' => 'çšž', - 'æ»' => 'çš›', - 'æ¼' => 'çž', - 'æ½' => 'çž', - 'æ¾' => '瞉', - 'æ¿' => '瞈', - 'æÀ' => 'ç£', - 'æÁ' => '碻', - 'æÂ' => 'ç£', - 'æÃ' => '磌', - 'æÄ' => '磑', - 'æÅ' => '磎', - 'æÆ' => '磔', - 'æÇ' => '磈', - 'æÈ' => '磃', - 'æÉ' => '磄', - 'æÊ' => '磉', - 'æË' => '禚', - 'æÌ' => '禡', - 'æÍ' => '禠', - 'æÎ' => '禜', - 'æÏ' => '禢', - 'æÐ' => '禛', - 'æÑ' => 'æ­¶', - 'æÒ' => '稹', - 'æÓ' => '窲', - 'æÔ' => '窴', - 'æÕ' => '窳', - 'æÖ' => 'ç®·', - 'æ×' => '篋', - 'æØ' => '箾', - 'æÙ' => '箬', - 'æÚ' => '篎', - 'æÛ' => '箯', - 'æÜ' => '箹', - 'æÝ' => '篊', - 'æÞ' => '箵', - 'æß' => 'ç³…', - 'æà' => '糈', - 'æá' => '糌', - 'æâ' => '糋', - 'æã' => 'ç··', - 'æä' => 'ç·›', - 'æå' => 'ç·ª', - 'ææ' => 'ç·§', - 'æç' => 'ç·—', - 'æè' => 'ç·¡', - 'æé' => '縃', - 'æê' => 'ç·º', - 'æë' => 'ç·¦', - 'æì' => 'ç·¶', - 'æí' => 'ç·±', - 'æî' => 'ç·°', - 'æï' => 'ç·®', - 'æð' => 'ç·Ÿ', - 'æñ' => '罶', - 'æò' => '羬', - 'æó' => 'ç¾°', - 'æô' => 'ç¾­', - 'æõ' => 'ç¿­', - 'æö' => 'ç¿«', - 'æ÷' => '翪', - 'æø' => '翬', - 'æù' => '翦', - 'æú' => '翨', - 'æû' => 'è¤', - 'æü' => 'è§', - 'æý' => '膣', - 'æþ' => '膟', - 'ç@' => '膞', - 'çA' => '膕', - 'çB' => '膢', - 'çC' => '膙', - 'çD' => '膗', - 'çE' => '舖', - 'çF' => 'è‰', - 'çG' => '艓', - 'çH' => '艒', - 'çI' => 'è‰', - 'çJ' => '艎', - 'çK' => '艑', - 'çL' => '蔤', - 'çM' => 'è”»', - 'çN' => 'è”', - 'çO' => '蔀', - 'çP' => '蔩', - 'çQ' => '蔎', - 'çR' => '蔉', - 'çS' => 'è”', - 'çT' => '蔟', - 'çU' => '蔊', - 'çV' => '蔧', - 'çW' => '蔜', - 'çX' => 'è“»', - 'çY' => '蔫', - 'çZ' => '蓺', - 'ç[' => '蔈', - 'ç\\' => '蔌', - 'ç]' => 'è“´', - 'ç^' => '蔪', - 'ç_' => '蓲', - 'ç`' => '蔕', - 'ça' => 'è“·', - 'çb' => 'è“«', - 'çc' => '蓳', - 'çd' => '蓼', - 'çe' => 'è”’', - 'çf' => '蓪', - 'çg' => 'è“©', - 'çh' => 'è”–', - 'çi' => '蓾', - 'çj' => '蔨', - 'çk' => 'è”', - 'çl' => 'è”®', - 'çm' => '蔂', - 'çn' => '蓽', - 'ço' => '蔞', - 'çp' => '蓶', - 'çq' => 'è”±', - 'çr' => '蔦', - 'çs' => '蓧', - 'çt' => '蓨', - 'çu' => 'è“°', - 'çv' => '蓯', - 'çw' => '蓹', - 'çx' => '蔘', - 'çy' => 'è” ', - 'çz' => 'è”°', - 'ç{' => '蔋', - 'ç|' => 'è”™', - 'ç}' => '蔯', - 'ç~' => '虢', - 'ç¡' => 'è–', - 'ç¢' => 'è£', - 'ç£' => 'è¤', - 'ç¤' => 'è·', - 'ç¥' => '蟡', - 'ç¦' => 'è³', - 'ç§' => 'è˜', - 'ç¨' => 'è”', - 'ç©' => 'è›', - 'çª' => 'è’', - 'ç«' => 'è¡', - 'ç¬' => 'èš', - 'ç­' => 'è‘', - 'ç®' => 'èž', - 'ç¯' => 'è­', - 'ç°' => 'èª', - 'ç±' => 'è', - 'ç²' => 'èŽ', - 'ç³' => 'èŸ', - 'ç´' => 'è', - 'çµ' => 'è¯', - 'ç¶' => 'è¬', - 'ç·' => 'èº', - 'ç¸' => 'è®', - 'ç¹' => 'èœ', - 'çº' => 'è¥', - 'ç»' => 'è', - 'ç¼' => 'è»', - 'ç½' => 'èµ', - 'ç¾' => 'è¢', - 'ç¿' => 'è§', - 'çÀ' => 'è©', - 'çÁ' => 'è¡š', - 'çÂ' => '褅', - 'çÃ' => '褌', - 'çÄ' => '褔', - 'çÅ' => '褋', - 'çÆ' => '褗', - 'çÇ' => '褘', - 'çÈ' => '褙', - 'çÉ' => '褆', - 'çÊ' => '褖', - 'çË' => '褑', - 'çÌ' => '褎', - 'çÍ' => '褉', - 'çÎ' => '覢', - 'çÏ' => '覤', - 'çÐ' => '覣', - 'çÑ' => '觭', - 'çÒ' => '觰', - 'çÓ' => '觬', - 'çÔ' => 'è«', - 'çÕ' => '諆', - 'çÖ' => '誸', - 'ç×' => 'è«“', - 'çØ' => 'è«‘', - 'çÙ' => 'è«”', - 'çÚ' => 'è«•', - 'çÛ' => '誻', - 'çÜ' => 'è«—', - 'çÝ' => '誾', - 'çÞ' => 'è«€', - 'çß' => 'è«…', - 'çà' => '諘', - 'çá' => '諃', - 'çâ' => '誺', - 'çã' => '誽', - 'çä' => 'è«™', - 'çå' => 'è°¾', - 'çæ' => 'è±', - 'çç' => 'è²', - 'çè' => 'è³¥', - 'çé' => '賟', - 'çê' => 'è³™', - 'çë' => '賨', - 'çì' => '賚', - 'çí' => 'è³', - 'çî' => '賧', - 'çï' => '趠', - 'çð' => '趜', - 'çñ' => '趡', - 'çò' => '趛', - 'çó' => '踠', - 'çô' => '踣', - 'çõ' => '踥', - 'çö' => '踤', - 'ç÷' => '踮', - 'çø' => '踕', - 'çù' => '踛', - 'çú' => '踖', - 'çû' => '踑', - 'çü' => '踙', - 'çý' => '踦', - 'çþ' => '踧', - 'è@' => '踔', - 'èA' => '踒', - 'èB' => '踘', - 'èC' => '踓', - 'èD' => '踜', - 'èE' => '踗', - 'èF' => '踚', - 'èG' => '輬', - 'èH' => '輤', - 'èI' => '輘', - 'èJ' => '輚', - 'èK' => 'è¼ ', - 'èL' => 'è¼£', - 'èM' => 'è¼–', - 'èN' => 'è¼—', - 'èO' => 'é³', - 'èP' => 'é°', - 'èQ' => 'é¯', - 'èR' => 'é§', - 'èS' => 'é«', - 'èT' => '鄯', - 'èU' => 'é„«', - 'èV' => 'é„©', - 'èW' => '鄪', - 'èX' => '鄲', - 'èY' => '鄦', - 'èZ' => 'é„®', - 'è[' => '醅', - 'è\\' => '醆', - 'è]' => '醊', - 'è^' => 'é†', - 'è_' => '醂', - 'è`' => '醄', - 'èa' => '醀', - 'èb' => 'é‹', - 'èc' => '鋃', - 'èd' => 'é‹„', - 'èe' => 'é‹€', - 'èf' => 'é‹™', - 'èg' => '銶', - 'èh' => 'é‹', - 'èi' => '鋱', - 'èj' => 'é‹Ÿ', - 'èk' => '鋘', - 'èl' => 'é‹©', - 'èm' => 'é‹—', - 'èn' => 'é‹', - 'èo' => 'é‹Œ', - 'èp' => '鋯', - 'èq' => 'é‹‚', - 'èr' => '鋨', - 'ès' => 'é‹Š', - 'èt' => '鋈', - 'èu' => 'é‹Ž', - 'èv' => '鋦', - 'èw' => 'é‹', - 'èx' => 'é‹•', - 'èy' => '鋉', - 'èz' => 'é‹ ', - 'è{' => 'é‹ž', - 'è|' => '鋧', - 'è}' => 'é‹‘', - 'è~' => 'é‹“', - 'è¡' => '銵', - 'è¢' => 'é‹¡', - 'è£' => '鋆', - 'è¤' => '銴', - 'è¥' => '镼', - 'è¦' => 'é–¬', - 'è§' => 'é–«', - 'è¨' => 'é–®', - 'è©' => 'é–°', - 'èª' => '隤', - 'è«' => '隢', - 'è¬' => '雓', - 'è­' => '霅', - 'è®' => '霈', - 'è¯' => '霂', - 'è°' => 'éš', - 'è±' => '鞊', - 'è²' => '鞎', - 'è³' => '鞈', - 'è´' => 'éŸ', - 'èµ' => 'éŸ', - 'è¶' => 'é ž', - 'è·' => 'é ', - 'è¸' => 'é ¦', - 'è¹' => 'é ©', - 'èº' => 'é ¨', - 'è»' => 'é  ', - 'è¼' => 'é ›', - 'è½' => 'é §', - 'è¾' => '颲', - 'è¿' => '餈', - 'èÀ' => '飺', - 'èÁ' => '餑', - 'èÂ' => '餔', - 'èÃ' => '餖', - 'èÄ' => '餗', - 'èÅ' => '餕', - 'èÆ' => '駜', - 'èÇ' => 'é§', - 'èÈ' => 'é§', - 'èÉ' => '駓', - 'èÊ' => '駔', - 'èË' => '駎', - 'èÌ' => '駉', - 'èÍ' => '駖', - 'èÎ' => '駘', - 'èÏ' => '駋', - 'èÐ' => '駗', - 'èÑ' => '駌', - 'èÒ' => '骳', - 'èÓ' => '髬', - 'èÔ' => 'é««', - 'èÕ' => '髳', - 'èÖ' => '髲', - 'è×' => '髱', - 'èØ' => 'é­†', - 'èÙ' => 'é­ƒ', - 'èÚ' => 'é­§', - 'èÛ' => 'é­´', - 'èÜ' => 'é­±', - 'èÝ' => 'é­¦', - 'èÞ' => 'é­¶', - 'èß' => 'é­µ', - 'èà' => 'é­°', - 'èá' => 'é­¨', - 'èâ' => 'é­¤', - 'èã' => 'é­¬', - 'èä' => 'é³¼', - 'èå' => '鳺', - 'èæ' => 'é³½', - 'èç' => '鳿', - 'èè' => 'é³·', - 'èé' => 'é´‡', - 'èê' => 'é´€', - 'èë' => 'é³¹', - 'èì' => 'é³»', - 'èí' => 'é´ˆ', - 'èî' => 'é´…', - 'èï' => 'é´„', - 'èð' => '麃', - 'èñ' => '黓', - 'èò' => 'é¼', - 'èó' => 'é¼', - 'èô' => 'å„œ', - 'èõ' => 'å„“', - 'èö' => 'å„—', - 'è÷' => 'å„š', - 'èø' => 'å„‘', - 'èù' => '凞', - 'èú' => '匴', - 'èû' => 'å¡', - 'èü' => 'å™°', - 'èý' => 'å™ ', - 'èþ' => 'å™®', - 'é@' => '噳', - 'éA' => '噦', - 'éB' => '噣', - 'éC' => 'å™­', - 'éD' => '噲', - 'éE' => '噞', - 'éF' => 'å™·', - 'éG' => '圜', - 'éH' => '圛', - 'éI' => '壈', - 'éJ' => '墽', - 'éK' => '壉', - 'éL' => '墿', - 'éM' => '墺', - 'éN' => '壂', - 'éO' => '墼', - 'éP' => '壆', - 'éQ' => '嬗', - 'éR' => '嬙', - 'éS' => '嬛', - 'éT' => '嬡', - 'éU' => '嬔', - 'éV' => '嬓', - 'éW' => 'å¬', - 'éX' => '嬖', - 'éY' => '嬨', - 'éZ' => '嬚', - 'é[' => '嬠', - 'é\\' => '嬞', - 'é]' => '寯', - 'é^' => '嶬', - 'é_' => '嶱', - 'é`' => '嶩', - 'éa' => '嶧', - 'éb' => '嶵', - 'éc' => '嶰', - 'éd' => '嶮', - 'ée' => '嶪', - 'éf' => '嶨', - 'ég' => '嶲', - 'éh' => '嶭', - 'éi' => '嶯', - 'éj' => '嶴', - 'ék' => '幧', - 'él' => '幨', - 'ém' => '幦', - 'én' => '幯', - 'éo' => '廩', - 'ép' => '廧', - 'éq' => '廦', - 'ér' => '廨', - 'és' => '廥', - 'ét' => '彋', - 'éu' => 'å¾¼', - 'év' => 'æ†', - 'éw' => '憨', - 'éx' => '憖', - 'éy' => '懅', - 'éz' => '憴', - 'é{' => '懆', - 'é|' => 'æ‡', - 'é}' => '懌', - 'é~' => '憺', - 'é¡' => '憿', - 'é¢' => '憸', - 'é£' => '憌', - 'é¤' => 'æ“—', - 'é¥' => 'æ“–', - 'é¦' => 'æ“', - 'é§' => 'æ“', - 'é¨' => '擉', - 'é©' => 'æ’½', - 'éª' => 'æ’‰', - 'é«' => '擃', - 'é¬' => 'æ“›', - 'é­' => '擳', - 'é®' => 'æ“™', - 'é¯' => '攳', - 'é°' => 'æ•¿', - 'é±' => '敼', - 'é²' => 'æ–¢', - 'é³' => '曈', - 'é´' => 'æš¾', - 'éµ' => '曀', - 'é¶' => '曊', - 'é·' => '曋', - 'é¸' => 'æ›', - 'é¹' => 'æš½', - 'éº' => 'æš»', - 'é»' => '暺', - 'é¼' => '曌', - 'é½' => '朣', - 'é¾' => '樴', - 'é¿' => '橦', - 'éÀ' => '橉', - 'éÁ' => '橧', - 'éÂ' => '樲', - 'éÃ' => '橨', - 'éÄ' => '樾', - 'éÅ' => 'æ©', - 'éÆ' => 'æ©­', - 'éÇ' => '橶', - 'éÈ' => 'æ©›', - 'éÉ' => 'æ©‘', - 'éÊ' => '樨', - 'éË' => 'æ©š', - 'éÌ' => '樻', - 'éÍ' => '樿', - 'éÎ' => 'æ©', - 'éÏ' => '橪', - 'éÐ' => '橤', - 'éÑ' => 'æ©', - 'éÒ' => 'æ©', - 'éÓ' => 'æ©”', - 'éÔ' => '橯', - 'éÕ' => 'æ©©', - 'éÖ' => 'æ© ', - 'é×' => '樼', - 'éØ' => 'æ©ž', - 'éÙ' => 'æ©–', - 'éÚ' => 'æ©•', - 'éÛ' => 'æ©', - 'éÜ' => 'æ©Ž', - 'éÝ' => '橆', - 'éÞ' => 'æ­•', - 'éß' => 'æ­”', - 'éà' => 'æ­–', - 'éá' => '殧', - 'éâ' => '殪', - 'éã' => '殫', - 'éä' => '毈', - 'éå' => '毇', - 'éæ' => 'æ°„', - 'éç' => 'æ°ƒ', - 'éè' => 'æ°†', - 'éé' => 'æ¾­', - 'éê' => 'æ¿‹', - 'éë' => 'æ¾£', - 'éì' => '濇', - 'éí' => 'æ¾¼', - 'éî' => 'æ¿Ž', - 'éï' => '濈', - 'éð' => '潞', - 'éñ' => 'æ¿„', - 'éò' => 'æ¾½', - 'éó' => '澞', - 'éô' => 'æ¿Š', - 'éõ' => '澨', - 'éö' => '瀄', - 'é÷' => 'æ¾¥', - 'éø' => 'æ¾®', - 'éù' => '澺', - 'éú' => '澬', - 'éû' => '澪', - 'éü' => 'æ¿', - 'éý' => '澿', - 'éþ' => '澸', - 'ê@' => 'æ¾¢', - 'êA' => '濉', - 'êB' => '澫', - 'êC' => 'æ¿', - 'êD' => '澯', - 'êE' => 'æ¾²', - 'êF' => 'æ¾°', - 'êG' => '燅', - 'êH' => '燂', - 'êI' => '熿', - 'êJ' => '熸', - 'êK' => '燖', - 'êL' => '燀', - 'êM' => 'ç‡', - 'êN' => '燋', - 'êO' => '燔', - 'êP' => '燊', - 'êQ' => '燇', - 'êR' => 'ç‡', - 'êS' => '熽', - 'êT' => '燘', - 'êU' => '熼', - 'êV' => '燆', - 'êW' => '燚', - 'êX' => '燛', - 'êY' => 'çŠ', - 'êZ' => '犞', - 'ê[' => 'ç©', - 'ê\\' => 'ç¦', - 'ê]' => 'ç§', - 'ê^' => 'ç¬', - 'ê_' => 'ç¥', - 'ê`' => 'ç«', - 'êa' => 'çª', - 'êb' => 'ç‘¿', - 'êc' => 'ç’š', - 'êd' => 'ç’ ', - 'êe' => 'ç’”', - 'êf' => 'ç’’', - 'êg' => 'ç’•', - 'êh' => 'ç’¡', - 'êi' => '甋', - 'êj' => 'ç–€', - 'êk' => '瘯', - 'êl' => '瘭', - 'êm' => '瘱', - 'ên' => '瘽', - 'êo' => '瘳', - 'êp' => '瘼', - 'êq' => '瘵', - 'êr' => '瘲', - 'ês' => '瘰', - 'êt' => 'çš»', - 'êu' => '盦', - 'êv' => 'çžš', - 'êw' => 'çž', - 'êx' => 'çž¡', - 'êy' => 'çžœ', - 'êz' => 'çž›', - 'ê{' => '瞢', - 'ê|' => '瞣', - 'ê}' => 'çž•', - 'ê~' => 'çž™', - 'ê¡' => 'çž—', - 'ê¢' => 'ç£', - 'ê£' => '磩', - 'ê¤' => '磥', - 'ê¥' => '磪', - 'ê¦' => '磞', - 'ê§' => '磣', - 'ê¨' => '磛', - 'ê©' => '磡', - 'êª' => '磢', - 'ê«' => '磭', - 'ê¬' => '磟', - 'ê­' => '磠', - 'ê®' => '禤', - 'ê¯' => 'ç©„', - 'ê°' => '穈', - 'ê±' => '穇', - 'ê²' => '窶', - 'ê³' => '窸', - 'ê´' => '窵', - 'êµ' => '窱', - 'ê¶' => '窷', - 'ê·' => '篞', - 'ê¸' => '篣', - 'ê¹' => '篧', - 'êº' => 'ç¯', - 'ê»' => '篕', - 'ê¼' => '篥', - 'ê½' => '篚', - 'ê¾' => '篨', - 'ê¿' => '篹', - 'êÀ' => '篔', - 'êÁ' => '篪', - 'êÂ' => '篢', - 'êÃ' => '篜', - 'êÄ' => '篫', - 'êÅ' => '篘', - 'êÆ' => '篟', - 'êÇ' => 'ç³’', - 'êÈ' => 'ç³”', - 'êÉ' => 'ç³—', - 'êÊ' => 'ç³', - 'êË' => '糑', - 'êÌ' => '縒', - 'êÍ' => '縡', - 'êÎ' => '縗', - 'êÏ' => '縌', - 'êÐ' => '縟', - 'êÑ' => '縠', - 'êÒ' => '縓', - 'êÓ' => '縎', - 'êÔ' => '縜', - 'êÕ' => '縕', - 'êÖ' => '縚', - 'ê×' => '縢', - 'êØ' => '縋', - 'êÙ' => 'ç¸', - 'êÚ' => '縖', - 'êÛ' => 'ç¸', - 'êÜ' => '縔', - 'êÝ' => '縥', - 'êÞ' => '縤', - 'êß' => '罃', - 'êà' => 'ç½»', - 'êá' => 'ç½¼', - 'êâ' => '罺', - 'êã' => 'ç¾±', - 'êä' => '翯', - 'êå' => '耪', - 'êæ' => '耩', - 'êç' => 'è¬', - 'êè' => '膱', - 'êé' => '膦', - 'êê' => '膮', - 'êë' => '膹', - 'êì' => '膵', - 'êí' => '膫', - 'êî' => '膰', - 'êï' => '膬', - 'êð' => '膴', - 'êñ' => '膲', - 'êò' => '膷', - 'êó' => '膧', - 'êô' => '臲', - 'êõ' => '艕', - 'êö' => '艖', - 'ê÷' => '艗', - 'êø' => 'è•–', - 'êù' => 'è•…', - 'êú' => 'è•«', - 'êû' => 'è•', - 'êü' => 'è•“', - 'êý' => 'è•¡', - 'êþ' => '蕘', - 'ë@' => 'è•€', - 'ëA' => '蕆', - 'ëB' => '蕤', - 'ëC' => 'è•', - 'ëD' => 'è•¢', - 'ëE' => 'è•„', - 'ëF' => 'è•‘', - 'ëG' => '蕇', - 'ëH' => 'è•£', - 'ëI' => '蔾', - 'ëJ' => 'è•›', - 'ëK' => '蕱', - 'ëL' => 'è•Ž', - 'ëM' => 'è•®', - 'ëN' => '蕵', - 'ëO' => 'è••', - 'ëP' => '蕧', - 'ëQ' => 'è• ', - 'ëR' => 'è–Œ', - 'ëS' => '蕦', - 'ëT' => 'è•', - 'ëU' => 'è•”', - 'ëV' => 'è•¥', - 'ëW' => '蕬', - 'ëX' => '虣', - 'ëY' => '虥', - 'ëZ' => '虤', - 'ë[' => 'èž›', - 'ë\\' => 'èž', - 'ë]' => 'èž—', - 'ë^' => 'èž“', - 'ë_' => 'èž’', - 'ë`' => '螈', - 'ëa' => 'èž', - 'ëb' => 'èž–', - 'ëc' => '螘', - 'ëd' => 'è¹', - 'ëe' => '螇', - 'ëf' => '螣', - 'ëg' => 'èž…', - 'ëh' => 'èž', - 'ëi' => 'èž‘', - 'ëj' => 'èž', - 'ëk' => 'èž„', - 'ël' => 'èž”', - 'ëm' => 'èžœ', - 'ën' => 'èžš', - 'ëo' => '螉', - 'ëp' => '褞', - 'ëq' => '褦', - 'ër' => '褰', - 'ës' => '褭', - 'ët' => '褮', - 'ëu' => '褧', - 'ëv' => '褱', - 'ëw' => '褢', - 'ëx' => '褩', - 'ëy' => '褣', - 'ëz' => '褯', - 'ë{' => '褬', - 'ë|' => '褟', - 'ë}' => '觱', - 'ë~' => 'è« ', - 'ë¡' => 'è«¢', - 'ë¢' => '諲', - 'ë£' => 'è«´', - 'ë¤' => '諵', - 'ë¥' => 'è«', - 'ë¦' => '謔', - 'ë§' => '諤', - 'ë¨' => 'è«Ÿ', - 'ë©' => 'è«°', - 'ëª' => '諈', - 'ë«' => 'è«ž', - 'ë¬' => 'è«¡', - 'ë­' => '諨', - 'ë®' => 'è«¿', - 'ë¯' => '諯', - 'ë°' => 'è«»', - 'ë±' => '貑', - 'ë²' => 'è²’', - 'ë³' => 'è²', - 'ë´' => 'è³µ', - 'ëµ' => 'è³®', - 'ë¶' => 'è³±', - 'ë·' => 'è³°', - 'ë¸' => 'è³³', - 'ë¹' => '赬', - 'ëº' => 'èµ®', - 'ë»' => '趥', - 'ë¼' => '趧', - 'ë½' => '踳', - 'ë¾' => '踾', - 'ë¿' => '踸', - 'ëÀ' => 'è¹€', - 'ëÁ' => 'è¹…', - 'ëÂ' => '踶', - 'ëÃ' => '踼', - 'ëÄ' => '踽', - 'ëÅ' => 'è¹', - 'ëÆ' => '踰', - 'ëÇ' => '踿', - 'ëÈ' => '躽', - 'ëÉ' => '輶', - 'ëÊ' => 'è¼®', - 'ëË' => 'è¼µ', - 'ëÌ' => 'è¼²', - 'ëÍ' => 'è¼¹', - 'ëÎ' => 'è¼·', - 'ëÏ' => 'è¼´', - 'ëÐ' => 'é¶', - 'ëÑ' => 'é¹', - 'ëÒ' => 'é»', - 'ëÓ' => '邆', - 'ëÔ' => '郺', - 'ëÕ' => '鄳', - 'ëÖ' => '鄵', - 'ë×' => '鄶', - 'ëØ' => '醓', - 'ëÙ' => 'é†', - 'ëÚ' => '醑', - 'ëÛ' => 'é†', - 'ëÜ' => 'é†', - 'ëÝ' => '錧', - 'ëÞ' => '錞', - 'ëß' => '錈', - 'ëà' => '錟', - 'ëá' => '錆', - 'ëâ' => 'éŒ', - 'ëã' => 'éº', - 'ëä' => '錸', - 'ëå' => '錼', - 'ëæ' => '錛', - 'ëç' => '錣', - 'ëè' => '錒', - 'ëé' => 'éŒ', - 'ëê' => 'é†', - 'ëë' => '錭', - 'ëì' => '錎', - 'ëí' => 'éŒ', - 'ëî' => 'é‹‹', - 'ëï' => 'éŒ', - 'ëð' => '鋺', - 'ëñ' => '錥', - 'ëò' => '錓', - 'ëó' => '鋹', - 'ëô' => 'é‹·', - 'ëõ' => '錴', - 'ëö' => '錂', - 'ë÷' => '錤', - 'ëø' => 'é‹¿', - 'ëù' => '錩', - 'ëú' => '錹', - 'ëû' => '錵', - 'ëü' => '錪', - 'ëý' => '錔', - 'ëþ' => '錌', - 'ì@' => '錋', - 'ìA' => '鋾', - 'ìB' => '錉', - 'ìC' => '錀', - 'ìD' => 'é‹»', - 'ìE' => '錖', - 'ìF' => 'é–¼', - 'ìG' => 'é—', - 'ìH' => 'é–¾', - 'ìI' => 'é–¹', - 'ìJ' => 'é–º', - 'ìK' => 'é–¶', - 'ìL' => 'é–¿', - 'ìM' => 'é–µ', - 'ìN' => 'é–½', - 'ìO' => 'éš©', - 'ìP' => 'é›”', - 'ìQ' => '霋', - 'ìR' => '霒', - 'ìS' => 'éœ', - 'ìT' => 'éž™', - 'ìU' => 'éž—', - 'ìV' => 'éž”', - 'ìW' => '韰', - 'ìX' => '韸', - 'ìY' => 'é µ', - 'ìZ' => 'é ¯', - 'ì[' => 'é ²', - 'ì\\' => '餤', - 'ì]' => '餟', - 'ì^' => '餧', - 'ì_' => '餩', - 'ì`' => '馞', - 'ìa' => '駮', - 'ìb' => '駬', - 'ìc' => '駥', - 'ìd' => '駤', - 'ìe' => '駰', - 'ìf' => '駣', - 'ìg' => '駪', - 'ìh' => '駩', - 'ìi' => '駧', - 'ìj' => '骹', - 'ìk' => '骿', - 'ìl' => '骴', - 'ìm' => '骻', - 'ìn' => '髶', - 'ìo' => '髺', - 'ìp' => '髹', - 'ìq' => 'é«·', - 'ìr' => '鬳', - 'ìs' => '鮀', - 'ìt' => 'é®…', - 'ìu' => '鮇', - 'ìv' => 'é­¼', - 'ìw' => 'é­¾', - 'ìx' => 'é­»', - 'ìy' => '鮂', - 'ìz' => '鮓', - 'ì{' => 'é®’', - 'ì|' => 'é®', - 'ì}' => 'é­º', - 'ì~' => '鮕', - 'ì¡' => 'é­½', - 'ì¢' => '鮈', - 'ì£' => 'é´¥', - 'ì¤' => 'é´—', - 'ì¥' => 'é´ ', - 'ì¦' => 'é´ž', - 'ì§' => 'é´”', - 'ì¨' => 'é´©', - 'ì©' => 'é´', - 'ìª' => 'é´˜', - 'ì«' => 'é´¢', - 'ì¬' => 'é´', - 'ì­' => 'é´™', - 'ì®' => 'é´Ÿ', - 'ì¯' => '麈', - 'ì°' => '麆', - 'ì±' => '麇', - 'ì²' => '麮', - 'ì³' => '麭', - 'ì´' => '黕', - 'ìµ' => 'é»–', - 'ì¶' => '黺', - 'ì·' => 'é¼’', - 'ì¸' => 'é¼½', - 'ì¹' => '儦', - 'ìº' => 'å„¥', - 'ì»' => 'å„¢', - 'ì¼' => '儤', - 'ì½' => 'å„ ', - 'ì¾' => 'å„©', - 'ì¿' => 'å‹´', - 'ìÀ' => 'åš“', - 'ìÁ' => '嚌', - 'ìÂ' => 'åš', - 'ìÃ' => '嚆', - 'ìÄ' => 'åš„', - 'ìÅ' => '嚃', - 'ìÆ' => '噾', - 'ìÇ' => 'åš‚', - 'ìÈ' => '噿', - 'ìÉ' => 'åš', - 'ìÊ' => '壖', - 'ìË' => '壔', - 'ìÌ' => 'å£', - 'ìÍ' => '壒', - 'ìÎ' => '嬭', - 'ìÏ' => '嬥', - 'ìÐ' => '嬲', - 'ìÑ' => '嬣', - 'ìÒ' => '嬬', - 'ìÓ' => '嬧', - 'ìÔ' => '嬦', - 'ìÕ' => '嬯', - 'ìÖ' => '嬮', - 'ì×' => 'å­»', - 'ìØ' => '寱', - 'ìÙ' => '寲', - 'ìÚ' => '嶷', - 'ìÛ' => '幬', - 'ìÜ' => '幪', - 'ìÝ' => 'å¾¾', - 'ìÞ' => 'å¾»', - 'ìß' => '懃', - 'ìà' => '憵', - 'ìá' => '憼', - 'ìâ' => '懧', - 'ìã' => '懠', - 'ìä' => '懥', - 'ìå' => '懤', - 'ìæ' => '懨', - 'ìç' => '懞', - 'ìè' => '擯', - 'ìé' => 'æ“©', - 'ìê' => 'æ“£', - 'ìë' => 'æ“«', - 'ìì' => '擤', - 'ìí' => '擨', - 'ìî' => 'æ–', - 'ìï' => 'æ–€', - 'ìð' => 'æ–¶', - 'ìñ' => 'æ—š', - 'ìò' => 'æ›’', - 'ìó' => 'æª', - 'ìô' => '檖', - 'ìõ' => 'æª', - 'ìö' => '檥', - 'ì÷' => '檉', - 'ìø' => '檟', - 'ìù' => '檛', - 'ìú' => '檡', - 'ìû' => '檞', - 'ìü' => '檇', - 'ìý' => '檓', - 'ìþ' => '檎', - 'í@' => '檕', - 'íA' => '檃', - 'íB' => '檨', - 'íC' => '檤', - 'íD' => '檑', - 'íE' => 'æ©¿', - 'íF' => '檦', - 'íG' => '檚', - 'íH' => '檅', - 'íI' => '檌', - 'íJ' => '檒', - 'íK' => 'æ­›', - 'íL' => 'æ®­', - 'íM' => 'æ°‰', - 'íN' => 'æ¿Œ', - 'íO' => '澩', - 'íP' => 'æ¿´', - 'íQ' => 'æ¿”', - 'íR' => 'æ¿£', - 'íS' => 'æ¿œ', - 'íT' => 'æ¿­', - 'íU' => '濧', - 'íV' => '濦', - 'íW' => 'æ¿ž', - 'íX' => '濲', - 'íY' => 'æ¿', - 'íZ' => 'æ¿¢', - 'í[' => '濨', - 'í\\' => '燡', - 'í]' => '燱', - 'í^' => '燨', - 'í_' => '燲', - 'í`' => '燤', - 'ía' => '燰', - 'íb' => '燢', - 'íc' => 'ç³', - 'íd' => 'ç®', - 'íe' => 'ç¯', - 'íf' => 'ç’—', - 'íg' => 'ç’²', - 'íh' => 'ç’«', - 'íi' => 'ç’', - 'íj' => 'ç’ª', - 'ík' => 'ç’­', - 'íl' => 'ç’±', - 'ím' => 'ç’¥', - 'ín' => 'ç’¯', - 'ío' => 'ç”', - 'íp' => '甑', - 'íq' => 'ç”’', - 'ír' => 'ç”', - 'ís' => 'ç–„', - 'ít' => '癃', - 'íu' => '癈', - 'ív' => '癉', - 'íw' => '癇', - 'íx' => '皤', - 'íy' => '盩', - 'íz' => 'çžµ', - 'í{' => 'çž«', - 'í|' => 'çž²', - 'í}' => 'çž·', - 'í~' => '瞶', - 'í¡' => 'çž´', - 'í¢' => 'çž±', - 'í£' => '瞨', - 'í¤' => '矰', - 'í¥' => '磳', - 'í¦' => '磽', - 'í§' => '礂', - 'í¨' => '磻', - 'í©' => '磼', - 'íª' => '磲', - 'í«' => '礅', - 'í¬' => '磹', - 'í­' => '磾', - 'í®' => '礄', - 'í¯' => '禫', - 'í°' => '禨', - 'í±' => 'ç©œ', - 'í²' => 'ç©›', - 'í³' => 'ç©–', - 'í´' => '穘', - 'íµ' => 'ç©”', - 'í¶' => 'ç©š', - 'í·' => '窾', - 'í¸' => 'ç«€', - 'í¹' => 'ç«', - 'íº' => 'ç°…', - 'í»' => 'ç°', - 'í¼' => '篲', - 'í½' => 'ç°€', - 'í¾' => '篿', - 'í¿' => '篻', - 'íÀ' => 'ç°Ž', - 'íÁ' => '篴', - 'íÂ' => 'ç°‹', - 'íÃ' => '篳', - 'íÄ' => 'ç°‚', - 'íÅ' => 'ç°‰', - 'íÆ' => 'ç°ƒ', - 'íÇ' => 'ç°', - 'íÈ' => '篸', - 'íÉ' => '篽', - 'íÊ' => 'ç°†', - 'íË' => '篰', - 'íÌ' => '篱', - 'íÍ' => 'ç°', - 'íÎ' => 'ç°Š', - 'íÏ' => '糨', - 'íÐ' => '縭', - 'íÑ' => '縼', - 'íÒ' => '繂', - 'íÓ' => '縳', - 'íÔ' => '顈', - 'íÕ' => '縸', - 'íÖ' => '縪', - 'í×' => '繉', - 'íØ' => 'ç¹€', - 'íÙ' => '繇', - 'íÚ' => '縩', - 'íÛ' => '繌', - 'íÜ' => '縰', - 'íÝ' => '縻', - 'íÞ' => '縶', - 'íß' => '繄', - 'íà' => '縺', - 'íá' => 'ç½…', - 'íâ' => '罿', - 'íã' => 'ç½¾', - 'íä' => 'ç½½', - 'íå' => 'ç¿´', - 'íæ' => '翲', - 'íç' => '耬', - 'íè' => '膻', - 'íé' => '臄', - 'íê' => '臌', - 'íë' => '臊', - 'íì' => '臅', - 'íí' => '臇', - 'íî' => '膼', - 'íï' => '臩', - 'íð' => '艛', - 'íñ' => '艚', - 'íò' => '艜', - 'íó' => 'è–ƒ', - 'íô' => 'è–€', - 'íõ' => 'è–', - 'íö' => 'è–§', - 'í÷' => 'è–•', - 'íø' => 'è– ', - 'íù' => 'è–‹', - 'íú' => 'è–£', - 'íû' => 'è•»', - 'íü' => 'è–¤', - 'íý' => 'è–š', - 'íþ' => 'è–ž', - 'î@' => 'è•·', - 'îA' => '蕼', - 'îB' => 'è–‰', - 'îC' => 'è–¡', - 'îD' => '蕺', - 'îE' => '蕸', - 'îF' => 'è•—', - 'îG' => 'è–Ž', - 'îH' => 'è––', - 'îI' => 'è–†', - 'îJ' => 'è–', - 'îK' => 'è–™', - 'îL' => 'è–', - 'îM' => 'è–', - 'îN' => 'è–¢', - 'îO' => 'è–‚', - 'îP' => 'è–ˆ', - 'îQ' => 'è–…', - 'îR' => '蕹', - 'îS' => '蕶', - 'îT' => 'è–˜', - 'îU' => 'è–', - 'îV' => 'è–Ÿ', - 'îW' => '虨', - 'îX' => 'èž¾', - 'îY' => '螪', - 'îZ' => 'èž­', - 'î[' => '蟅', - 'î\\' => 'èž°', - 'î]' => '螬', - 'î^' => 'èž¹', - 'î_' => 'èžµ', - 'î`' => 'èž¼', - 'îa' => 'èž®', - 'îb' => '蟉', - 'îc' => '蟃', - 'îd' => '蟂', - 'îe' => '蟌', - 'îf' => 'èž·', - 'îg' => '螯', - 'îh' => '蟄', - 'îi' => '蟊', - 'îj' => 'èž´', - 'îk' => '螶', - 'îl' => 'èž¿', - 'îm' => '螸', - 'în' => 'èž½', - 'îo' => '蟞', - 'îp' => 'èž²', - 'îq' => '褵', - 'îr' => '褳', - 'îs' => '褼', - 'ît' => '褾', - 'îu' => 'è¥', - 'îv' => '襒', - 'îw' => '褷', - 'îx' => '襂', - 'îy' => '覭', - 'îz' => '覯', - 'î{' => '覮', - 'î|' => '觲', - 'î}' => '觳', - 'î~' => '謞', - 'î¡' => '謘', - 'î¢' => '謖', - 'î£' => '謑', - 'î¤' => '謅', - 'î¥' => '謋', - 'î¦' => '謢', - 'î§' => 'è¬', - 'î¨' => '謒', - 'î©' => '謕', - 'îª' => '謇', - 'î«' => 'è¬', - 'î¬' => '謈', - 'î­' => '謆', - 'î®' => '謜', - 'î¯' => '謓', - 'î°' => '謚', - 'î±' => 'è±', - 'î²' => 'è±°', - 'î³' => 'è±²', - 'î´' => 'è±±', - 'îµ' => '豯', - 'î¶' => '貕', - 'î·' => 'è²”', - 'î¸' => 'è³¹', - 'î¹' => '赯', - 'îº' => '蹎', - 'î»' => 'è¹', - 'î¼' => '蹓', - 'î½' => 'è¹', - 'î¾' => '蹌', - 'î¿' => '蹇', - 'îÀ' => '轃', - 'îÁ' => 'è½€', - 'îÂ' => 'é‚…', - 'îÃ' => 'é¾', - 'îÄ' => '鄸', - 'îÅ' => '醚', - 'îÆ' => '醢', - 'îÇ' => '醛', - 'îÈ' => '醙', - 'îÉ' => '醟', - 'îÊ' => '醡', - 'îË' => 'é†', - 'îÌ' => '醠', - 'îÍ' => '鎡', - 'îÎ' => '鎃', - 'îÏ' => '鎯', - 'îÐ' => 'é¤', - 'îÑ' => 'é–', - 'îÒ' => 'é‡', - 'îÓ' => 'é¼', - 'îÔ' => 'é˜', - 'îÕ' => 'éœ', - 'îÖ' => 'é¶', - 'î×' => 'é‰', - 'îØ' => 'é', - 'îÙ' => 'é‘', - 'îÚ' => 'é ', - 'îÛ' => 'é­', - 'îÜ' => 'éŽ', - 'îÝ' => 'éŒ', - 'îÞ' => 'éª', - 'îß' => 'é¹', - 'îà' => 'é—', - 'îá' => 'é•', - 'îâ' => 'é’', - 'îã' => 'é', - 'îä' => 'é±', - 'îå' => 'é·', - 'îæ' => 'é»', - 'îç' => 'é¡', - 'îè' => 'éž', - 'îé' => 'é£', - 'îê' => 'é§', - 'îë' => '鎀', - 'îì' => 'éŽ', - 'îí' => 'é™', - 'îî' => 'é—‡', - 'îï' => 'é—€', - 'îð' => 'é—‰', - 'îñ' => 'é—ƒ', - 'îò' => 'é—…', - 'îó' => 'é–·', - 'îô' => 'éš®', - 'îõ' => 'éš°', - 'îö' => '隬', - 'î÷' => '霠', - 'îø' => '霟', - 'îù' => '霘', - 'îú' => 'éœ', - 'îû' => '霙', - 'îü' => 'éžš', - 'îý' => 'éž¡', - 'îþ' => 'éžœ', - 'ï@' => 'éžž', - 'ïA' => 'éž', - 'ïB' => '韕', - 'ïC' => '韔', - 'ïD' => '韱', - 'ïE' => 'é¡', - 'ïF' => 'é¡„', - 'ïG' => 'é¡Š', - 'ïH' => '顉', - 'ïI' => 'é¡…', - 'ïJ' => '顃', - 'ïK' => '餥', - 'ïL' => '餫', - 'ïM' => '餬', - 'ïN' => '餪', - 'ïO' => '餳', - 'ïP' => '餲', - 'ïQ' => '餯', - 'ïR' => '餭', - 'ïS' => '餱', - 'ïT' => '餰', - 'ïU' => '馘', - 'ïV' => '馣', - 'ïW' => '馡', - 'ïX' => '騂', - 'ïY' => '駺', - 'ïZ' => '駴', - 'ï[' => '駷', - 'ï\\' => '駹', - 'ï]' => '駸', - 'ï^' => '駶', - 'ï_' => '駻', - 'ï`' => '駽', - 'ïa' => '駾', - 'ïb' => '駼', - 'ïc' => '騃', - 'ïd' => '骾', - 'ïe' => '髾', - 'ïf' => '髽', - 'ïg' => 'é¬', - 'ïh' => '髼', - 'ïi' => 'é­ˆ', - 'ïj' => '鮚', - 'ïk' => '鮨', - 'ïl' => '鮞', - 'ïm' => 'é®›', - 'ïn' => '鮦', - 'ïo' => '鮡', - 'ïp' => '鮥', - 'ïq' => '鮤', - 'ïr' => '鮆', - 'ïs' => '鮢', - 'ït' => 'é® ', - 'ïu' => '鮯', - 'ïv' => 'é´³', - 'ïw' => 'éµ', - 'ïx' => '鵧', - 'ïy' => 'é´¶', - 'ïz' => 'é´®', - 'ï{' => 'é´¯', - 'ï|' => 'é´±', - 'ï}' => 'é´¸', - 'ï~' => 'é´°', - 'ï¡' => 'éµ…', - 'ï¢' => '鵂', - 'ï£' => '鵃', - 'ï¤' => 'é´¾', - 'ï¥' => 'é´·', - 'ï¦' => 'éµ€', - 'ï§' => 'é´½', - 'ï¨' => '翵', - 'ï©' => 'é´­', - 'ïª' => '麊', - 'ï«' => '麉', - 'ï¬' => 'éº', - 'ï­' => '麰', - 'ï®' => '黈', - 'ï¯' => '黚', - 'ï°' => 'é»»', - 'ï±' => '黿', - 'ï²' => '鼤', - 'ï³' => 'é¼£', - 'ï´' => 'é¼¢', - 'ïµ' => 'é½”', - 'ï¶' => 'é¾ ', - 'ï·' => '儱', - 'ï¸' => 'å„­', - 'ï¹' => 'å„®', - 'ïº' => '嚘', - 'ï»' => 'åšœ', - 'ï¼' => 'åš—', - 'ï½' => 'åšš', - 'ï¾' => 'åš', - 'ï¿' => 'åš™', - 'ïÀ' => '奰', - 'ïÁ' => '嬼', - 'ïÂ' => '屩', - 'ïÃ' => '屪', - 'ïÄ' => 'å·€', - 'ïÅ' => 'å¹­', - 'ïÆ' => 'å¹®', - 'ïÇ' => '懘', - 'ïÈ' => '懟', - 'ïÉ' => '懭', - 'ïÊ' => '懮', - 'ïË' => '懱', - 'ïÌ' => '懪', - 'ïÍ' => '懰', - 'ïÎ' => '懫', - 'ïÏ' => '懖', - 'ïÐ' => '懩', - 'ïÑ' => 'æ“¿', - 'ïÒ' => '攄', - 'ïÓ' => '擽', - 'ïÔ' => '擸', - 'ïÕ' => 'æ”', - 'ïÖ' => '攃', - 'ï×' => '擼', - 'ïØ' => 'æ–”', - 'ïÙ' => 'æ—›', - 'ïÚ' => '曚', - 'ïÛ' => 'æ››', - 'ïÜ' => '曘', - 'ïÝ' => 'æ«…', - 'ïÞ' => '檹', - 'ïß' => '檽', - 'ïà' => 'æ«¡', - 'ïá' => '櫆', - 'ïâ' => '檺', - 'ïã' => '檶', - 'ïä' => '檷', - 'ïå' => '櫇', - 'ïæ' => '檴', - 'ïç' => '檭', - 'ïè' => 'æ­ž', - 'ïé' => '毉', - 'ïê' => 'æ°‹', - 'ïë' => '瀇', - 'ïì' => '瀌', - 'ïí' => 'ç€', - 'ïî' => 'ç€', - 'ïï' => '瀅', - 'ïð' => '瀔', - 'ïñ' => '瀎', - 'ïò' => 'æ¿¿', - 'ïó' => '瀀', - 'ïô' => 'æ¿»', - 'ïõ' => '瀦', - 'ïö' => '濼', - 'ï÷' => 'æ¿·', - 'ïø' => '瀊', - 'ïù' => 'çˆ', - 'ïú' => '燿', - 'ïû' => '燹', - 'ïü' => '爃', - 'ïý' => '燽', - 'ïþ' => 'ç¶', - 'ð@' => 'ç’¸', - 'ðA' => 'ç“€', - 'ðB' => 'ç’µ', - 'ðC' => 'ç“', - 'ðD' => 'ç’¾', - 'ðE' => 'ç’¶', - 'ðF' => 'ç’»', - 'ðG' => 'ç“‚', - 'ðH' => 'ç””', - 'ðI' => '甓', - 'ðJ' => '癜', - 'ðK' => '癤', - 'ðL' => 'ç™™', - 'ðM' => 'ç™', - 'ðN' => '癓', - 'ðO' => 'ç™—', - 'ðP' => '癚', - 'ðQ' => '皦', - 'ðR' => 'çš½', - 'ðS' => '盬', - 'ðT' => '矂', - 'ðU' => '瞺', - 'ðV' => '磿', - 'ðW' => '礌', - 'ðX' => '礓', - 'ðY' => '礔', - 'ðZ' => '礉', - 'ð[' => 'ç¤', - 'ð\\' => '礒', - 'ð]' => '礑', - 'ð^' => '禭', - 'ð_' => '禬', - 'ð`' => 'ç©Ÿ', - 'ða' => 'ç°œ', - 'ðb' => 'ç°©', - 'ðc' => 'ç°™', - 'ðd' => 'ç° ', - 'ðe' => 'ç°Ÿ', - 'ðf' => 'ç°­', - 'ðg' => 'ç°', - 'ðh' => 'ç°¦', - 'ði' => 'ç°¨', - 'ðj' => 'ç°¢', - 'ðk' => 'ç°¥', - 'ðl' => 'ç°°', - 'ðm' => '繜', - 'ðn' => 'ç¹', - 'ðo' => 'ç¹–', - 'ðp' => 'ç¹£', - 'ðq' => '繘', - 'ðr' => 'ç¹¢', - 'ðs' => '繟', - 'ðt' => '繑', - 'ðu' => 'ç¹ ', - 'ðv' => 'ç¹—', - 'ðw' => '繓', - 'ðx' => 'ç¾µ', - 'ðy' => 'ç¾³', - 'ðz' => 'ç¿·', - 'ð{' => '翸', - 'ð|' => 'èµ', - 'ð}' => '臑', - 'ð~' => '臒', - 'ð¡' => 'è‡', - 'ð¢' => '艟', - 'ð£' => '艞', - 'ð¤' => 'è–´', - 'ð¥' => 'è—†', - 'ð¦' => 'è—€', - 'ð§' => 'è—ƒ', - 'ð¨' => 'è—‚', - 'ð©' => 'è–³', - 'ðª' => 'è–µ', - 'ð«' => 'è–½', - 'ð¬' => 'è—‡', - 'ð­' => 'è—„', - 'ð®' => 'è–¿', - 'ð¯' => 'è—‹', - 'ð°' => 'è—Ž', - 'ð±' => 'è—ˆ', - 'ð²' => 'è—…', - 'ð³' => 'è–±', - 'ð´' => 'è–¶', - 'ðµ' => 'è—’', - 'ð¶' => '蘤', - 'ð·' => 'è–¸', - 'ð¸' => 'è–·', - 'ð¹' => 'è–¾', - 'ðº' => '虩', - 'ð»' => '蟧', - 'ð¼' => '蟦', - 'ð½' => '蟢', - 'ð¾' => '蟛', - 'ð¿' => '蟫', - 'ðÀ' => '蟪', - 'ðÁ' => '蟥', - 'ðÂ' => '蟟', - 'ðÃ' => '蟳', - 'ðÄ' => '蟤', - 'ðÅ' => '蟔', - 'ðÆ' => '蟜', - 'ðÇ' => '蟓', - 'ðÈ' => '蟭', - 'ðÉ' => '蟘', - 'ðÊ' => '蟣', - 'ðË' => '螤', - 'ðÌ' => '蟗', - 'ðÍ' => '蟙', - 'ðÎ' => 'è ', - 'ðÏ' => '蟴', - 'ðÐ' => '蟨', - 'ðÑ' => 'èŸ', - 'ðÒ' => '襓', - 'ðÓ' => '襋', - 'ðÔ' => 'è¥', - 'ðÕ' => '襌', - 'ðÖ' => '襆', - 'ð×' => 'è¥', - 'ðØ' => '襑', - 'ðÙ' => '襉', - 'ðÚ' => '謪', - 'ðÛ' => '謧', - 'ðÜ' => '謣', - 'ðÝ' => '謳', - 'ðÞ' => '謰', - 'ðß' => '謵', - 'ðà' => 'è­‡', - 'ðá' => '謯', - 'ðâ' => '謼', - 'ðã' => '謾', - 'ðä' => '謱', - 'ðå' => '謥', - 'ðæ' => '謷', - 'ðç' => '謦', - 'ðè' => '謶', - 'ðé' => '謮', - 'ðê' => '謤', - 'ðë' => '謻', - 'ðì' => '謽', - 'ðí' => '謺', - 'ðî' => '豂', - 'ðï' => 'è±µ', - 'ðð' => 'è²™', - 'ðñ' => '貘', - 'ðò' => 'è²—', - 'ðó' => 'è³¾', - 'ðô' => 'è´„', - 'ðõ' => 'è´‚', - 'ðö' => 'è´€', - 'ð÷' => '蹜', - 'ðø' => 'è¹¢', - 'ðù' => 'è¹ ', - 'ðú' => 'è¹—', - 'ðû' => 'è¹–', - 'ðü' => '蹞', - 'ðý' => 'è¹¥', - 'ðþ' => '蹧', - 'ñ@' => 'è¹›', - 'ñA' => '蹚', - 'ñB' => '蹡', - 'ñC' => 'è¹', - 'ñD' => '蹩', - 'ñE' => 'è¹”', - 'ñF' => '轆', - 'ñG' => '轇', - 'ñH' => '轈', - 'ñI' => '轋', - 'ñJ' => '鄨', - 'ñK' => '鄺', - 'ñL' => 'é„»', - 'ñM' => '鄾', - 'ñN' => '醨', - 'ñO' => '醥', - 'ñP' => '醧', - 'ñQ' => '醯', - 'ñR' => '醪', - 'ñS' => '鎵', - 'ñT' => '鎌', - 'ñU' => '鎒', - 'ñV' => '鎷', - 'ñW' => '鎛', - 'ñX' => 'éŽ', - 'ñY' => '鎉', - 'ñZ' => '鎧', - 'ñ[' => '鎎', - 'ñ\\' => '鎪', - 'ñ]' => '鎞', - 'ñ^' => '鎦', - 'ñ_' => '鎕', - 'ñ`' => '鎈', - 'ña' => '鎙', - 'ñb' => '鎟', - 'ñc' => 'éŽ', - 'ñd' => '鎱', - 'ñe' => '鎑', - 'ñf' => '鎲', - 'ñg' => '鎤', - 'ñh' => '鎨', - 'ñi' => '鎴', - 'ñj' => '鎣', - 'ñk' => '鎥', - 'ñl' => 'é—’', - 'ñm' => 'é—“', - 'ñn' => 'é—‘', - 'ño' => 'éš³', - 'ñp' => 'é›—', - 'ñq' => '雚', - 'ñr' => 'å·‚', - 'ñs' => '雟', - 'ñt' => '雘', - 'ñu' => 'é›', - 'ñv' => '霣', - 'ñw' => '霢', - 'ñx' => '霥', - 'ñy' => '鞬', - 'ñz' => 'éž®', - 'ñ{' => '鞨', - 'ñ|' => 'éž«', - 'ñ}' => '鞤', - 'ñ~' => '鞪', - 'ñ¡' => '鞢', - 'ñ¢' => '鞥', - 'ñ£' => '韗', - 'ñ¤' => '韙', - 'ñ¥' => '韖', - 'ñ¦' => '韘', - 'ñ§' => '韺', - 'ñ¨' => 'é¡', - 'ñ©' => 'é¡‘', - 'ñª' => 'é¡’', - 'ñ«' => '颸', - 'ñ¬' => 'é¥', - 'ñ­' => '餼', - 'ñ®' => '餺', - 'ñ¯' => 'é¨', - 'ñ°' => '騋', - 'ñ±' => '騉', - 'ñ²' => 'é¨', - 'ñ³' => '騄', - 'ñ´' => '騑', - 'ñµ' => '騊', - 'ñ¶' => '騅', - 'ñ·' => '騇', - 'ñ¸' => '騆', - 'ñ¹' => 'é«€', - 'ñº' => 'é«œ', - 'ñ»' => '鬈', - 'ñ¼' => '鬄', - 'ñ½' => '鬅', - 'ñ¾' => '鬩', - 'ñ¿' => '鬵', - 'ñÀ' => 'é­Š', - 'ñÁ' => 'é­Œ', - 'ñÂ' => 'é­‹', - 'ñÃ' => '鯇', - 'ñÄ' => '鯆', - 'ñÅ' => '鯃', - 'ñÆ' => '鮿', - 'ñÇ' => 'é¯', - 'ñÈ' => '鮵', - 'ñÉ' => '鮸', - 'ñÊ' => '鯓', - 'ñË' => '鮶', - 'ñÌ' => '鯄', - 'ñÍ' => '鮹', - 'ñÎ' => '鮽', - 'ñÏ' => '鵜', - 'ñÐ' => '鵓', - 'ñÑ' => 'éµ', - 'ñÒ' => '鵊', - 'ñÓ' => 'éµ›', - 'ñÔ' => '鵋', - 'ñÕ' => 'éµ™', - 'ñÖ' => 'éµ–', - 'ñ×' => '鵌', - 'ñØ' => 'éµ—', - 'ñÙ' => 'éµ’', - 'ñÚ' => 'éµ”', - 'ñÛ' => '鵟', - 'ñÜ' => '鵘', - 'ñÝ' => '鵚', - 'ñÞ' => '麎', - 'ñß' => '麌', - 'ñà' => '黟', - 'ñá' => 'é¼', - 'ñâ' => 'é¼€', - 'ñã' => 'é¼–', - 'ñä' => 'é¼¥', - 'ñå' => '鼫', - 'ñæ' => '鼪', - 'ñç' => '鼩', - 'ñè' => '鼨', - 'ñé' => '齌', - 'ñê' => '齕', - 'ñë' => 'å„´', - 'ñì' => '儵', - 'ñí' => '劖', - 'ñî' => 'å‹·', - 'ñï' => '厴', - 'ñð' => 'åš«', - 'ññ' => 'åš­', - 'ñò' => '嚦', - 'ñó' => '嚧', - 'ñô' => '嚪', - 'ñõ' => '嚬', - 'ñö' => '壚', - 'ñ÷' => 'å£', - 'ñø' => '壛', - 'ñù' => '夒', - 'ñú' => '嬽', - 'ñû' => '嬾', - 'ñü' => '嬿', - 'ñý' => 'å·ƒ', - 'ñþ' => 'å¹°', - 'ò@' => '徿', - 'òA' => '懻', - 'òB' => '攇', - 'òC' => 'æ”', - 'òD' => 'æ”', - 'òE' => '攉', - 'òF' => '攌', - 'òG' => '攎', - 'òH' => 'æ–„', - 'òI' => 'æ—ž', - 'òJ' => 'æ—', - 'òK' => '曞', - 'òL' => '櫧', - 'òM' => 'æ« ', - 'òN' => 'æ«Œ', - 'òO' => 'æ«‘', - 'òP' => 'æ«™', - 'òQ' => 'æ«‹', - 'òR' => 'æ«Ÿ', - 'òS' => 'æ«œ', - 'òT' => 'æ«', - 'òU' => 'æ««', - 'òV' => 'æ«', - 'òW' => 'æ«', - 'òX' => 'æ«ž', - 'òY' => 'æ­ ', - 'òZ' => 'æ®°', - 'ò[' => 'æ°Œ', - 'ò\\' => '瀙', - 'ò]' => '瀧', - 'ò^' => '瀠', - 'ò_' => '瀖', - 'ò`' => '瀫', - 'òa' => '瀡', - 'òb' => '瀢', - 'òc' => '瀣', - 'òd' => '瀩', - 'òe' => '瀗', - 'òf' => '瀤', - 'òg' => '瀜', - 'òh' => '瀪', - 'òi' => '爌', - 'òj' => '爊', - 'òk' => '爇', - 'òl' => '爂', - 'òm' => '爅', - 'òn' => '犥', - 'òo' => '犦', - 'òp' => '犤', - 'òq' => '犣', - 'òr' => '犡', - 'òs' => 'ç“‹', - 'òt' => 'ç“…', - 'òu' => 'ç’·', - 'òv' => '瓃', - 'òw' => 'ç”–', - 'òx' => 'ç™ ', - 'òy' => '矉', - 'òz' => '矊', - 'ò{' => '矄', - 'ò|' => '矱', - 'ò}' => 'ç¤', - 'ò~' => '礛', - 'ò¡' => '礡', - 'ò¢' => '礜', - 'ò£' => '礗', - 'ò¤' => '礞', - 'ò¥' => '禰', - 'ò¦' => '穧', - 'ò§' => '穨', - 'ò¨' => 'ç°³', - 'ò©' => 'ç°¼', - 'òª' => 'ç°¹', - 'ò«' => 'ç°¬', - 'ò¬' => 'ç°»', - 'ò­' => '糬', - 'ò®' => '糪', - 'ò¯' => '繶', - 'ò°' => 'ç¹µ', - 'ò±' => '繸', - 'ò²' => 'ç¹°', - 'ò³' => 'ç¹·', - 'ò´' => '繯', - 'òµ' => '繺', - 'ò¶' => 'ç¹²', - 'ò·' => 'ç¹´', - 'ò¸' => '繨', - 'ò¹' => '罋', - 'òº' => '罊', - 'ò»' => '羃', - 'ò¼' => '羆', - 'ò½' => 'ç¾·', - 'ò¾' => '翽', - 'ò¿' => '翾', - 'òÀ' => 'è¸', - 'òÁ' => '臗', - 'òÂ' => '臕', - 'òÃ' => '艤', - 'òÄ' => '艡', - 'òÅ' => '艣', - 'òÆ' => 'è—«', - 'òÇ' => 'è—±', - 'òÈ' => 'è—­', - 'òÉ' => 'è—™', - 'òÊ' => 'è—¡', - 'òË' => 'è—¨', - 'òÌ' => 'è—š', - 'òÍ' => 'è——', - 'òÎ' => 'è—¬', - 'òÏ' => 'è—²', - 'òÐ' => 'è—¸', - 'òÑ' => 'è—˜', - 'òÒ' => 'è—Ÿ', - 'òÓ' => 'è—£', - 'òÔ' => 'è—œ', - 'òÕ' => 'è—‘', - 'òÖ' => 'è—°', - 'ò×' => 'è—¦', - 'òØ' => 'è—¯', - 'òÙ' => 'è—ž', - 'òÚ' => 'è—¢', - 'òÛ' => 'è €', - 'òÜ' => '蟺', - 'òÝ' => 'è ƒ', - 'òÞ' => '蟶', - 'òß' => '蟷', - 'òà' => 'è ‰', - 'òá' => 'è Œ', - 'òâ' => 'è ‹', - 'òã' => 'è †', - 'òä' => '蟼', - 'òå' => 'è ˆ', - 'òæ' => '蟿', - 'òç' => 'è Š', - 'òè' => 'è ‚', - 'òé' => '襢', - 'òê' => '襚', - 'òë' => '襛', - 'òì' => '襗', - 'òí' => '襡', - 'òî' => '襜', - 'òï' => '襘', - 'òð' => 'è¥', - 'òñ' => '襙', - 'òò' => '覈', - 'òó' => '覷', - 'òô' => '覶', - 'òõ' => '觶', - 'òö' => 'è­', - 'ò÷' => 'è­ˆ', - 'òø' => 'è­Š', - 'òù' => 'è­€', - 'òú' => 'è­“', - 'òû' => 'è­–', - 'òü' => 'è­”', - 'òý' => 'è­‹', - 'òþ' => 'è­•', - 'ó@' => 'è­‘', - 'óA' => 'è­‚', - 'óB' => 'è­’', - 'óC' => 'è­—', - 'óD' => '豃', - 'óE' => 'è±·', - 'óF' => '豶', - 'óG' => '貚', - 'óH' => 'è´†', - 'óI' => 'è´‡', - 'óJ' => 'è´‰', - 'óK' => '趬', - 'óL' => '趪', - 'óM' => '趭', - 'óN' => '趫', - 'óO' => 'è¹­', - 'óP' => '蹸', - 'óQ' => 'è¹³', - 'óR' => '蹪', - 'óS' => '蹯', - 'óT' => 'è¹»', - 'óU' => '軂', - 'óV' => 'è½’', - 'óW' => '轑', - 'óX' => 'è½', - 'óY' => 'è½', - 'óZ' => '轓', - 'ó[' => 'è¾´', - 'ó\\' => 'é…€', - 'ó]' => 'é„¿', - 'ó^' => '醰', - 'ó_' => '醭', - 'ó`' => 'éž', - 'óa' => 'é‡', - 'ób' => 'é', - 'óc' => 'é‚', - 'ód' => 'éš', - 'óe' => 'é', - 'óf' => 'é¹', - 'óg' => 'é¬', - 'óh' => 'éŒ', - 'ói' => 'é™', - 'ój' => '鎩', - 'ók' => 'é¦', - 'ól' => 'éŠ', - 'óm' => 'é”', - 'ón' => 'é®', - 'óo' => 'é£', - 'óp' => 'é•', - 'óq' => 'é„', - 'ór' => 'éŽ', - 'ós' => 'é€', - 'ót' => 'é’', - 'óu' => 'é§', - 'óv' => '镽', - 'ów' => 'é—š', - 'óx' => 'é—›', - 'óy' => '雡', - 'óz' => '霩', - 'ó{' => '霫', - 'ó|' => '霬', - 'ó}' => '霨', - 'ó~' => '霦', - 'ó¡' => 'éž³', - 'ó¢' => 'éž·', - 'ó£' => '鞶', - 'ó¤' => 'éŸ', - 'ó¥' => '韞', - 'ó¦' => '韟', - 'ó§' => 'é¡œ', - 'ó¨' => 'é¡™', - 'ó©' => 'é¡', - 'óª' => 'é¡—', - 'ó«' => '颿', - 'ó¬' => '颽', - 'ó­' => '颻', - 'ó®' => '颾', - 'ó¯' => '饈', - 'ó°' => '饇', - 'ó±' => '饃', - 'ó²' => '馦', - 'ó³' => '馧', - 'ó´' => '騚', - 'óµ' => '騕', - 'ó¶' => '騥', - 'ó·' => 'é¨', - 'ó¸' => '騤', - 'ó¹' => '騛', - 'óº' => '騢', - 'ó»' => '騠', - 'ó¼' => '騧', - 'ó½' => '騣', - 'ó¾' => '騞', - 'ó¿' => '騜', - 'óÀ' => '騔', - 'óÁ' => 'é«‚', - 'óÂ' => '鬋', - 'óÃ' => '鬊', - 'óÄ' => '鬎', - 'óÅ' => '鬌', - 'óÆ' => '鬷', - 'óÇ' => '鯪', - 'óÈ' => '鯫', - 'óÉ' => '鯠', - 'óÊ' => '鯞', - 'óË' => '鯤', - 'óÌ' => '鯦', - 'óÍ' => '鯢', - 'óÎ' => '鯰', - 'óÏ' => '鯔', - 'óÐ' => '鯗', - 'óÑ' => '鯬', - 'óÒ' => '鯜', - 'óÓ' => '鯙', - 'óÔ' => '鯥', - 'óÕ' => '鯕', - 'óÖ' => '鯡', - 'ó×' => '鯚', - 'óØ' => 'éµ·', - 'óÙ' => 'é¶', - 'óÚ' => '鶊', - 'óÛ' => '鶄', - 'óÜ' => '鶈', - 'óÝ' => 'éµ±', - 'óÞ' => '鶀', - 'óß' => '鵸', - 'óà' => '鶆', - 'óá' => '鶋', - 'óâ' => '鶌', - 'óã' => 'éµ½', - 'óä' => '鵫', - 'óå' => 'éµ´', - 'óæ' => 'éµµ', - 'óç' => 'éµ°', - 'óè' => '鵩', - 'óé' => '鶅', - 'óê' => 'éµ³', - 'óë' => 'éµ»', - 'óì' => '鶂', - 'óí' => '鵯', - 'óî' => 'éµ¹', - 'óï' => '鵿', - 'óð' => '鶇', - 'óñ' => '鵨', - 'óò' => '麔', - 'óó' => '麑', - 'óô' => '黀', - 'óõ' => '黼', - 'óö' => 'é¼­', - 'ó÷' => 'é½€', - 'óø' => 'é½', - 'óù' => 'é½', - 'óú' => 'é½–', - 'óû' => 'é½—', - 'óü' => '齘', - 'óý' => '匷', - 'óþ' => 'åš²', - 'ô@' => 'åšµ', - 'ôA' => 'åš³', - 'ôB' => '壣', - 'ôC' => 'å­…', - 'ôD' => 'å·†', - 'ôE' => 'å·‡', - 'ôF' => 'å»®', - 'ôG' => '廯', - 'ôH' => 'å¿€', - 'ôI' => 'å¿', - 'ôJ' => '懹', - 'ôK' => 'æ”—', - 'ôL' => 'æ”–', - 'ôM' => '攕', - 'ôN' => '攓', - 'ôO' => 'æ—Ÿ', - 'ôP' => '曨', - 'ôQ' => '曣', - 'ôR' => '曤', - 'ôS' => '櫳', - 'ôT' => 'æ«°', - 'ôU' => '櫪', - 'ôV' => '櫨', - 'ôW' => '櫹', - 'ôX' => '櫱', - 'ôY' => 'æ«®', - 'ôZ' => '櫯', - 'ô[' => '瀼', - 'ô\\' => '瀵', - 'ô]' => '瀯', - 'ô^' => '瀷', - 'ô_' => '瀴', - 'ô`' => '瀱', - 'ôa' => 'ç‚', - 'ôb' => '瀸', - 'ôc' => '瀿', - 'ôd' => '瀺', - 'ôe' => '瀹', - 'ôf' => 'ç€', - 'ôg' => '瀻', - 'ôh' => '瀳', - 'ôi' => 'ç', - 'ôj' => '爓', - 'ôk' => '爔', - 'ôl' => '犨', - 'ôm' => 'ç½', - 'ôn' => 'ç¼', - 'ôo' => 'ç’º', - 'ôp' => 'çš«', - 'ôq' => '皪', - 'ôr' => 'çš¾', - 'ôs' => 'ç›­', - 'ôt' => '矌', - 'ôu' => '矎', - 'ôv' => 'çŸ', - 'ôw' => 'çŸ', - 'ôx' => '矲', - 'ôy' => '礥', - 'ôz' => '礣', - 'ô{' => '礧', - 'ô|' => '礨', - 'ô}' => '礤', - 'ô~' => '礩', - 'ô¡' => '禲', - 'ô¢' => 'ç©®', - 'ô£' => '穬', - 'ô¤' => 'ç©­', - 'ô¥' => 'ç«·', - 'ô¦' => '籉', - 'ô§' => '籈', - 'ô¨' => '籊', - 'ô©' => '籇', - 'ôª' => 'ç±…', - 'ô«' => 'ç³®', - 'ô¬' => 'ç¹»', - 'ô­' => 'ç¹¾', - 'ô®' => 'çº', - 'ô¯' => '纀', - 'ô°' => '羺', - 'ô±' => 'ç¿¿', - 'ô²' => 'è¹', - 'ô³' => '臛', - 'ô´' => '臙', - 'ôµ' => '舋', - 'ô¶' => '艨', - 'ô·' => '艩', - 'ô¸' => '蘢', - 'ô¹' => 'è—¿', - 'ôº' => 'è˜', - 'ô»' => 'è—¾', - 'ô¼' => '蘛', - 'ô½' => '蘀', - 'ô¾' => 'è—¶', - 'ô¿' => '蘄', - 'ôÀ' => '蘉', - 'ôÁ' => '蘅', - 'ôÂ' => '蘌', - 'ôÃ' => 'è—½', - 'ôÄ' => 'è ™', - 'ôÅ' => 'è ', - 'ôÆ' => 'è ‘', - 'ôÇ' => 'è —', - 'ôÈ' => 'è “', - 'ôÉ' => 'è –', - 'ôÊ' => '襣', - 'ôË' => '襦', - 'ôÌ' => '覹', - 'ôÍ' => '觷', - 'ôÎ' => 'è­ ', - 'ôÏ' => 'è­ª', - 'ôÐ' => 'è­', - 'ôÑ' => 'è­¨', - 'ôÒ' => 'è­£', - 'ôÓ' => 'è­¥', - 'ôÔ' => 'è­§', - 'ôÕ' => 'è­­', - 'ôÖ' => '趮', - 'ô×' => '躆', - 'ôØ' => '躈', - 'ôÙ' => '躄', - 'ôÚ' => 'è½™', - 'ôÛ' => 'è½–', - 'ôÜ' => 'è½—', - 'ôÝ' => '轕', - 'ôÞ' => '轘', - 'ôß' => '轚', - 'ôà' => 'é‚', - 'ôá' => 'é…ƒ', - 'ôâ' => 'é…', - 'ôã' => '醷', - 'ôä' => '醵', - 'ôå' => '醲', - 'ôæ' => '醳', - 'ôç' => 'é‹', - 'ôè' => 'é“', - 'ôé' => 'é»', - 'ôê' => 'é ', - 'ôë' => 'é', - 'ôì' => 'é”', - 'ôí' => 'é¾', - 'ôî' => 'é•', - 'ôï' => 'é', - 'ôð' => 'é¨', - 'ôñ' => 'é™', - 'ôò' => 'é', - 'ôó' => 'éµ', - 'ôô' => 'é€', - 'ôõ' => 'é·', - 'ôö' => 'é‡', - 'ô÷' => 'éŽ', - 'ôø' => 'é–', - 'ôù' => 'é’', - 'ôú' => 'éº', - 'ôû' => 'é‰', - 'ôü' => 'é¸', - 'ôý' => 'éŠ', - 'ôþ' => 'é¿', - 'õ@' => 'é¼', - 'õA' => 'éŒ', - 'õB' => 'é¶', - 'õC' => 'é‘', - 'õD' => 'é†', - 'õE' => 'é—ž', - 'õF' => 'é— ', - 'õG' => 'é—Ÿ', - 'õH' => '霮', - 'õI' => '霯', - 'õJ' => 'éž¹', - 'õK' => 'éž»', - 'õL' => '韽', - 'õM' => '韾', - 'õN' => 'é¡ ', - 'õO' => 'é¡¢', - 'õP' => 'é¡£', - 'õQ' => 'é¡Ÿ', - 'õR' => 'é£', - 'õS' => '飂', - 'õT' => 'é¥', - 'õU' => '饎', - 'õV' => '饙', - 'õW' => '饌', - 'õX' => '饋', - 'õY' => '饓', - 'õZ' => '騲', - 'õ[' => '騴', - 'õ\\' => '騱', - 'õ]' => '騬', - 'õ^' => '騪', - 'õ_' => '騶', - 'õ`' => '騩', - 'õa' => '騮', - 'õb' => '騸', - 'õc' => '騭', - 'õd' => '髇', - 'õe' => 'é«Š', - 'õf' => '髆', - 'õg' => 'é¬', - 'õh' => '鬒', - 'õi' => '鬑', - 'õj' => 'é°‹', - 'õk' => 'é°ˆ', - 'õl' => '鯷', - 'õm' => 'é°…', - 'õn' => 'é°’', - 'õo' => '鯸', - 'õp' => 'é±€', - 'õq' => 'é°‡', - 'õr' => 'é°Ž', - 'õs' => 'é°†', - 'õt' => 'é°—', - 'õu' => 'é°”', - 'õv' => 'é°‰', - 'õw' => '鶟', - 'õx' => '鶙', - 'õy' => '鶤', - 'õz' => 'é¶', - 'õ{' => '鶒', - 'õ|' => '鶘', - 'õ}' => 'é¶', - 'õ~' => '鶛', - 'õ¡' => '鶠', - 'õ¢' => '鶔', - 'õ£' => '鶜', - 'õ¤' => '鶪', - 'õ¥' => '鶗', - 'õ¦' => '鶡', - 'õ§' => '鶚', - 'õ¨' => '鶢', - 'õ©' => '鶨', - 'õª' => '鶞', - 'õ«' => '鶣', - 'õ¬' => '鶿', - 'õ­' => '鶩', - 'õ®' => '鶖', - 'õ¯' => '鶦', - 'õ°' => '鶧', - 'õ±' => '麙', - 'õ²' => '麛', - 'õ³' => '麚', - 'õ´' => '黥', - 'õµ' => '黤', - 'õ¶' => '黧', - 'õ·' => '黦', - 'õ¸' => 'é¼°', - 'õ¹' => 'é¼®', - 'õº' => 'é½›', - 'õ»' => 'é½ ', - 'õ¼' => '齞', - 'õ½' => 'é½', - 'õ¾' => 'é½™', - 'õ¿' => '龑', - 'õÀ' => '儺', - 'õÁ' => '儹', - 'õÂ' => '劘', - 'õÃ' => '劗', - 'õÄ' => '囃', - 'õÅ' => 'åš½', - 'õÆ' => 'åš¾', - 'õÇ' => 'å­ˆ', - 'õÈ' => 'å­‡', - 'õÉ' => 'å·‹', - 'õÊ' => 'å·', - 'õË' => 'å»±', - 'õÌ' => '懽', - 'õÍ' => 'æ”›', - 'õÎ' => '欂', - 'õÏ' => '櫼', - 'õÐ' => '欃', - 'õÑ' => '櫸', - 'õÒ' => '欀', - 'õÓ' => 'çƒ', - 'õÔ' => 'ç„', - 'õÕ' => 'çŠ', - 'õÖ' => 'çˆ', - 'õ×' => 'ç‰', - 'õØ' => 'ç…', - 'õÙ' => 'ç†', - 'õÚ' => 'çˆ', - 'õÛ' => '爚', - 'õÜ' => '爙', - 'õÝ' => 'ç¾', - 'õÞ' => 'ç”—', - 'õß' => '癪', - 'õà' => 'çŸ', - 'õá' => '礭', - 'õâ' => '礱', - 'õã' => '礯', - 'õä' => 'ç±”', - 'õå' => '籓', - 'õæ' => 'ç³²', - 'õç' => '纊', - 'õè' => '纇', - 'õé' => '纈', - 'õê' => '纋', - 'õë' => '纆', - 'õì' => 'çº', - 'õí' => 'ç½', - 'õî' => 'ç¾»', - 'õï' => '耰', - 'õð' => 'è‡', - 'õñ' => '蘘', - 'õò' => '蘪', - 'õó' => '蘦', - 'õô' => '蘟', - 'õõ' => '蘣', - 'õö' => '蘜', - 'õ÷' => '蘙', - 'õø' => '蘧', - 'õù' => '蘮', - 'õú' => '蘡', - 'õû' => '蘠', - 'õü' => '蘩', - 'õý' => '蘞', - 'õþ' => '蘥', - 'ö@' => 'è ©', - 'öA' => 'è ', - 'öB' => 'è ›', - 'öC' => 'è  ', - 'öD' => 'è ¤', - 'öE' => 'è œ', - 'öF' => 'è «', - 'öG' => 'è¡Š', - 'öH' => '襭', - 'öI' => '襩', - 'öJ' => '襮', - 'öK' => '襫', - 'öL' => '觺', - 'öM' => 'è­¹', - 'öN' => 'è­¸', - 'öO' => 'è­…', - 'öP' => 'è­º', - 'öQ' => 'è­»', - 'öR' => 'è´', - 'öS' => 'è´”', - 'öT' => '趯', - 'öU' => '躎', - 'öV' => '躌', - 'öW' => '轞', - 'öX' => 'è½›', - 'öY' => 'è½', - 'öZ' => 'é…†', - 'ö[' => 'é…„', - 'ö\\' => 'é……', - 'ö]' => '醹', - 'ö^' => 'é¿', - 'ö_' => 'é»', - 'ö`' => 'é¶', - 'öa' => 'é©', - 'öb' => 'é½', - 'öc' => 'é¼', - 'öd' => 'é°', - 'öe' => 'é¹', - 'öf' => 'éª', - 'ög' => 'é·', - 'öh' => 'é¬', - 'öi' => 'é‘€', - 'öj' => 'é±', - 'ök' => 'é—¥', - 'öl' => 'é—¤', - 'öm' => 'é—£', - 'ön' => '霵', - 'öo' => '霺', - 'öp' => 'éž¿', - 'öq' => '韡', - 'ör' => '顤', - 'ös' => '飉', - 'öt' => '飆', - 'öu' => '飀', - 'öv' => '饘', - 'öw' => '饖', - 'öx' => '騹', - 'öy' => '騽', - 'öz' => '驆', - 'ö{' => 'é©„', - 'ö|' => 'é©‚', - 'ö}' => 'é©', - 'ö~' => '騺', - 'ö¡' => '騿', - 'ö¢' => 'é«', - 'ö£' => '鬕', - 'ö¤' => '鬗', - 'ö¥' => '鬘', - 'ö¦' => '鬖', - 'ö§' => '鬺', - 'ö¨' => 'é­’', - 'ö©' => 'é°«', - 'öª' => 'é°', - 'ö«' => 'é°œ', - 'ö¬' => 'é°¬', - 'ö­' => 'é°£', - 'ö®' => 'é°¨', - 'ö¯' => 'é°©', - 'ö°' => 'é°¤', - 'ö±' => 'é°¡', - 'ö²' => '鶷', - 'ö³' => '鶶', - 'ö´' => '鶼', - 'öµ' => 'é·', - 'ö¶' => 'é·‡', - 'ö·' => 'é·Š', - 'ö¸' => 'é·', - 'ö¹' => '鶾', - 'öº' => 'é·…', - 'ö»' => 'é·ƒ', - 'ö¼' => '鶻', - 'ö½' => '鶵', - 'ö¾' => 'é·Ž', - 'ö¿' => '鶹', - 'öÀ' => '鶺', - 'öÁ' => '鶬', - 'öÂ' => 'é·ˆ', - 'öÃ' => '鶱', - 'öÄ' => '鶭', - 'öÅ' => 'é·Œ', - 'öÆ' => '鶳', - 'öÇ' => 'é·', - 'öÈ' => '鶲', - 'öÉ' => '鹺', - 'öÊ' => '麜', - 'öË' => '黫', - 'öÌ' => 'é»®', - 'öÍ' => 'é»­', - 'öÎ' => 'é¼›', - 'öÏ' => '鼘', - 'öÐ' => '鼚', - 'öÑ' => 'é¼±', - 'öÒ' => '齎', - 'öÓ' => 'é½¥', - 'öÔ' => '齤', - 'öÕ' => 'é¾’', - 'öÖ' => '亹', - 'ö×' => '囆', - 'öØ' => 'å›…', - 'öÙ' => '囋', - 'öÚ' => '奱', - 'öÛ' => 'å­‹', - 'öÜ' => 'å­Œ', - 'öÝ' => 'å·•', - 'öÞ' => 'å·‘', - 'öß' => '廲', - 'öà' => '攡', - 'öá' => 'æ” ', - 'öâ' => '攦', - 'öã' => '攢', - 'öä' => '欋', - 'öå' => '欈', - 'öæ' => '欉', - 'öç' => 'æ°', - 'öè' => 'ç•', - 'öé' => 'ç–', - 'öê' => 'ç—', - 'öë' => 'ç’', - 'öì' => '爞', - 'öí' => '爟', - 'öî' => '犩', - 'öï' => 'ç¿', - 'öð' => '瓘', - 'öñ' => 'ç“•', - 'öò' => 'ç“™', - 'öó' => 'ç“—', - 'öô' => 'ç™­', - 'öõ' => 'çš­', - 'öö' => '礵', - 'ö÷' => '禴', - 'öø' => 'ç©°', - 'öù' => '穱', - 'öú' => 'ç±—', - 'öû' => '籜', - 'öü' => 'ç±™', - 'öý' => 'ç±›', - 'öþ' => '籚', - '÷@' => 'ç³´', - '÷A' => 'ç³±', - '÷B' => '纑', - '÷C' => 'ç½', - '÷D' => '羇', - '÷E' => '臞', - '÷F' => '艫', - '÷G' => '蘴', - '÷H' => '蘵', - '÷I' => '蘳', - '÷J' => '蘬', - '÷K' => '蘲', - '÷L' => '蘶', - '÷M' => 'è ¬', - '÷N' => 'è ¨', - '÷O' => 'è ¦', - '÷P' => 'è ª', - '÷Q' => 'è ¥', - '÷R' => '襱', - '÷S' => '覿', - '÷T' => '覾', - '÷U' => '觻', - '÷V' => 'è­¾', - '÷W' => '讄', - '÷X' => '讂', - '÷Y' => '讆', - '÷Z' => 'è®…', - '÷[' => 'è­¿', - '÷\\' => 'è´•', - '÷]' => '躕', - '÷^' => '躔', - '÷_' => '躚', - '÷`' => '躒', - '÷a' => 'èº', - '÷b' => '躖', - '÷c' => '躗', - '÷d' => 'è½ ', - '÷e' => 'è½¢', - '÷f' => 'é…‡', - '÷g' => 'é‘Œ', - '÷h' => 'é‘', - '÷i' => 'é‘Š', - '÷j' => 'é‘‹', - '÷k' => 'é‘', - '÷l' => '鑇', - '÷m' => 'é‘…', - '÷n' => '鑈', - '÷o' => '鑉', - '÷p' => '鑆', - '÷q' => '霿', - '÷r' => '韣', - '÷s' => '顪', - '÷t' => 'é¡©', - '÷u' => '飋', - '÷v' => '饔', - '÷w' => '饛', - '÷x' => 'é©Ž', - '÷y' => 'é©“', - '÷z' => 'é©”', - '÷{' => 'é©Œ', - '÷|' => 'é©', - '÷}' => '驈', - '÷~' => 'é©Š', - '÷¡' => '驉', - '÷¢' => 'é©’', - '÷£' => 'é©', - '÷¤' => 'é«', - '÷¥' => '鬙', - '÷¦' => '鬫', - '÷§' => '鬻', - '÷¨' => 'é­–', - '÷©' => 'é­•', - '÷ª' => '鱆', - '÷«' => '鱈', - '÷¬' => 'é°¿', - '÷­' => '鱄', - '÷®' => 'é°¹', - '÷¯' => 'é°³', - '÷°' => 'é±', - '÷±' => 'é°¼', - '÷²' => 'é°·', - '÷³' => 'é°´', - '÷´' => 'é°²', - '÷µ' => 'é°½', - '÷¶' => 'é°¶', - '÷·' => 'é·›', - '÷¸' => 'é·’', - '÷¹' => 'é·ž', - '÷º' => 'é·š', - '÷»' => 'é·‹', - '÷¼' => 'é·', - '÷½' => 'é·œ', - '÷¾' => 'é·‘', - '÷¿' => 'é·Ÿ', - '÷À' => 'é·©', - '÷Á' => 'é·™', - '÷Â' => 'é·˜', - '÷Ã' => 'é·–', - '÷Ä' => 'é·µ', - '÷Å' => 'é·•', - '÷Æ' => 'é·', - '÷Ç' => '麶', - '÷È' => 'é»°', - '÷É' => 'é¼µ', - '÷Ê' => 'é¼³', - '÷Ë' => 'é¼²', - '÷Ì' => '齂', - '÷Í' => '齫', - '÷Î' => '龕', - '÷Ï' => 'é¾¢', - '÷Ð' => '儽', - '÷Ñ' => '劙', - '÷Ò' => '壨', - '÷Ó' => '壧', - '÷Ô' => '奲', - '÷Õ' => 'å­', - '÷Ö' => 'å·˜', - '÷×' => 'è ¯', - '÷Ø' => 'å½', - '÷Ù' => 'æˆ', - '÷Ú' => '戃', - '÷Û' => '戄', - '÷Ü' => '攩', - '÷Ý' => '攥', - '÷Þ' => 'æ––', - '÷ß' => '曫', - '÷à' => '欑', - '÷á' => '欒', - '÷â' => 'æ¬', - '÷ã' => '毊', - '÷ä' => 'ç›', - '÷å' => 'çš', - '÷æ' => '爢', - '÷ç' => '玂', - '÷è' => 'çŽ', - '÷é' => '玃', - '÷ê' => 'ç™°', - '÷ë' => '矔', - '÷ì' => '籧', - '÷í' => '籦', - '÷î' => '纕', - '÷ï' => '艬', - '÷ð' => '蘺', - '÷ñ' => '虀', - '÷ò' => '蘹', - '÷ó' => '蘼', - '÷ô' => '蘱', - '÷õ' => '蘻', - '÷ö' => '蘾', - '÷÷' => 'è °', - '÷ø' => 'è ²', - '÷ù' => 'è ®', - '÷ú' => 'è ³', - '÷û' => '襶', - '÷ü' => '襴', - '÷ý' => '襳', - '÷þ' => '觾', - 'ø@' => '讌', - 'øA' => '讎', - 'øB' => '讋', - 'øC' => '讈', - 'øD' => 'è±…', - 'øE' => 'è´™', - 'øF' => '躘', - 'øG' => '轤', - 'øH' => 'è½£', - 'øI' => '醼', - 'øJ' => 'é‘¢', - 'øK' => 'é‘•', - 'øL' => 'é‘', - 'øM' => 'é‘—', - 'øN' => 'é‘ž', - 'øO' => '韄', - 'øP' => '韅', - 'øQ' => 'é €', - 'øR' => 'é©–', - 'øS' => 'é©™', - 'øT' => '鬞', - 'øU' => '鬟', - 'øV' => '鬠', - 'øW' => 'é±’', - 'øX' => '鱘', - 'øY' => 'é±', - 'øZ' => '鱊', - 'ø[' => 'é±', - 'ø\\' => '鱋', - 'ø]' => '鱕', - 'ø^' => 'é±™', - 'ø_' => '鱌', - 'ø`' => '鱎', - 'øa' => 'é·»', - 'øb' => 'é··', - 'øc' => 'é·¯', - 'ød' => 'é·£', - 'øe' => 'é·«', - 'øf' => 'é·¸', - 'øg' => 'é·¤', - 'øh' => 'é·¶', - 'øi' => 'é·¡', - 'øj' => 'é·®', - 'øk' => 'é·¦', - 'øl' => 'é·²', - 'øm' => 'é·°', - 'øn' => 'é·¢', - 'øo' => 'é·¬', - 'øp' => 'é·´', - 'øq' => 'é·³', - 'ør' => 'é·¨', - 'øs' => 'é·­', - 'øt' => '黂', - 'øu' => 'é»', - 'øv' => '黲', - 'øw' => '黳', - 'øx' => '鼆', - 'øy' => '鼜', - 'øz' => '鼸', - 'ø{' => 'é¼·', - 'ø|' => '鼶', - 'ø}' => '齃', - 'ø~' => 'é½', - 'ø¡' => 'é½±', - 'ø¢' => 'é½°', - 'ø£' => 'é½®', - 'ø¤' => '齯', - 'ø¥' => '囓', - 'ø¦' => 'å›', - 'ø§' => 'å­Ž', - 'ø¨' => 'å±­', - 'ø©' => 'æ”­', - 'øª' => 'æ›­', - 'ø«' => 'æ›®', - 'ø¬' => '欓', - 'ø­' => 'çŸ', - 'ø®' => 'ç¡', - 'ø¯' => 'ç', - 'ø°' => 'ç ', - 'ø±' => '爣', - 'ø²' => 'ç“›', - 'ø³' => 'ç“¥', - 'ø´' => '矕', - 'øµ' => '礸', - 'ø¶' => '禷', - 'ø·' => '禶', - 'ø¸' => '籪', - 'ø¹' => '纗', - 'øº' => '羉', - 'ø»' => '艭', - 'ø¼' => '虃', - 'ø½' => 'è ¸', - 'ø¾' => 'è ·', - 'ø¿' => 'è µ', - 'øÀ' => 'è¡‹', - 'øÁ' => 'è®”', - 'øÂ' => '讕', - 'øÃ' => '躞', - 'øÄ' => '躟', - 'øÅ' => '躠', - 'øÆ' => 'èº', - 'øÇ' => '醾', - 'øÈ' => '醽', - 'øÉ' => '釂', - 'øÊ' => 'é‘«', - 'øË' => '鑨', - 'øÌ' => 'é‘©', - 'øÍ' => '雥', - 'øÎ' => 'é†', - 'øÏ' => 'éƒ', - 'øÐ' => 'é‡', - 'øÑ' => '韇', - 'øÒ' => '韥', - 'øÓ' => 'é©ž', - 'øÔ' => 'é«•', - 'øÕ' => 'é­™', - 'øÖ' => 'é±£', - 'ø×' => '鱧', - 'øØ' => '鱦', - 'øÙ' => 'é±¢', - 'øÚ' => '鱞', - 'øÛ' => 'é± ', - 'øÜ' => '鸂', - 'øÝ' => 'é·¾', - 'øÞ' => '鸇', - 'øß' => '鸃', - 'øà' => '鸆', - 'øá' => '鸅', - 'øâ' => '鸀', - 'øã' => 'é¸', - 'øä' => '鸉', - 'øå' => 'é·¿', - 'øæ' => 'é·½', - 'øç' => '鸄', - 'øè' => '麠', - 'øé' => '鼞', - 'øê' => '齆', - 'øë' => 'é½´', - 'øì' => 'é½µ', - 'øí' => '齶', - 'øî' => 'å›”', - 'øï' => 'æ”®', - 'øð' => 'æ–¸', - 'øñ' => '欘', - 'øò' => '欙', - 'øó' => '欗', - 'øô' => '欚', - 'øõ' => 'ç¢', - 'øö' => '爦', - 'ø÷' => '犪', - 'øø' => '矘', - 'øù' => '矙', - 'øú' => '礹', - 'øû' => '籩', - 'øü' => '籫', - 'øý' => '糶', - 'øþ' => '纚', - 'ù@' => '纘', - 'ùA' => '纛', - 'ùB' => '纙', - 'ùC' => '臠', - 'ùD' => '臡', - 'ùE' => '虆', - 'ùF' => '虇', - 'ùG' => '虈', - 'ùH' => '襹', - 'ùI' => '襺', - 'ùJ' => '襼', - 'ùK' => '襻', - 'ùL' => '觿', - 'ùM' => '讘', - 'ùN' => 'è®™', - 'ùO' => '躥', - 'ùP' => '躤', - 'ùQ' => '躣', - 'ùR' => 'é‘®', - 'ùS' => 'é‘­', - 'ùT' => '鑯', - 'ùU' => '鑱', - 'ùV' => '鑳', - 'ùW' => 'é‰', - 'ùX' => '顲', - 'ùY' => '饟', - 'ùZ' => '鱨', - 'ù[' => 'é±®', - 'ù\\' => 'é±­', - 'ù]' => '鸋', - 'ù^' => 'é¸', - 'ù_' => 'é¸', - 'ù`' => 'é¸', - 'ùa' => '鸒', - 'ùb' => '鸑', - 'ùc' => '麡', - 'ùd' => '黵', - 'ùe' => '鼉', - 'ùf' => '齇', - 'ùg' => '齸', - 'ùh' => 'é½»', - 'ùi' => '齺', - 'ùj' => 'é½¹', - 'ùk' => '圞', - 'ùl' => 'ç¦', - 'ùm' => '籯', - 'ùn' => 'è ¼', - 'ùo' => '趲', - 'ùp' => '躦', - 'ùq' => '釃', - 'ùr' => 'é‘´', - 'ùs' => '鑸', - 'ùt' => '鑶', - 'ùu' => '鑵', - 'ùv' => 'é© ', - 'ùw' => 'é±´', - 'ùx' => 'é±³', - 'ùy' => 'é±±', - 'ùz' => 'é±µ', - 'ù{' => '鸔', - 'ù|' => '鸓', - 'ù}' => '黶', - 'ù~' => '鼊', - 'ù¡' => '龤', - 'ù¢' => 'ç¨', - 'ù£' => 'ç¥', - 'ù¤' => 'ç³·', - 'ù¥' => '虪', - 'ù¦' => 'è ¾', - 'ù§' => 'è ½', - 'ù¨' => 'è ¿', - 'ù©' => '讞', - 'ùª' => '貜', - 'ù«' => '躩', - 'ù¬' => '軉', - 'ù­' => 'é‹', - 'ù®' => '顳', - 'ù¯' => 'é¡´', - 'ù°' => '飌', - 'ù±' => '饡', - 'ù²' => '馫', - 'ù³' => '驤', - 'ù´' => '驦', - 'ùµ' => '驧', - 'ù¶' => '鬤', - 'ù·' => '鸕', - 'ù¸' => '鸗', - 'ù¹' => '齈', - 'ùº' => '戇', - 'ù»' => '欞', - 'ù¼' => '爧', - 'ù½' => '虌', - 'ù¾' => '躨', - 'ù¿' => 'é’‚', - 'ùÀ' => 'é’€', - 'ùÁ' => 'é’', - 'ùÂ' => 'é©©', - 'ùÃ' => '驨', - 'ùÄ' => '鬮', - 'ùÅ' => '鸙', - 'ùÆ' => '爩', - 'ùÇ' => '虋', - 'ùÈ' => '讟', - 'ùÉ' => 'é’ƒ', - 'ùÊ' => 'é±¹', - 'ùË' => '麷', - 'ùÌ' => '癵', - 'ùÍ' => 'é©«', - 'ùÎ' => '鱺', - 'ùÏ' => 'é¸', - 'ùÐ' => 'ç©', - 'ùÑ' => 'çª', - 'ùÒ' => '麤', - 'ùÓ' => 'é½¾', - 'ùÔ' => '齉', - 'ùÕ' => '龘', -); - -$result =& $data; -unset($data); - -return $result; diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp037.php b/symfony/polyfill-iconv/Resources/charset/from.cp037.php deleted file mode 100644 index a014e4b45..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp037.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp1006.php b/symfony/polyfill-iconv/Resources/charset/from.cp1006.php deleted file mode 100644 index 2b5e7beb9..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp1006.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp1026.php b/symfony/polyfill-iconv/Resources/charset/from.cp1026.php deleted file mode 100644 index aba455b5e..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp1026.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp424.php b/symfony/polyfill-iconv/Resources/charset/from.cp424.php deleted file mode 100644 index e8e237030..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp424.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp437.php b/symfony/polyfill-iconv/Resources/charset/from.cp437.php deleted file mode 100644 index e3ebb45c9..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp437.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp500.php b/symfony/polyfill-iconv/Resources/charset/from.cp500.php deleted file mode 100644 index 3771c8f62..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp500.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp737.php b/symfony/polyfill-iconv/Resources/charset/from.cp737.php deleted file mode 100644 index 2d67d33f9..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp737.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp775.php b/symfony/polyfill-iconv/Resources/charset/from.cp775.php deleted file mode 100644 index 1fbc4cdc6..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp775.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp850.php b/symfony/polyfill-iconv/Resources/charset/from.cp850.php deleted file mode 100644 index 0b314c80b..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp850.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp852.php b/symfony/polyfill-iconv/Resources/charset/from.cp852.php deleted file mode 100644 index f8c318cad..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp852.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp855.php b/symfony/polyfill-iconv/Resources/charset/from.cp855.php deleted file mode 100644 index 48440ba1a..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp855.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp856.php b/symfony/polyfill-iconv/Resources/charset/from.cp856.php deleted file mode 100644 index c9cac0c35..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp856.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp857.php b/symfony/polyfill-iconv/Resources/charset/from.cp857.php deleted file mode 100644 index 3e7770ad5..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp857.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp860.php b/symfony/polyfill-iconv/Resources/charset/from.cp860.php deleted file mode 100644 index 2a52d4736..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp860.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp861.php b/symfony/polyfill-iconv/Resources/charset/from.cp861.php deleted file mode 100644 index 4ba6573c3..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp861.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp862.php b/symfony/polyfill-iconv/Resources/charset/from.cp862.php deleted file mode 100644 index d2a29a228..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp862.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp863.php b/symfony/polyfill-iconv/Resources/charset/from.cp863.php deleted file mode 100644 index 1f36b9a24..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp863.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp864.php b/symfony/polyfill-iconv/Resources/charset/from.cp864.php deleted file mode 100644 index 953e46350..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp864.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp865.php b/symfony/polyfill-iconv/Resources/charset/from.cp865.php deleted file mode 100644 index 2668bcc4e..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp865.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp866.php b/symfony/polyfill-iconv/Resources/charset/from.cp866.php deleted file mode 100644 index a7b47f8f3..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp866.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp869.php b/symfony/polyfill-iconv/Resources/charset/from.cp869.php deleted file mode 100644 index 0f040548b..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp869.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp874.php b/symfony/polyfill-iconv/Resources/charset/from.cp874.php deleted file mode 100644 index 479945691..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp874.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp875.php b/symfony/polyfill-iconv/Resources/charset/from.cp875.php deleted file mode 100644 index 856164536..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp875.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp932.php b/symfony/polyfill-iconv/Resources/charset/from.cp932.php deleted file mode 100644 index 0bf828ffd..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp932.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp936.php b/symfony/polyfill-iconv/Resources/charset/from.cp936.php deleted file mode 100644 index a593d05de..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp936.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp949.php b/symfony/polyfill-iconv/Resources/charset/from.cp949.php deleted file mode 100644 index d4e99f1f4..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp949.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.cp950.php b/symfony/polyfill-iconv/Resources/charset/from.cp950.php deleted file mode 100644 index 267b19066..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.cp950.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php deleted file mode 100644 index d7a217c93..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-1.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php deleted file mode 100644 index d60f6473a..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-10.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php deleted file mode 100644 index d69220bff..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-11.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php deleted file mode 100644 index 838783f1b..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-13.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php deleted file mode 100644 index 65a48ee39..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-14.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php deleted file mode 100644 index 42e50e0fd..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-15.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php deleted file mode 100644 index 46758a6a7..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-16.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php deleted file mode 100644 index 5f23f515c..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-2.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php deleted file mode 100644 index b31bb83f4..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-3.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php deleted file mode 100644 index 9cbf9f37a..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-4.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php deleted file mode 100644 index fd0388230..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-5.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php deleted file mode 100644 index ed6f72f36..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-6.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php deleted file mode 100644 index cf723ac68..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-7.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php deleted file mode 100644 index c978731a4..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-8.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php b/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php deleted file mode 100644 index 2a3e36a48..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.iso-8859-9.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php b/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php deleted file mode 100644 index d83c2125b..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.koi8-r.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php b/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php deleted file mode 100644 index dbbf96be1..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.koi8-u.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php b/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php deleted file mode 100644 index 94a93b280..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.us-ascii.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php deleted file mode 100644 index d1d5e6f25..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1250.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php deleted file mode 100644 index f422a71fc..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1251.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php deleted file mode 100644 index ba6d203dc..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1252.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php deleted file mode 100644 index c04dc8f0e..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1253.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php deleted file mode 100644 index 1cfadcf2b..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1254.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php deleted file mode 100644 index f73cbb6ff..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1255.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php deleted file mode 100644 index 953704f6e..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1256.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php deleted file mode 100644 index 78580ece0..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1257.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php b/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php deleted file mode 100644 index de1609d85..000000000 Binary files a/symfony/polyfill-iconv/Resources/charset/from.windows-1258.php and /dev/null differ diff --git a/symfony/polyfill-iconv/Resources/charset/translit.php b/symfony/polyfill-iconv/Resources/charset/translit.php deleted file mode 100644 index f322ff0d2..000000000 --- a/symfony/polyfill-iconv/Resources/charset/translit.php +++ /dev/null @@ -1,4106 +0,0 @@ - 'μ', - '¼' => ' 1â„4 ', - '½' => ' 1â„2 ', - '¾' => ' 3â„4 ', - 'IJ' => 'IJ', - 'ij' => 'ij', - 'Ä¿' => 'L·', - 'Å€' => 'l·', - 'ʼn' => 'ʼn', - 'Å¿' => 's', - 'Ç„' => 'DŽ', - 'Ç…' => 'Dž', - 'dž' => 'dž', - 'LJ' => 'LJ', - 'Lj' => 'Lj', - 'lj' => 'lj', - 'ÇŠ' => 'NJ', - 'Ç‹' => 'Nj', - 'ÇŒ' => 'nj', - 'DZ' => 'DZ', - 'Dz' => 'Dz', - 'dz' => 'dz', - 'Ï' => 'β', - 'Ï‘' => 'θ', - 'Ï’' => 'Î¥', - 'Ï•' => 'φ', - 'Ï–' => 'Ï€', - 'Ï°' => 'κ', - 'ϱ' => 'Ï', - 'ϲ' => 'Ï‚', - 'Ï´' => 'Θ', - 'ϵ' => 'ε', - 'Ϲ' => 'Σ', - 'Ö‡' => 'Õ¥Ö‚', - 'Ùµ' => 'اٴ', - 'Ù¶' => 'وٴ', - 'Ù·' => 'Û‡Ù´', - 'Ù¸' => 'يٴ', - 'ำ' => 'à¹à¸²', - 'ຳ' => 'à»àº²', - 'ໜ' => 'ຫນ', - 'à»' => 'ຫມ', - 'ཷ' => 'ྲà¾', - 'ཹ' => 'ླà¾', - 'ẚ' => 'aʾ', - '․' => '.', - '‥' => '..', - '…' => '...', - '″' => '′′', - '‴' => '′′′', - '‶' => '‵‵', - '‷' => '‵‵‵', - '‼' => '!!', - 'â‡' => '??', - 'âˆ' => '?!', - 'â‰' => '!?', - 'â—' => '′′′′', - '₨' => 'Rs', - 'â„€' => 'a/c', - 'â„' => 'a/s', - 'â„‚' => 'C', - '℃' => '°C', - 'â„…' => 'c/o', - '℆' => 'c/u', - 'ℇ' => 'Æ', - '℉' => '°F', - 'â„Š' => 'g', - 'â„‹' => 'H', - 'â„Œ' => 'H', - 'â„' => 'H', - 'â„Ž' => 'h', - 'â„' => 'ħ', - 'â„' => 'I', - 'â„‘' => 'I', - 'â„’' => 'L', - 'â„“' => 'l', - 'â„•' => 'N', - 'â„–' => 'No', - 'â„™' => 'P', - 'â„š' => 'Q', - 'â„›' => 'R', - 'â„œ' => 'R', - 'â„' => 'R', - 'â„¡' => 'TEL', - 'ℤ' => 'Z', - 'ℨ' => 'Z', - 'ℬ' => 'B', - 'â„­' => 'C', - 'ℯ' => 'e', - 'â„°' => 'E', - 'ℱ' => 'F', - 'ℳ' => 'M', - 'â„´' => 'o', - 'ℵ' => '×', - 'ℶ' => 'ב', - 'â„·' => '×’', - 'ℸ' => 'ד', - 'ℹ' => 'i', - 'â„»' => 'FAX', - 'ℼ' => 'Ï€', - 'ℽ' => 'γ', - 'ℾ' => 'Γ', - 'â„¿' => 'Π', - 'â…€' => '∑', - 'â……' => 'D', - 'â…†' => 'd', - 'â…‡' => 'e', - 'â…ˆ' => 'i', - 'â…‰' => 'j', - 'â…' => ' 1â„7 ', - 'â…‘' => ' 1â„9 ', - 'â…’' => ' 1â„10 ', - 'â…“' => ' 1â„3 ', - 'â…”' => ' 2â„3 ', - 'â…•' => ' 1â„5 ', - 'â…–' => ' 2â„5 ', - 'â…—' => ' 3â„5 ', - 'â…˜' => ' 4â„5 ', - 'â…™' => ' 1â„6 ', - 'â…š' => ' 5â„6 ', - 'â…›' => ' 1â„8 ', - 'â…œ' => ' 3â„8 ', - 'â…' => ' 5â„8 ', - 'â…ž' => ' 7â„8 ', - 'â…Ÿ' => ' 1â„ ', - 'â… ' => 'I', - 'â…¡' => 'II', - 'â…¢' => 'III', - 'â…£' => 'IV', - 'â…¤' => 'V', - 'â…¥' => 'VI', - 'â…¦' => 'VII', - 'â…§' => 'VIII', - 'â…¨' => 'IX', - 'â…©' => 'X', - 'â…ª' => 'XI', - 'â…«' => 'XII', - 'â…¬' => 'L', - 'â…­' => 'C', - 'â…®' => 'D', - 'â…¯' => 'M', - 'â…°' => 'i', - 'â…±' => 'ii', - 'â…²' => 'iii', - 'â…³' => 'iv', - 'â…´' => 'v', - 'â…µ' => 'vi', - 'â…¶' => 'vii', - 'â…·' => 'viii', - 'â…¸' => 'ix', - 'â…¹' => 'x', - 'â…º' => 'xi', - 'â…»' => 'xii', - 'â…¼' => 'l', - 'â…½' => 'c', - 'â…¾' => 'd', - 'â…¿' => 'm', - '↉' => ' 0â„3 ', - '∬' => '∫∫', - '∭' => '∫∫∫', - '∯' => '∮∮', - '∰' => '∮∮∮', - 'â‘ ' => '(1)', - 'â‘¡' => '(2)', - 'â‘¢' => '(3)', - 'â‘£' => '(4)', - '⑤' => '(5)', - 'â‘¥' => '(6)', - '⑦' => '(7)', - '⑧' => '(8)', - '⑨' => '(9)', - 'â‘©' => '(10)', - '⑪' => '(11)', - 'â‘«' => '(12)', - '⑬' => '(13)', - 'â‘­' => '(14)', - 'â‘®' => '(15)', - '⑯' => '(16)', - 'â‘°' => '(17)', - '⑱' => '(18)', - '⑲' => '(19)', - '⑳' => '(20)', - 'â‘´' => '(1)', - '⑵' => '(2)', - '⑶' => '(3)', - 'â‘·' => '(4)', - '⑸' => '(5)', - '⑹' => '(6)', - '⑺' => '(7)', - 'â‘»' => '(8)', - '⑼' => '(9)', - '⑽' => '(10)', - '⑾' => '(11)', - 'â‘¿' => '(12)', - 'â’€' => '(13)', - 'â’' => '(14)', - 'â’‚' => '(15)', - 'â’ƒ' => '(16)', - 'â’„' => '(17)', - 'â’…' => '(18)', - 'â’†' => '(19)', - 'â’‡' => '(20)', - 'â’ˆ' => '1.', - 'â’‰' => '2.', - 'â’Š' => '3.', - 'â’‹' => '4.', - 'â’Œ' => '5.', - 'â’' => '6.', - 'â’Ž' => '7.', - 'â’' => '8.', - 'â’' => '9.', - 'â’‘' => '10.', - 'â’’' => '11.', - 'â’“' => '12.', - 'â’”' => '13.', - 'â’•' => '14.', - 'â’–' => '15.', - 'â’—' => '16.', - 'â’˜' => '17.', - 'â’™' => '18.', - 'â’š' => '19.', - 'â’›' => '20.', - 'â’œ' => '(a)', - 'â’' => '(b)', - 'â’ž' => '(c)', - 'â’Ÿ' => '(d)', - 'â’ ' => '(e)', - 'â’¡' => '(f)', - 'â’¢' => '(g)', - 'â’£' => '(h)', - 'â’¤' => '(i)', - 'â’¥' => '(j)', - 'â’¦' => '(k)', - 'â’§' => '(l)', - 'â’¨' => '(m)', - 'â’©' => '(n)', - 'â’ª' => '(o)', - 'â’«' => '(p)', - 'â’¬' => '(q)', - 'â’­' => '(r)', - 'â’®' => '(s)', - 'â’¯' => '(t)', - 'â’°' => '(u)', - 'â’±' => '(v)', - 'â’²' => '(w)', - 'â’³' => '(x)', - 'â’´' => '(y)', - 'â’µ' => '(z)', - 'â’¶' => '(A)', - 'â’·' => '(B)', - 'â’¸' => '(C)', - 'â’¹' => '(D)', - 'â’º' => '(E)', - 'â’»' => '(F)', - 'â’¼' => '(G)', - 'â’½' => '(H)', - 'â’¾' => '(I)', - 'â’¿' => '(J)', - 'â“€' => '(K)', - 'â“' => '(L)', - 'â“‚' => '(M)', - 'Ⓝ' => '(N)', - 'â“„' => '(O)', - 'â“…' => '(P)', - 'Ⓠ' => '(Q)', - 'Ⓡ' => '(R)', - 'Ⓢ' => '(S)', - 'Ⓣ' => '(T)', - 'â“Š' => '(U)', - 'â“‹' => '(V)', - 'â“Œ' => '(W)', - 'â“' => '(X)', - 'â“Ž' => '(Y)', - 'â“' => '(Z)', - 'â“' => '(a)', - 'â“‘' => '(b)', - 'â“’' => '(c)', - 'â““' => '(d)', - 'â“”' => '(e)', - 'â“•' => '(f)', - 'â“–' => '(g)', - 'â“—' => '(h)', - 'ⓘ' => '(i)', - 'â“™' => '(j)', - 'â“š' => '(k)', - 'â“›' => '(l)', - 'â“œ' => '(m)', - 'â“' => '(n)', - 'â“ž' => '(o)', - 'â“Ÿ' => '(p)', - 'â“ ' => '(q)', - 'â“¡' => '(r)', - 'â“¢' => '(s)', - 'â“£' => '(t)', - 'ⓤ' => '(u)', - 'â“¥' => '(v)', - 'ⓦ' => '(w)', - 'ⓧ' => '(x)', - 'ⓨ' => '(y)', - 'â“©' => '(z)', - '⓪' => '(0)', - '⨌' => '∫∫∫∫', - 'â©´' => '::=', - '⩵' => '==', - '⩶' => '===', - '⺟' => 'æ¯', - '⻳' => '龟', - 'â¼€' => '一', - 'â¼' => '丨', - '⼂' => '丶', - '⼃' => '丿', - '⼄' => 'ä¹™', - 'â¼…' => '亅', - '⼆' => '二', - '⼇' => '亠', - '⼈' => '人', - '⼉' => 'å„¿', - '⼊' => 'å…¥', - '⼋' => 'å…«', - '⼌' => '冂', - 'â¼' => '冖', - '⼎' => '冫', - 'â¼' => '几', - 'â¼' => '凵', - '⼑' => '刀', - 'â¼’' => '力', - '⼓' => '勹', - 'â¼”' => '匕', - '⼕' => '匚', - 'â¼–' => '匸', - 'â¼—' => 'å', - '⼘' => 'åœ', - 'â¼™' => 'å©', - '⼚' => '厂', - 'â¼›' => '厶', - '⼜' => 'åˆ', - 'â¼' => 'å£', - '⼞' => 'å›—', - '⼟' => '土', - 'â¼ ' => '士', - '⼡' => '夂', - 'â¼¢' => '夊', - 'â¼£' => '夕', - '⼤' => '大', - 'â¼¥' => '女', - '⼦' => 'å­', - '⼧' => '宀', - '⼨' => '寸', - '⼩' => 'å°', - '⼪' => 'å°¢', - '⼫' => 'å°¸', - '⼬' => 'å±®', - 'â¼­' => 'å±±', - 'â¼®' => 'å·›', - '⼯' => 'å·¥', - 'â¼°' => 'å·±', - 'â¼±' => 'å·¾', - 'â¼²' => 'å¹²', - 'â¼³' => '幺', - 'â¼´' => '广', - 'â¼µ' => 'å»´', - '⼶' => '廾', - 'â¼·' => '弋', - '⼸' => '弓', - 'â¼¹' => 'å½', - '⼺' => '彡', - 'â¼»' => 'å½³', - 'â¼¼' => '心', - 'â¼½' => '戈', - 'â¼¾' => '戶', - '⼿' => '手', - 'â½€' => '支', - 'â½' => 'æ”´', - '⽂' => 'æ–‡', - '⽃' => 'æ–—', - '⽄' => 'æ–¤', - 'â½…' => 'æ–¹', - '⽆' => 'æ— ', - '⽇' => 'æ—¥', - '⽈' => 'æ›°', - '⽉' => '月', - '⽊' => '木', - '⽋' => '欠', - '⽌' => 'æ­¢', - 'â½' => 'æ­¹', - '⽎' => '殳', - 'â½' => '毋', - 'â½' => '比', - '⽑' => '毛', - 'â½’' => 'æ°', - '⽓' => 'æ°”', - 'â½”' => 'æ°´', - '⽕' => 'ç«', - 'â½–' => '爪', - 'â½—' => '父', - '⽘' => '爻', - 'â½™' => '爿', - '⽚' => '片', - 'â½›' => '牙', - '⽜' => '牛', - 'â½' => '犬', - '⽞' => '玄', - '⽟' => '玉', - 'â½ ' => 'ç“œ', - '⽡' => '瓦', - 'â½¢' => '甘', - 'â½£' => '生', - '⽤' => '用', - 'â½¥' => 'ç”°', - '⽦' => 'ç–‹', - '⽧' => 'ç–’', - '⽨' => '癶', - '⽩' => '白', - '⽪' => 'çš®', - '⽫' => 'çš¿', - '⽬' => 'ç›®', - 'â½­' => '矛', - 'â½®' => '矢', - '⽯' => '石', - 'â½°' => '示', - 'â½±' => '禸', - 'â½²' => '禾', - 'â½³' => 'ç©´', - 'â½´' => 'ç«‹', - 'â½µ' => '竹', - '⽶' => 'ç±³', - 'â½·' => '糸', - '⽸' => '缶', - 'â½¹' => '网', - '⽺' => '羊', - 'â½»' => 'ç¾½', - 'â½¼' => 'è€', - 'â½½' => '而', - 'â½¾' => '耒', - '⽿' => '耳', - 'â¾€' => 'è¿', - 'â¾' => '肉', - '⾂' => '臣', - '⾃' => '自', - '⾄' => '至', - 'â¾…' => '臼', - '⾆' => '舌', - '⾇' => '舛', - '⾈' => '舟', - '⾉' => '艮', - '⾊' => '色', - '⾋' => '艸', - '⾌' => 'è™', - 'â¾' => '虫', - '⾎' => 'è¡€', - 'â¾' => 'è¡Œ', - 'â¾' => 'è¡£', - '⾑' => '襾', - 'â¾’' => '見', - '⾓' => '角', - 'â¾”' => '言', - '⾕' => 'è°·', - 'â¾–' => '豆', - 'â¾—' => '豕', - '⾘' => '豸', - 'â¾™' => 'è²', - '⾚' => '赤', - 'â¾›' => 'èµ°', - '⾜' => '足', - 'â¾' => '身', - '⾞' => '車', - '⾟' => 'è¾›', - 'â¾ ' => 'è¾°', - '⾡' => 'è¾µ', - 'â¾¢' => 'é‚‘', - 'â¾£' => 'é…‰', - '⾤' => '釆', - 'â¾¥' => '里', - '⾦' => '金', - '⾧' => 'é•·', - '⾨' => 'é–€', - '⾩' => '阜', - '⾪' => '隶', - '⾫' => 'éš¹', - '⾬' => '雨', - 'â¾­' => 'é‘', - 'â¾®' => 'éž', - '⾯' => 'é¢', - 'â¾°' => 'é©', - 'â¾±' => '韋', - 'â¾²' => '韭', - 'â¾³' => '音', - 'â¾´' => 'é ', - 'â¾µ' => '風', - '⾶' => '飛', - 'â¾·' => '食', - '⾸' => '首', - 'â¾¹' => '香', - '⾺' => '馬', - 'â¾»' => '骨', - 'â¾¼' => '高', - 'â¾½' => 'é«Ÿ', - 'â¾¾' => '鬥', - '⾿' => '鬯', - 'â¿€' => '鬲', - 'â¿' => '鬼', - 'â¿‚' => 'é­š', - '⿃' => 'é³¥', - 'â¿„' => 'é¹µ', - 'â¿…' => '鹿', - '⿆' => '麥', - '⿇' => '麻', - '⿈' => '黃', - '⿉' => 'é»', - 'â¿Š' => '黑', - 'â¿‹' => '黹', - 'â¿Œ' => '黽', - 'â¿' => '鼎', - 'â¿Ž' => '鼓', - 'â¿' => 'é¼ ', - 'â¿' => 'é¼»', - 'â¿‘' => '齊', - 'â¿’' => 'é½’', - 'â¿“' => 'é¾', - 'â¿”' => '龜', - 'â¿•' => 'é¾ ', - ' ' => ' ', - '〶' => '〒', - '〸' => 'å', - '〹' => 'å„', - '〺' => 'å…', - 'ㄱ' => 'á„€', - 'ㄲ' => 'á„', - 'ㄳ' => 'ᆪ', - 'ã„´' => 'á„‚', - 'ㄵ' => 'ᆬ', - 'ㄶ' => 'ᆭ', - 'ã„·' => 'ᄃ', - 'ㄸ' => 'á„„', - 'ㄹ' => 'á„…', - 'ㄺ' => 'ᆰ', - 'ã„»' => 'ᆱ', - 'ㄼ' => 'ᆲ', - 'ㄽ' => 'ᆳ', - 'ㄾ' => 'ᆴ', - 'ã„¿' => 'ᆵ', - 'ã…€' => 'á„š', - 'ã…' => 'ᄆ', - 'ã…‚' => 'ᄇ', - 'ã…ƒ' => 'ᄈ', - 'ã…„' => 'á„¡', - 'ã……' => 'ᄉ', - 'ã…†' => 'á„Š', - 'ã…‡' => 'á„‹', - 'ã…ˆ' => 'á„Œ', - 'ã…‰' => 'á„', - 'ã…Š' => 'á„Ž', - 'ã…‹' => 'á„', - 'ã…Œ' => 'á„', - 'ã…' => 'á„‘', - 'ã…Ž' => 'á„’', - 'ã…' => 'á…¡', - 'ã…' => 'á…¢', - 'ã…‘' => 'á…£', - 'ã…’' => 'á…¤', - 'ã…“' => 'á…¥', - 'ã…”' => 'á…¦', - 'ã…•' => 'á…§', - 'ã…–' => 'á…¨', - 'ã…—' => 'á…©', - 'ã…˜' => 'á…ª', - 'ã…™' => 'á…«', - 'ã…š' => 'á…¬', - 'ã…›' => 'á…­', - 'ã…œ' => 'á…®', - 'ã…' => 'á…¯', - 'ã…ž' => 'á…°', - 'ã…Ÿ' => 'á…±', - 'ã… ' => 'á…²', - 'ã…¡' => 'á…³', - 'ã…¢' => 'á…´', - 'ã…£' => 'á…µ', - 'ã…¤' => 'á… ', - 'ã…¥' => 'á„”', - 'ã…¦' => 'á„•', - 'ã…§' => 'ᇇ', - 'ã…¨' => 'ᇈ', - 'ã…©' => 'ᇌ', - 'ã…ª' => 'ᇎ', - 'ã…«' => 'ᇓ', - 'ã…¬' => 'ᇗ', - 'ã…­' => 'ᇙ', - 'ã…®' => 'á„œ', - 'ã…¯' => 'á‡', - 'ã…°' => 'ᇟ', - 'ã…±' => 'á„', - 'ã…²' => 'á„ž', - 'ã…³' => 'á„ ', - 'ã…´' => 'á„¢', - 'ã…µ' => 'á„£', - 'ã…¶' => 'ᄧ', - 'ã…·' => 'á„©', - 'ã…¸' => 'á„«', - 'ã…¹' => 'ᄬ', - 'ã…º' => 'á„­', - 'ã…»' => 'á„®', - 'ã…¼' => 'ᄯ', - 'ã…½' => 'ᄲ', - 'ã…¾' => 'ᄶ', - 'ã…¿' => 'á…€', - 'ㆀ' => 'á…‡', - 'ã†' => 'á…Œ', - 'ㆂ' => 'ᇱ', - 'ㆃ' => 'ᇲ', - 'ㆄ' => 'á…—', - 'ㆅ' => 'á…˜', - 'ㆆ' => 'á…™', - 'ㆇ' => 'ᆄ', - 'ㆈ' => 'ᆅ', - 'ㆉ' => 'ᆈ', - 'ㆊ' => 'ᆑ', - 'ㆋ' => 'ᆒ', - 'ㆌ' => 'ᆔ', - 'ã†' => 'ᆞ', - 'ㆎ' => 'ᆡ', - '㈀' => '(á„€)', - 'ãˆ' => '(á„‚)', - '㈂' => '(ᄃ)', - '㈃' => '(á„…)', - '㈄' => '(ᄆ)', - '㈅' => '(ᄇ)', - '㈆' => '(ᄉ)', - '㈇' => '(á„‹)', - '㈈' => '(á„Œ)', - '㈉' => '(á„Ž)', - '㈊' => '(á„)', - '㈋' => '(á„)', - '㈌' => '(á„‘)', - 'ãˆ' => '(á„’)', - '㈎' => '(가)', - 'ãˆ' => '(á„‚á…¡)', - 'ãˆ' => '(다)', - '㈑' => '(á„…á…¡)', - '㈒' => '(마)', - '㈓' => '(바)', - '㈔' => '(사)', - '㈕' => '(á„‹á…¡)', - '㈖' => '(자)', - '㈗' => '(á„Žá…¡)', - '㈘' => '(á„á…¡)', - '㈙' => '(á„á…¡)', - '㈚' => '(á„‘á…¡)', - '㈛' => '(á„’á…¡)', - '㈜' => '(주)', - 'ãˆ' => '(오전)', - '㈞' => '(á„‹á…©á„’á…®)', - '㈠' => '(一)', - '㈡' => '(二)', - '㈢' => '(三)', - '㈣' => '(å››)', - '㈤' => '(五)', - '㈥' => '(å…­)', - '㈦' => '(七)', - '㈧' => '(å…«)', - '㈨' => '(ä¹)', - '㈩' => '(å)', - '㈪' => '(月)', - '㈫' => '(ç«)', - '㈬' => '(æ°´)', - '㈭' => '(木)', - '㈮' => '(金)', - '㈯' => '(土)', - '㈰' => '(æ—¥)', - '㈱' => '(æ ª)', - '㈲' => '(有)', - '㈳' => '(社)', - '㈴' => '(å)', - '㈵' => '(特)', - '㈶' => '(財)', - '㈷' => '(ç¥)', - '㈸' => '(労)', - '㈹' => '(代)', - '㈺' => '(呼)', - '㈻' => '(å­¦)', - '㈼' => '(監)', - '㈽' => '(ä¼)', - '㈾' => '(資)', - '㈿' => '(å”)', - '㉀' => '(祭)', - 'ã‰' => '(休)', - '㉂' => '(自)', - '㉃' => '(至)', - '㉄' => '(å•)', - '㉅' => '(å¹¼)', - '㉆' => '(æ–‡)', - '㉇' => '(ç®)', - 'ã‰' => 'PTE', - '㉑' => '(21)', - '㉒' => '(22)', - '㉓' => '(23)', - '㉔' => '(24)', - '㉕' => '(25)', - '㉖' => '(26)', - '㉗' => '(27)', - '㉘' => '(28)', - '㉙' => '(29)', - '㉚' => '(30)', - '㉛' => '(31)', - '㉜' => '(32)', - 'ã‰' => '(33)', - '㉞' => '(34)', - '㉟' => '(35)', - '㉠' => '(á„€)', - '㉡' => '(á„‚)', - '㉢' => '(ᄃ)', - '㉣' => '(á„…)', - '㉤' => '(ᄆ)', - '㉥' => '(ᄇ)', - '㉦' => '(ᄉ)', - '㉧' => '(á„‹)', - '㉨' => '(á„Œ)', - '㉩' => '(á„Ž)', - '㉪' => '(á„)', - '㉫' => '(á„)', - '㉬' => '(á„‘)', - '㉭' => '(á„’)', - '㉮' => '(가)', - '㉯' => '(á„‚á…¡)', - '㉰' => '(다)', - '㉱' => '(á„…á…¡)', - '㉲' => '(마)', - '㉳' => '(바)', - '㉴' => '(사)', - '㉵' => '(á„‹á…¡)', - '㉶' => '(자)', - '㉷' => '(á„Žá…¡)', - '㉸' => '(á„á…¡)', - '㉹' => '(á„á…¡)', - '㉺' => '(á„‘á…¡)', - '㉻' => '(á„’á…¡)', - '㉼' => '(참고)', - '㉽' => '(주의)', - '㉾' => '(á„‹á…®)', - '㊀' => '(一)', - 'ãŠ' => '(二)', - '㊂' => '(三)', - '㊃' => '(å››)', - '㊄' => '(五)', - '㊅' => '(å…­)', - '㊆' => '(七)', - '㊇' => '(å…«)', - '㊈' => '(ä¹)', - '㊉' => '(å)', - '㊊' => '(月)', - '㊋' => '(ç«)', - '㊌' => '(æ°´)', - 'ãŠ' => '(木)', - '㊎' => '(金)', - 'ãŠ' => '(土)', - 'ãŠ' => '(æ—¥)', - '㊑' => '(æ ª)', - '㊒' => '(有)', - '㊓' => '(社)', - '㊔' => '(å)', - '㊕' => '(特)', - '㊖' => '(財)', - '㊗' => '(ç¥)', - '㊘' => '(労)', - '㊙' => '(秘)', - '㊚' => '(ç”·)', - '㊛' => '(女)', - '㊜' => '(é©)', - 'ãŠ' => '(優)', - '㊞' => '(å°)', - '㊟' => '(注)', - '㊠' => '(é …)', - '㊡' => '(休)', - '㊢' => '(写)', - '㊣' => '(æ­£)', - '㊤' => '(上)', - '㊥' => '(中)', - '㊦' => '(下)', - '㊧' => '(å·¦)', - '㊨' => '(å³)', - '㊩' => '(医)', - '㊪' => '(å®—)', - '㊫' => '(å­¦)', - '㊬' => '(監)', - '㊭' => '(ä¼)', - '㊮' => '(資)', - '㊯' => '(å”)', - '㊰' => '(夜)', - '㊱' => '(36)', - '㊲' => '(37)', - '㊳' => '(38)', - '㊴' => '(39)', - '㊵' => '(40)', - '㊶' => '(41)', - '㊷' => '(42)', - '㊸' => '(43)', - '㊹' => '(44)', - '㊺' => '(45)', - '㊻' => '(46)', - '㊼' => '(47)', - '㊽' => '(48)', - '㊾' => '(49)', - '㊿' => '(50)', - 'ã‹€' => '1月', - 'ã‹' => '2月', - 'ã‹‚' => '3月', - '㋃' => '4月', - 'ã‹„' => '5月', - 'ã‹…' => '6月', - '㋆' => '7月', - '㋇' => '8月', - '㋈' => '9月', - '㋉' => '10月', - 'ã‹Š' => '11月', - 'ã‹‹' => '12月', - 'ã‹Œ' => 'Hg', - 'ã‹' => 'erg', - 'ã‹Ž' => 'eV', - 'ã‹' => 'LTD', - 'ã‹' => '(ã‚¢)', - 'ã‹‘' => '(イ)', - 'ã‹’' => '(ウ)', - 'ã‹“' => '(エ)', - 'ã‹”' => '(オ)', - 'ã‹•' => '(ã‚«)', - 'ã‹–' => '(ã‚­)', - 'ã‹—' => '(ク)', - '㋘' => '(ケ)', - 'ã‹™' => '(コ)', - 'ã‹š' => '(サ)', - 'ã‹›' => '(ã‚·)', - 'ã‹œ' => '(ス)', - 'ã‹' => '(ã‚»)', - 'ã‹ž' => '(ソ)', - 'ã‹Ÿ' => '(ã‚¿)', - 'ã‹ ' => '(ãƒ)', - 'ã‹¡' => '(ツ)', - 'ã‹¢' => '(テ)', - 'ã‹£' => '(ト)', - '㋤' => '(ナ)', - 'ã‹¥' => '(ニ)', - '㋦' => '(ヌ)', - '㋧' => '(ãƒ)', - '㋨' => '(ノ)', - 'ã‹©' => '(ãƒ)', - '㋪' => '(ヒ)', - 'ã‹«' => '(フ)', - '㋬' => '(ヘ)', - 'ã‹­' => '(ホ)', - 'ã‹®' => '(マ)', - '㋯' => '(ミ)', - 'ã‹°' => '(ム)', - '㋱' => '(メ)', - '㋲' => '(モ)', - '㋳' => '(ヤ)', - 'ã‹´' => '(ユ)', - '㋵' => '(ヨ)', - '㋶' => '(ラ)', - 'ã‹·' => '(リ)', - '㋸' => '(ル)', - '㋹' => '(レ)', - '㋺' => '(ロ)', - 'ã‹»' => '(ワ)', - '㋼' => '(ヰ)', - '㋽' => '(ヱ)', - '㋾' => '(ヲ)', - 'ã‹¿' => '令和', - '㌀' => 'アパート', - 'ãŒ' => 'アルファ', - '㌂' => 'アンペア', - '㌃' => 'アール', - '㌄' => 'イニング', - '㌅' => 'インãƒ', - '㌆' => 'ウォン', - '㌇' => 'エスクード', - '㌈' => 'エーカー', - '㌉' => 'オンス', - '㌊' => 'オーム', - '㌋' => 'カイリ', - '㌌' => 'カラット', - 'ãŒ' => 'カロリー', - '㌎' => 'ガロン', - 'ãŒ' => 'ガンマ', - 'ãŒ' => 'ギガ', - '㌑' => 'ギニー', - '㌒' => 'キュリー', - '㌓' => 'ギルダー', - '㌔' => 'キロ', - '㌕' => 'キログラム', - '㌖' => 'キロメートル', - '㌗' => 'キロワット', - '㌘' => 'グラム', - '㌙' => 'グラムトン', - '㌚' => 'クルゼイロ', - '㌛' => 'クローãƒ', - '㌜' => 'ケース', - 'ãŒ' => 'コルナ', - '㌞' => 'コーãƒ', - '㌟' => 'サイクル', - '㌠' => 'サンãƒãƒ¼ãƒ ', - '㌡' => 'シリング', - '㌢' => 'センãƒ', - '㌣' => 'セント', - '㌤' => 'ダース', - '㌥' => 'デシ', - '㌦' => 'ドル', - '㌧' => 'トン', - '㌨' => 'ナノ', - '㌩' => 'ノット', - '㌪' => 'ãƒã‚¤ãƒ„', - '㌫' => 'パーセント', - '㌬' => 'パーツ', - '㌭' => 'ãƒãƒ¼ãƒ¬ãƒ«', - '㌮' => 'ピアストル', - '㌯' => 'ピクル', - '㌰' => 'ピコ', - '㌱' => 'ビル', - '㌲' => 'ファラッド', - '㌳' => 'フィート', - '㌴' => 'ブッシェル', - '㌵' => 'フラン', - '㌶' => 'ヘクタール', - '㌷' => 'ペソ', - '㌸' => 'ペニヒ', - '㌹' => 'ヘルツ', - '㌺' => 'ペンス', - '㌻' => 'ページ', - '㌼' => 'ベータ', - '㌽' => 'ãƒã‚¤ãƒ³ãƒˆ', - '㌾' => 'ボルト', - '㌿' => 'ホン', - 'ã€' => 'ãƒãƒ³ãƒ‰', - 'ã' => 'ホール', - 'ã‚' => 'ホーン', - 'ãƒ' => 'マイクロ', - 'ã„' => 'マイル', - 'ã…' => 'マッãƒ', - 'ã†' => 'マルク', - 'ã‡' => 'マンション', - 'ãˆ' => 'ミクロン', - 'ã‰' => 'ミリ', - 'ãŠ' => 'ミリãƒãƒ¼ãƒ«', - 'ã‹' => 'メガ', - 'ãŒ' => 'メガトン', - 'ã' => 'メートル', - 'ãŽ' => 'ヤード', - 'ã' => 'ヤール', - 'ã' => 'ユアン', - 'ã‘' => 'リットル', - 'ã’' => 'リラ', - 'ã“' => 'ルピー', - 'ã”' => 'ルーブル', - 'ã•' => 'レム', - 'ã–' => 'レントゲン', - 'ã—' => 'ワット', - 'ã˜' => '0点', - 'ã™' => '1点', - 'ãš' => '2点', - 'ã›' => '3点', - 'ãœ' => '4点', - 'ã' => '5点', - 'ãž' => '6点', - 'ãŸ' => '7点', - 'ã ' => '8点', - 'ã¡' => '9点', - 'ã¢' => '10点', - 'ã£' => '11点', - 'ã¤' => '12点', - 'ã¥' => '13点', - 'ã¦' => '14点', - 'ã§' => '15点', - 'ã¨' => '16点', - 'ã©' => '17点', - 'ãª' => '18点', - 'ã«' => '19点', - 'ã¬' => '20点', - 'ã­' => '21点', - 'ã®' => '22点', - 'ã¯' => '23点', - 'ã°' => '24点', - 'ã±' => 'hPa', - 'ã²' => 'da', - 'ã³' => 'AU', - 'ã´' => 'bar', - 'ãµ' => 'oV', - 'ã¶' => 'pc', - 'ã·' => 'dm', - 'ã¸' => 'dm²', - 'ã¹' => 'dm³', - 'ãº' => 'IU', - 'ã»' => 'å¹³æˆ', - 'ã¼' => '昭和', - 'ã½' => '大正', - 'ã¾' => '明治', - 'ã¿' => 'æ ªå¼ä¼šç¤¾', - '㎀' => 'pA', - 'ãŽ' => 'nA', - '㎂' => 'μA', - '㎃' => 'mA', - '㎄' => 'kA', - '㎅' => 'KB', - '㎆' => 'MB', - '㎇' => 'GB', - '㎈' => 'cal', - '㎉' => 'kcal', - '㎊' => 'pF', - '㎋' => 'nF', - '㎌' => 'μF', - 'ãŽ' => 'μg', - '㎎' => 'mg', - 'ãŽ' => 'kg', - 'ãŽ' => 'Hz', - '㎑' => 'kHz', - '㎒' => 'MHz', - '㎓' => 'GHz', - '㎔' => 'THz', - '㎕' => 'μℓ', - '㎖' => 'mâ„“', - '㎗' => 'dâ„“', - '㎘' => 'kâ„“', - '㎙' => 'fm', - '㎚' => 'nm', - '㎛' => 'μm', - '㎜' => 'mm', - 'ãŽ' => 'cm', - '㎞' => 'km', - '㎟' => 'mm²', - '㎠' => 'cm²', - '㎡' => 'm²', - '㎢' => 'km²', - '㎣' => 'mm³', - '㎤' => 'cm³', - '㎥' => 'm³', - '㎦' => 'km³', - '㎧' => 'm∕s', - '㎨' => 'm∕s²', - '㎩' => 'Pa', - '㎪' => 'kPa', - '㎫' => 'MPa', - '㎬' => 'GPa', - '㎭' => 'rad', - '㎮' => 'rad∕s', - '㎯' => 'rad∕s²', - '㎰' => 'ps', - '㎱' => 'ns', - '㎲' => 'μs', - '㎳' => 'ms', - '㎴' => 'pV', - '㎵' => 'nV', - '㎶' => 'μV', - '㎷' => 'mV', - '㎸' => 'kV', - '㎹' => 'MV', - '㎺' => 'pW', - '㎻' => 'nW', - '㎼' => 'μW', - '㎽' => 'mW', - '㎾' => 'kW', - '㎿' => 'MW', - 'ã€' => 'kΩ', - 'ã' => 'MΩ', - 'ã‚' => 'a.m.', - 'ãƒ' => 'Bq', - 'ã„' => 'cc', - 'ã…' => 'cd', - 'ã†' => 'C∕kg', - 'ã‡' => 'Co.', - 'ãˆ' => 'dB', - 'ã‰' => 'Gy', - 'ãŠ' => 'ha', - 'ã‹' => 'HP', - 'ãŒ' => 'in', - 'ã' => 'KK', - 'ãŽ' => 'KM', - 'ã' => 'kt', - 'ã' => 'lm', - 'ã‘' => 'ln', - 'ã’' => 'log', - 'ã“' => 'lx', - 'ã”' => 'mb', - 'ã•' => 'mil', - 'ã–' => 'mol', - 'ã—' => 'PH', - 'ã˜' => 'p.m.', - 'ã™' => 'PPM', - 'ãš' => 'PR', - 'ã›' => 'sr', - 'ãœ' => 'Sv', - 'ã' => 'Wb', - 'ãž' => 'V∕m', - 'ãŸ' => 'A∕m', - 'ã ' => '1æ—¥', - 'ã¡' => '2æ—¥', - 'ã¢' => '3æ—¥', - 'ã£' => '4æ—¥', - 'ã¤' => '5æ—¥', - 'ã¥' => '6æ—¥', - 'ã¦' => '7æ—¥', - 'ã§' => '8æ—¥', - 'ã¨' => '9æ—¥', - 'ã©' => '10æ—¥', - 'ãª' => '11æ—¥', - 'ã«' => '12æ—¥', - 'ã¬' => '13æ—¥', - 'ã­' => '14æ—¥', - 'ã®' => '15æ—¥', - 'ã¯' => '16æ—¥', - 'ã°' => '17æ—¥', - 'ã±' => '18æ—¥', - 'ã²' => '19æ—¥', - 'ã³' => '20æ—¥', - 'ã´' => '21æ—¥', - 'ãµ' => '22æ—¥', - 'ã¶' => '23æ—¥', - 'ã·' => '24æ—¥', - 'ã¸' => '25æ—¥', - 'ã¹' => '26æ—¥', - 'ãº' => '27æ—¥', - 'ã»' => '28æ—¥', - 'ã¼' => '29æ—¥', - 'ã½' => '30æ—¥', - 'ã¾' => '31æ—¥', - 'ã¿' => 'gal', - '豈' => '豈', - 'ï¤' => 'æ›´', - '車' => '車', - '賈' => '賈', - '滑' => '滑', - '串' => '串', - '句' => 'å¥', - '龜' => '龜', - '龜' => '龜', - '契' => '契', - '金' => '金', - '喇' => 'å–‡', - '奈' => '奈', - 'ï¤' => '懶', - '癩' => '癩', - 'ï¤' => 'ç¾…', - 'ï¤' => '蘿', - '螺' => '螺', - '裸' => '裸', - '邏' => 'é‚', - '樂' => '樂', - '洛' => 'æ´›', - '烙' => '烙', - '珞' => 'çž', - '落' => 'è½', - '酪' => 'é…ª', - '駱' => '駱', - '亂' => '亂', - '卵' => 'åµ', - 'ï¤' => '欄', - '爛' => '爛', - '蘭' => '蘭', - '鸞' => '鸞', - '嵐' => 'åµ', - '濫' => 'æ¿«', - '藍' => 'è—', - '襤' => '襤', - '拉' => '拉', - '臘' => '臘', - '蠟' => 'è Ÿ', - '廊' => '廊', - '朗' => '朗', - '浪' => '浪', - '狼' => '狼', - '郎' => '郎', - '來' => '來', - '冷' => '冷', - '勞' => 'å‹ž', - '擄' => 'æ“„', - '櫓' => 'æ«“', - '爐' => 'çˆ', - '盧' => '盧', - '老' => 'è€', - '蘆' => '蘆', - '虜' => '虜', - '路' => 'è·¯', - '露' => '露', - '魯' => 'é­¯', - '鷺' => 'é·º', - '碌' => '碌', - '祿' => '祿', - '綠' => '綠', - '菉' => 'è‰', - '錄' => '錄', - '鹿' => '鹿', - 'ï¥' => 'è«–', - '壟' => '壟', - '弄' => '弄', - '籠' => 'ç± ', - '聾' => 'è¾', - '牢' => '牢', - '磊' => '磊', - '賂' => '賂', - '雷' => 'é›·', - '壘' => '壘', - '屢' => 'å±¢', - '樓' => '樓', - 'ï¥' => 'æ·š', - '漏' => 'æ¼', - 'ï¥' => 'ç´¯', - 'ï¥' => '縷', - '陋' => '陋', - '勒' => 'å‹’', - '肋' => 'è‚‹', - '凜' => '凜', - '凌' => '凌', - '稜' => '稜', - '綾' => '綾', - '菱' => 'è±', - '陵' => '陵', - '讀' => '讀', - '拏' => 'æ‹', - '樂' => '樂', - 'ï¥' => '諾', - '丹' => '丹', - '寧' => '寧', - '怒' => '怒', - '率' => '率', - '異' => 'ç•°', - '北' => '北', - '磻' => '磻', - '便' => '便', - '復' => '復', - '不' => 'ä¸', - '泌' => '泌', - '數' => '數', - '索' => 'ç´¢', - '參' => 'åƒ', - '塞' => 'å¡ž', - '省' => 'çœ', - '葉' => '葉', - '說' => '說', - '殺' => '殺', - '辰' => 'è¾°', - '沈' => '沈', - '拾' => '拾', - '若' => 'è‹¥', - '掠' => '掠', - '略' => 'ç•¥', - '亮' => '亮', - '兩' => 'å…©', - '凉' => '凉', - '梁' => 'æ¢', - '糧' => '糧', - '良' => '良', - '諒' => 'è«’', - '量' => 'é‡', - '勵' => '勵', - '呂' => 'å‘‚', - 'ï¦' => '女', - '廬' => '廬', - '旅' => 'æ—…', - '濾' => '濾', - '礪' => '礪', - '閭' => 'é–­', - '驪' => '驪', - '麗' => '麗', - '黎' => '黎', - '力' => '力', - '曆' => '曆', - '歷' => 'æ­·', - 'ï¦' => 'è½¢', - '年' => 'å¹´', - 'ï¦' => 'æ†', - 'ï¦' => '戀', - '撚' => 'æ’š', - '漣' => 'æ¼£', - '煉' => 'ç…‰', - '璉' => 'ç’‰', - '秊' => '秊', - '練' => 'ç·´', - '聯' => 'è¯', - '輦' => '輦', - '蓮' => 'è“®', - '連' => '連', - '鍊' => 'éŠ', - '列' => '列', - 'ï¦' => '劣', - '咽' => 'å’½', - '烈' => '烈', - '裂' => '裂', - '說' => '說', - '廉' => '廉', - '念' => '念', - '捻' => 'æ»', - '殮' => 'æ®®', - '簾' => 'ç°¾', - '獵' => 'çµ', - '令' => '令', - '囹' => '囹', - '寧' => '寧', - '嶺' => '嶺', - '怜' => '怜', - '玲' => '玲', - '瑩' => 'ç‘©', - '羚' => '羚', - '聆' => 'è†', - '鈴' => '鈴', - '零' => '零', - '靈' => 'éˆ', - '領' => 'é ˜', - '例' => '例', - '禮' => '禮', - '醴' => '醴', - '隸' => '隸', - '惡' => '惡', - '了' => '了', - '僚' => '僚', - '寮' => '寮', - '尿' => 'å°¿', - '料' => 'æ–™', - '樂' => '樂', - '燎' => '燎', - 'ï§' => '療', - '蓼' => '蓼', - '遼' => 'é¼', - '龍' => 'é¾', - '暈' => '暈', - '阮' => '阮', - '劉' => '劉', - '杻' => 'æ»', - '柳' => '柳', - '流' => 'æµ', - '溜' => '溜', - '琉' => 'ç‰', - 'ï§' => 'ç•™', - '硫' => 'ç¡«', - 'ï§' => 'ç´', - 'ï§' => 'é¡ž', - '六' => 'å…­', - '戮' => '戮', - '陸' => '陸', - '倫' => '倫', - '崙' => 'å´™', - '淪' => 'æ·ª', - '輪' => '輪', - '律' => '律', - '慄' => 'æ…„', - '栗' => 'æ —', - '率' => '率', - '隆' => '隆', - 'ï§' => '利', - '吏' => 'å', - '履' => 'å±¥', - '易' => '易', - '李' => 'æŽ', - '梨' => '梨', - '泥' => 'æ³¥', - '理' => 'ç†', - '痢' => 'ç—¢', - '罹' => 'ç½¹', - '裏' => 'è£', - '裡' => '裡', - '里' => '里', - '離' => '離', - '匿' => '匿', - '溺' => '溺', - '吝' => 'å', - '燐' => 'ç‡', - '璘' => 'ç’˜', - '藺' => 'è—º', - '隣' => '隣', - '鱗' => 'é±—', - '麟' => '麟', - '林' => 'æž—', - '淋' => 'æ·‹', - '臨' => '臨', - '立' => 'ç«‹', - '笠' => '笠', - '粒' => 'ç²’', - '狀' => 'ç‹€', - '炙' => 'ç‚™', - '識' => 'è­˜', - '什' => '什', - '茶' => '茶', - '刺' => '刺', - '切' => '切', - 'ï¨' => '度', - '拓' => 'æ‹“', - '糖' => 'ç³–', - '宅' => 'å®…', - '洞' => 'æ´ž', - '暴' => 'æš´', - '輻' => 'è¼»', - '行' => 'è¡Œ', - '降' => 'é™', - '見' => '見', - '廓' => '廓', - '兀' => 'å…€', - 'ï¨' => 'å—€', - '﨎' => '' . "\0" . '', - 'ï¨' => '' . "\0" . '', - 'ï¨' => 'å¡š', - '﨑' => '' . "\0" . '', - '晴' => 'æ™´', - '﨓' => '' . "\0" . '', - '﨔' => '' . "\0" . '', - '凞' => '凞', - '猪' => '猪', - '益' => '益', - '礼' => '礼', - '神' => '神', - '祥' => '祥', - '福' => 'ç¦', - '靖' => 'é–', - 'ï¨' => 'ç²¾', - '羽' => 'ç¾½', - '﨟' => '' . "\0" . '', - '蘒' => '蘒', - '﨡' => '' . "\0" . '', - '諸' => '諸', - '﨣' => '' . "\0" . '', - '﨤' => '' . "\0" . '', - '逸' => '逸', - '都' => '都', - '﨧' => '' . "\0" . '', - '﨨' => '' . "\0" . '', - '﨩' => '' . "\0" . '', - '飯' => '飯', - '飼' => '飼', - '館' => '館', - '鶴' => '鶴', - '郞' => '郞', - '隷' => 'éš·', - '侮' => 'ä¾®', - '僧' => '僧', - '免' => 'å…', - '勉' => '勉', - '勤' => '勤', - '卑' => 'å‘', - '喝' => 'å–', - '嘆' => '嘆', - '器' => '器', - '塀' => 'å¡€', - '墨' => '墨', - '層' => '層', - '屮' => 'å±®', - '悔' => 'æ‚”', - '慨' => 'æ…¨', - '憎' => '憎', - 'ï©€' => '懲', - 'ï©' => 'æ•', - 'ï©‚' => 'æ—¢', - '暑' => 'æš‘', - 'ï©„' => '梅', - 'ï©…' => 'æµ·', - '渚' => '渚', - '漢' => 'æ¼¢', - '煮' => 'ç…®', - '爫' => '爫', - 'ï©Š' => 'ç¢', - 'ï©‹' => '碑', - 'ï©Œ' => '社', - 'ï©' => '祉', - 'ï©Ž' => '祈', - 'ï©' => 'ç¥', - 'ï©' => '祖', - 'ï©‘' => 'ç¥', - 'ï©’' => 'ç¦', - 'ï©“' => '禎', - 'ï©”' => 'ç©€', - 'ï©•' => 'çª', - 'ï©–' => '節', - 'ï©—' => 'ç·´', - '縉' => '縉', - 'ï©™' => 'ç¹', - 'ï©š' => 'ç½²', - 'ï©›' => '者', - 'ï©œ' => '臭', - 'ï©' => '艹', - 'ï©ž' => '艹', - 'ï©Ÿ' => 'è‘—', - 'ï© ' => 'è¤', - 'ï©¡' => '視', - 'ï©¢' => 'è¬', - 'ï©£' => '謹', - '賓' => '賓', - 'ï©¥' => 'è´ˆ', - '辶' => '辶', - '逸' => '逸', - '難' => '難', - 'ï©©' => '響', - '頻' => 'é »', - 'ï©«' => 'æµ', - '𤋮' => '𤋮', - 'ï©­' => '舘', - 'ï©°' => '並', - '况' => '况', - '全' => 'å…¨', - '侀' => 'ä¾€', - 'ï©´' => 'å……', - '冀' => '冀', - '勇' => '勇', - 'ï©·' => '勺', - '喝' => 'å–', - '啕' => 'å••', - '喙' => 'å–™', - 'ï©»' => 'å—¢', - '塚' => 'å¡š', - '墳' => '墳', - '奄' => '奄', - 'ï©¿' => '奔', - '婢' => 'å©¢', - 'ïª' => '嬨', - '廒' => 'å»’', - '廙' => 'å»™', - '彩' => '彩', - '徭' => 'å¾­', - '惘' => '惘', - '慎' => 'æ…Ž', - '愈' => '愈', - '憎' => '憎', - '慠' => 'æ… ', - '懲' => '懲', - '戴' => '戴', - 'ïª' => 'æ„', - '搜' => 'æœ', - 'ïª' => 'æ‘’', - 'ïª' => 'æ•–', - '晴' => 'æ™´', - '朗' => '朗', - '望' => '望', - '杖' => 'æ–', - '歹' => 'æ­¹', - '殺' => '殺', - '流' => 'æµ', - '滛' => 'æ»›', - '滋' => '滋', - '漢' => 'æ¼¢', - '瀞' => '瀞', - '煮' => 'ç…®', - 'ïª' => '瞧', - '爵' => '爵', - '犯' => '犯', - '猪' => '猪', - '瑱' => '瑱', - '甆' => '甆', - '画' => 'ç”»', - '瘝' => 'ç˜', - '瘟' => '瘟', - '益' => '益', - '盛' => 'ç››', - '直' => 'ç›´', - '睊' => 'çŠ', - '着' => 'ç€', - '磌' => '磌', - '窱' => '窱', - '節' => '節', - '类' => 'ç±»', - '絛' => 'çµ›', - '練' => 'ç·´', - '缾' => 'ç¼¾', - '者' => '者', - '荒' => 'è’', - '華' => 'è¯', - '蝹' => 'è¹', - '襁' => 'è¥', - '覆' => '覆', - '視' => '視', - '調' => '調', - '諸' => '諸', - '請' => 'è«‹', - '謁' => 'è¬', - '諾' => '諾', - '諭' => 'è«­', - '謹' => '謹', - 'ï«€' => '變', - 'ï«' => 'è´ˆ', - 'ï«‚' => '輸', - '遲' => 'é²', - 'ï«„' => '醙', - 'ï«…' => '鉶', - '陼' => '陼', - '難' => '難', - '靖' => 'é–', - '韛' => '韛', - 'ï«Š' => '響', - 'ï«‹' => 'é ‹', - 'ï«Œ' => 'é »', - 'ï«' => '鬒', - 'ï«Ž' => '龜', - 'ï«' => '𢡊', - 'ï«' => '𢡄', - 'ï«‘' => 'ð£•', - 'ï«’' => 'ã®', - 'ï«“' => '䀘', - 'ï«”' => '䀹', - 'ï«•' => '𥉉', - 'ï«–' => 'ð¥³', - 'ï«—' => '𧻓', - '齃' => '齃', - 'ï«™' => '龎', - 'ff' => 'ff', - 'ï¬' => 'fi', - 'fl' => 'fl', - 'ffi' => 'ffi', - 'ffl' => 'ffl', - 'ſt' => 'Å¿t', - 'st' => 'st', - 'ﬓ' => 'Õ´Õ¶', - 'ﬔ' => 'Õ´Õ¥', - 'ﬕ' => 'Õ´Õ«', - 'ﬖ' => 'Õ¾Õ¶', - 'ﬗ' => 'Õ´Õ­', - 'ﬠ' => '×¢', - 'ﬡ' => '×', - 'ﬢ' => 'ד', - 'ﬣ' => '×”', - 'ﬤ' => '×›', - 'ﬥ' => 'ל', - 'ﬦ' => '×', - 'ﬧ' => 'ר', - 'ﬨ' => 'ת', - '﬩' => '+', - 'ï­' => '×ל', - '﹉' => '‾', - '﹊' => '‾', - '﹋' => '‾', - '﹌' => '‾', - 'ï¹' => '_', - '﹎' => '_', - 'ï¹' => '_', - 'ï¹' => ',', - '﹑' => 'ã€', - 'ï¹’' => '.', - 'ï¹”' => ';', - '﹕' => ':', - 'ï¹–' => '?', - 'ï¹—' => '!', - '﹘' => '—', - 'ï¹™' => '(', - '﹚' => ')', - 'ï¹›' => '{', - '﹜' => '}', - 'ï¹' => '〔', - '﹞' => '〕', - '﹟' => '#', - 'ï¹ ' => '&', - '﹡' => '*', - 'ï¹¢' => '+', - 'ï¹£' => '-', - '﹤' => '<', - 'ï¹¥' => '>', - '﹦' => '=', - '﹨' => '\\', - '﹩' => '$', - '﹪' => '%', - '﹫' => '@', - 'ï¼' => '!', - '"' => '"', - '#' => '#', - '$' => '$', - 'ï¼…' => '%', - '&' => '&', - ''' => '\'', - '(' => '(', - ')' => ')', - '*' => '*', - '+' => '+', - ',' => ',', - 'ï¼' => '-', - '.' => '.', - 'ï¼' => '/', - 'ï¼' => '0', - '1' => '1', - 'ï¼’' => '2', - '3' => '3', - 'ï¼”' => '4', - '5' => '5', - 'ï¼–' => '6', - 'ï¼—' => '7', - '8' => '8', - 'ï¼™' => '9', - ':' => ':', - 'ï¼›' => ';', - '<' => '<', - 'ï¼' => '=', - '>' => '>', - '?' => '?', - 'ï¼ ' => '@', - 'A' => 'A', - 'ï¼¢' => 'B', - 'ï¼£' => 'C', - 'D' => 'D', - 'ï¼¥' => 'E', - 'F' => 'F', - 'G' => 'G', - 'H' => 'H', - 'I' => 'I', - 'J' => 'J', - 'K' => 'K', - 'L' => 'L', - 'ï¼­' => 'M', - 'ï¼®' => 'N', - 'O' => 'O', - 'ï¼°' => 'P', - 'ï¼±' => 'Q', - 'ï¼²' => 'R', - 'ï¼³' => 'S', - 'ï¼´' => 'T', - 'ï¼µ' => 'U', - 'V' => 'V', - 'ï¼·' => 'W', - 'X' => 'X', - 'ï¼¹' => 'Y', - 'Z' => 'Z', - 'ï¼»' => '[', - 'ï¼¼' => '\\', - 'ï¼½' => ']', - 'ï¼¾' => '^', - '_' => '_', - 'ï½€' => '`', - 'ï½' => 'a', - 'b' => 'b', - 'c' => 'c', - 'd' => 'd', - 'ï½…' => 'e', - 'f' => 'f', - 'g' => 'g', - 'h' => 'h', - 'i' => 'i', - 'j' => 'j', - 'k' => 'k', - 'l' => 'l', - 'ï½' => 'm', - 'n' => 'n', - 'ï½' => 'o', - 'ï½' => 'p', - 'q' => 'q', - 'ï½’' => 'r', - 's' => 's', - 'ï½”' => 't', - 'u' => 'u', - 'ï½–' => 'v', - 'ï½—' => 'w', - 'x' => 'x', - 'ï½™' => 'y', - 'z' => 'z', - 'ï½›' => '{', - '|' => '|', - 'ï½' => '}', - '~' => '~', - '⦅' => '⦅', - 'ï½ ' => '⦆', - '。' => '。', - 'ï½¢' => '「', - 'ï½£' => 'ã€', - '、' => 'ã€', - 'ï½¥' => '・', - 'ヲ' => 'ヲ', - 'ァ' => 'ã‚¡', - 'ィ' => 'ã‚£', - 'ゥ' => 'ã‚¥', - 'ェ' => 'ェ', - 'ォ' => 'ã‚©', - 'ャ' => 'ャ', - 'ï½­' => 'ュ', - 'ï½®' => 'ョ', - 'ッ' => 'ッ', - 'ï½°' => 'ー', - 'ï½±' => 'ã‚¢', - 'ï½²' => 'イ', - 'ï½³' => 'ウ', - 'ï½´' => 'エ', - 'ï½µ' => 'オ', - 'カ' => 'ã‚«', - 'ï½·' => 'ã‚­', - 'ク' => 'ク', - 'ï½¹' => 'ケ', - 'コ' => 'コ', - 'ï½»' => 'サ', - 'ï½¼' => 'ã‚·', - 'ï½½' => 'ス', - 'ï½¾' => 'ã‚»', - 'ソ' => 'ソ', - 'ï¾€' => 'ã‚¿', - 'ï¾' => 'ãƒ', - 'ツ' => 'ツ', - 'テ' => 'テ', - 'ト' => 'ト', - 'ï¾…' => 'ナ', - 'ニ' => 'ニ', - 'ヌ' => 'ヌ', - 'ネ' => 'ãƒ', - 'ノ' => 'ノ', - 'ハ' => 'ãƒ', - 'ヒ' => 'ヒ', - 'フ' => 'フ', - 'ï¾' => 'ヘ', - 'ホ' => 'ホ', - 'ï¾' => 'マ', - 'ï¾' => 'ミ', - 'ム' => 'ム', - 'ï¾’' => 'メ', - 'モ' => 'モ', - 'ï¾”' => 'ヤ', - 'ユ' => 'ユ', - 'ï¾–' => 'ヨ', - 'ï¾—' => 'ラ', - 'リ' => 'リ', - 'ï¾™' => 'ル', - 'レ' => 'レ', - 'ï¾›' => 'ロ', - 'ワ' => 'ワ', - 'ï¾' => 'ン', - '゙' => 'ã‚™', - '゚' => 'ã‚š', - 'ï¾ ' => 'ã…¤', - 'ᄀ' => 'ㄱ', - 'ï¾¢' => 'ㄲ', - 'ï¾£' => 'ㄳ', - 'ᄂ' => 'ã„´', - 'ï¾¥' => 'ㄵ', - 'ᆭ' => 'ㄶ', - 'ᄃ' => 'ã„·', - 'ᄄ' => 'ㄸ', - 'ᄅ' => 'ㄹ', - 'ᆰ' => 'ㄺ', - 'ᆱ' => 'ã„»', - 'ᆲ' => 'ㄼ', - 'ï¾­' => 'ㄽ', - 'ï¾®' => 'ㄾ', - 'ᆵ' => 'ã„¿', - 'ï¾°' => 'ã…€', - 'ï¾±' => 'ã…', - 'ï¾²' => 'ã…‚', - 'ï¾³' => 'ã…ƒ', - 'ï¾´' => 'ã…„', - 'ï¾µ' => 'ã……', - 'ᄊ' => 'ã…†', - 'ï¾·' => 'ã…‡', - 'ᄌ' => 'ã…ˆ', - 'ï¾¹' => 'ã…‰', - 'ᄎ' => 'ã…Š', - 'ï¾»' => 'ã…‹', - 'ï¾¼' => 'ã…Œ', - 'ï¾½' => 'ã…', - 'ï¾¾' => 'ã…Ž', - 'ï¿‚' => 'ã…', - 'ᅢ' => 'ã…', - 'ï¿„' => 'ã…‘', - 'ï¿…' => 'ã…’', - 'ᅥ' => 'ã…“', - 'ᅦ' => 'ã…”', - 'ï¿Š' => 'ã…•', - 'ï¿‹' => 'ã…–', - 'ï¿Œ' => 'ã…—', - 'ï¿' => 'ã…˜', - 'ï¿Ž' => 'ã…™', - 'ï¿' => 'ã…š', - 'ï¿’' => 'ã…›', - 'ï¿“' => 'ã…œ', - 'ï¿”' => 'ã…', - 'ï¿•' => 'ã…ž', - 'ï¿–' => 'ã…Ÿ', - 'ï¿—' => 'ã… ', - 'ï¿š' => 'ã…¡', - 'ï¿›' => 'ã…¢', - 'ï¿œ' => 'ã…£', - 'ï¿ ' => '¢', - 'ï¿¡' => '£', - 'ï¿¢' => '¬', - 'ï¿£' => '¯', - '¦' => '¦', - 'ï¿¥' => 'Â¥', - '₩' => 'â‚©', - '│' => '│', - 'ï¿©' => 'â†', - '↑' => '↑', - 'ï¿«' => '→', - '↓' => '↓', - 'ï¿­' => 'â– ', - 'ï¿®' => 'â—‹', - 'ð€' => 'A', - 'ð' => 'B', - 'ð‚' => 'C', - 'ðƒ' => 'D', - 'ð„' => 'E', - 'ð…' => 'F', - 'ð†' => 'G', - 'ð‡' => 'H', - 'ðˆ' => 'I', - 'ð‰' => 'J', - 'ðŠ' => 'K', - 'ð‹' => 'L', - 'ðŒ' => 'M', - 'ð' => 'N', - 'ðŽ' => 'O', - 'ð' => 'P', - 'ð' => 'Q', - 'ð‘' => 'R', - 'ð’' => 'S', - 'ð“' => 'T', - 'ð”' => 'U', - 'ð•' => 'V', - 'ð–' => 'W', - 'ð—' => 'X', - 'ð˜' => 'Y', - 'ð™' => 'Z', - 'ðš' => 'a', - 'ð›' => 'b', - 'ðœ' => 'c', - 'ð' => 'd', - 'ðž' => 'e', - 'ðŸ' => 'f', - 'ð ' => 'g', - 'ð¡' => 'h', - 'ð¢' => 'i', - 'ð£' => 'j', - 'ð¤' => 'k', - 'ð¥' => 'l', - 'ð¦' => 'm', - 'ð§' => 'n', - 'ð¨' => 'o', - 'ð©' => 'p', - 'ðª' => 'q', - 'ð«' => 'r', - 'ð¬' => 's', - 'ð­' => 't', - 'ð®' => 'u', - 'ð¯' => 'v', - 'ð°' => 'w', - 'ð±' => 'x', - 'ð²' => 'y', - 'ð³' => 'z', - 'ð´' => 'A', - 'ðµ' => 'B', - 'ð¶' => 'C', - 'ð·' => 'D', - 'ð¸' => 'E', - 'ð¹' => 'F', - 'ðº' => 'G', - 'ð»' => 'H', - 'ð¼' => 'I', - 'ð½' => 'J', - 'ð¾' => 'K', - 'ð¿' => 'L', - 'ð‘€' => 'M', - 'ð‘' => 'N', - 'ð‘‚' => 'O', - 'ð‘ƒ' => 'P', - 'ð‘„' => 'Q', - 'ð‘…' => 'R', - 'ð‘†' => 'S', - 'ð‘‡' => 'T', - 'ð‘ˆ' => 'U', - 'ð‘‰' => 'V', - 'ð‘Š' => 'W', - 'ð‘‹' => 'X', - 'ð‘Œ' => 'Y', - 'ð‘' => 'Z', - 'ð‘Ž' => 'a', - 'ð‘' => 'b', - 'ð‘' => 'c', - 'ð‘‘' => 'd', - 'ð‘’' => 'e', - 'ð‘“' => 'f', - 'ð‘”' => 'g', - 'ð‘–' => 'i', - 'ð‘—' => 'j', - 'ð‘˜' => 'k', - 'ð‘™' => 'l', - 'ð‘š' => 'm', - 'ð‘›' => 'n', - 'ð‘œ' => 'o', - 'ð‘' => 'p', - 'ð‘ž' => 'q', - 'ð‘Ÿ' => 'r', - 'ð‘ ' => 's', - 'ð‘¡' => 't', - 'ð‘¢' => 'u', - 'ð‘£' => 'v', - 'ð‘¤' => 'w', - 'ð‘¥' => 'x', - 'ð‘¦' => 'y', - 'ð‘§' => 'z', - 'ð‘¨' => 'A', - 'ð‘©' => 'B', - 'ð‘ª' => 'C', - 'ð‘«' => 'D', - 'ð‘¬' => 'E', - 'ð‘­' => 'F', - 'ð‘®' => 'G', - 'ð‘¯' => 'H', - 'ð‘°' => 'I', - 'ð‘±' => 'J', - 'ð‘²' => 'K', - 'ð‘³' => 'L', - 'ð‘´' => 'M', - 'ð‘µ' => 'N', - 'ð‘¶' => 'O', - 'ð‘·' => 'P', - 'ð‘¸' => 'Q', - 'ð‘¹' => 'R', - 'ð‘º' => 'S', - 'ð‘»' => 'T', - 'ð‘¼' => 'U', - 'ð‘½' => 'V', - 'ð‘¾' => 'W', - 'ð‘¿' => 'X', - 'ð’€' => 'Y', - 'ð’' => 'Z', - 'ð’‚' => 'a', - 'ð’ƒ' => 'b', - 'ð’„' => 'c', - 'ð’…' => 'd', - 'ð’†' => 'e', - 'ð’‡' => 'f', - 'ð’ˆ' => 'g', - 'ð’‰' => 'h', - 'ð’Š' => 'i', - 'ð’‹' => 'j', - 'ð’Œ' => 'k', - 'ð’' => 'l', - 'ð’Ž' => 'm', - 'ð’' => 'n', - 'ð’' => 'o', - 'ð’‘' => 'p', - 'ð’’' => 'q', - 'ð’“' => 'r', - 'ð’”' => 's', - 'ð’•' => 't', - 'ð’–' => 'u', - 'ð’—' => 'v', - 'ð’˜' => 'w', - 'ð’™' => 'x', - 'ð’š' => 'y', - 'ð’›' => 'z', - 'ð’œ' => 'A', - 'ð’ž' => 'C', - 'ð’Ÿ' => 'D', - 'ð’¢' => 'G', - 'ð’¥' => 'J', - 'ð’¦' => 'K', - 'ð’©' => 'N', - 'ð’ª' => 'O', - 'ð’«' => 'P', - 'ð’¬' => 'Q', - 'ð’®' => 'S', - 'ð’¯' => 'T', - 'ð’°' => 'U', - 'ð’±' => 'V', - 'ð’²' => 'W', - 'ð’³' => 'X', - 'ð’´' => 'Y', - 'ð’µ' => 'Z', - 'ð’¶' => 'a', - 'ð’·' => 'b', - 'ð’¸' => 'c', - 'ð’¹' => 'd', - 'ð’»' => 'f', - 'ð’½' => 'h', - 'ð’¾' => 'i', - 'ð’¿' => 'j', - 'ð“€' => 'k', - 'ð“' => 'l', - 'ð“‚' => 'm', - 'ð“ƒ' => 'n', - 'ð“…' => 'p', - 'ð“†' => 'q', - 'ð“‡' => 'r', - 'ð“ˆ' => 's', - 'ð“‰' => 't', - 'ð“Š' => 'u', - 'ð“‹' => 'v', - 'ð“Œ' => 'w', - 'ð“' => 'x', - 'ð“Ž' => 'y', - 'ð“' => 'z', - 'ð“' => 'A', - 'ð“‘' => 'B', - 'ð“’' => 'C', - 'ð““' => 'D', - 'ð“”' => 'E', - 'ð“•' => 'F', - 'ð“–' => 'G', - 'ð“—' => 'H', - 'ð“˜' => 'I', - 'ð“™' => 'J', - 'ð“š' => 'K', - 'ð“›' => 'L', - 'ð“œ' => 'M', - 'ð“' => 'N', - 'ð“ž' => 'O', - 'ð“Ÿ' => 'P', - 'ð“ ' => 'Q', - 'ð“¡' => 'R', - 'ð“¢' => 'S', - 'ð“£' => 'T', - 'ð“¤' => 'U', - 'ð“¥' => 'V', - 'ð“¦' => 'W', - 'ð“§' => 'X', - 'ð“¨' => 'Y', - 'ð“©' => 'Z', - 'ð“ª' => 'a', - 'ð“«' => 'b', - 'ð“¬' => 'c', - 'ð“­' => 'd', - 'ð“®' => 'e', - 'ð“¯' => 'f', - 'ð“°' => 'g', - 'ð“±' => 'h', - 'ð“²' => 'i', - 'ð“³' => 'j', - 'ð“´' => 'k', - 'ð“µ' => 'l', - 'ð“¶' => 'm', - 'ð“·' => 'n', - 'ð“¸' => 'o', - 'ð“¹' => 'p', - 'ð“º' => 'q', - 'ð“»' => 'r', - 'ð“¼' => 's', - 'ð“½' => 't', - 'ð“¾' => 'u', - 'ð“¿' => 'v', - 'ð”€' => 'w', - 'ð”' => 'x', - 'ð”‚' => 'y', - 'ð”ƒ' => 'z', - 'ð”„' => 'A', - 'ð”…' => 'B', - 'ð”‡' => 'D', - 'ð”ˆ' => 'E', - 'ð”‰' => 'F', - 'ð”Š' => 'G', - 'ð”' => 'J', - 'ð”Ž' => 'K', - 'ð”' => 'L', - 'ð”' => 'M', - 'ð”‘' => 'N', - 'ð”’' => 'O', - 'ð”“' => 'P', - 'ð””' => 'Q', - 'ð”–' => 'S', - 'ð”—' => 'T', - 'ð”˜' => 'U', - 'ð”™' => 'V', - 'ð”š' => 'W', - 'ð”›' => 'X', - 'ð”œ' => 'Y', - 'ð”ž' => 'a', - 'ð”Ÿ' => 'b', - 'ð” ' => 'c', - 'ð”¡' => 'd', - 'ð”¢' => 'e', - 'ð”£' => 'f', - 'ð”¤' => 'g', - 'ð”¥' => 'h', - 'ð”¦' => 'i', - 'ð”§' => 'j', - 'ð”¨' => 'k', - 'ð”©' => 'l', - 'ð”ª' => 'm', - 'ð”«' => 'n', - 'ð”¬' => 'o', - 'ð”­' => 'p', - 'ð”®' => 'q', - 'ð”¯' => 'r', - 'ð”°' => 's', - 'ð”±' => 't', - 'ð”²' => 'u', - 'ð”³' => 'v', - 'ð”´' => 'w', - 'ð”µ' => 'x', - 'ð”¶' => 'y', - 'ð”·' => 'z', - 'ð”¸' => 'A', - 'ð”¹' => 'B', - 'ð”»' => 'D', - 'ð”¼' => 'E', - 'ð”½' => 'F', - 'ð”¾' => 'G', - 'ð•€' => 'I', - 'ð•' => 'J', - 'ð•‚' => 'K', - 'ð•ƒ' => 'L', - 'ð•„' => 'M', - 'ð•†' => 'O', - 'ð•Š' => 'S', - 'ð•‹' => 'T', - 'ð•Œ' => 'U', - 'ð•' => 'V', - 'ð•Ž' => 'W', - 'ð•' => 'X', - 'ð•' => 'Y', - 'ð•’' => 'a', - 'ð•“' => 'b', - 'ð•”' => 'c', - 'ð••' => 'd', - 'ð•–' => 'e', - 'ð•—' => 'f', - 'ð•˜' => 'g', - 'ð•™' => 'h', - 'ð•š' => 'i', - 'ð•›' => 'j', - 'ð•œ' => 'k', - 'ð•' => 'l', - 'ð•ž' => 'm', - 'ð•Ÿ' => 'n', - 'ð• ' => 'o', - 'ð•¡' => 'p', - 'ð•¢' => 'q', - 'ð•£' => 'r', - 'ð•¤' => 's', - 'ð•¥' => 't', - 'ð•¦' => 'u', - 'ð•§' => 'v', - 'ð•¨' => 'w', - 'ð•©' => 'x', - 'ð•ª' => 'y', - 'ð•«' => 'z', - 'ð•¬' => 'A', - 'ð•­' => 'B', - 'ð•®' => 'C', - 'ð•¯' => 'D', - 'ð•°' => 'E', - 'ð•±' => 'F', - 'ð•²' => 'G', - 'ð•³' => 'H', - 'ð•´' => 'I', - 'ð•µ' => 'J', - 'ð•¶' => 'K', - 'ð•·' => 'L', - 'ð•¸' => 'M', - 'ð•¹' => 'N', - 'ð•º' => 'O', - 'ð•»' => 'P', - 'ð•¼' => 'Q', - 'ð•½' => 'R', - 'ð•¾' => 'S', - 'ð•¿' => 'T', - 'ð–€' => 'U', - 'ð–' => 'V', - 'ð–‚' => 'W', - 'ð–ƒ' => 'X', - 'ð–„' => 'Y', - 'ð–…' => 'Z', - 'ð–†' => 'a', - 'ð–‡' => 'b', - 'ð–ˆ' => 'c', - 'ð–‰' => 'd', - 'ð–Š' => 'e', - 'ð–‹' => 'f', - 'ð–Œ' => 'g', - 'ð–' => 'h', - 'ð–Ž' => 'i', - 'ð–' => 'j', - 'ð–' => 'k', - 'ð–‘' => 'l', - 'ð–’' => 'm', - 'ð–“' => 'n', - 'ð–”' => 'o', - 'ð–•' => 'p', - 'ð––' => 'q', - 'ð–—' => 'r', - 'ð–˜' => 's', - 'ð–™' => 't', - 'ð–š' => 'u', - 'ð–›' => 'v', - 'ð–œ' => 'w', - 'ð–' => 'x', - 'ð–ž' => 'y', - 'ð–Ÿ' => 'z', - 'ð– ' => 'A', - 'ð–¡' => 'B', - 'ð–¢' => 'C', - 'ð–£' => 'D', - 'ð–¤' => 'E', - 'ð–¥' => 'F', - 'ð–¦' => 'G', - 'ð–§' => 'H', - 'ð–¨' => 'I', - 'ð–©' => 'J', - 'ð–ª' => 'K', - 'ð–«' => 'L', - 'ð–¬' => 'M', - 'ð–­' => 'N', - 'ð–®' => 'O', - 'ð–¯' => 'P', - 'ð–°' => 'Q', - 'ð–±' => 'R', - 'ð–²' => 'S', - 'ð–³' => 'T', - 'ð–´' => 'U', - 'ð–µ' => 'V', - 'ð–¶' => 'W', - 'ð–·' => 'X', - 'ð–¸' => 'Y', - 'ð–¹' => 'Z', - 'ð–º' => 'a', - 'ð–»' => 'b', - 'ð–¼' => 'c', - 'ð–½' => 'd', - 'ð–¾' => 'e', - 'ð–¿' => 'f', - 'ð—€' => 'g', - 'ð—' => 'h', - 'ð—‚' => 'i', - 'ð—ƒ' => 'j', - 'ð—„' => 'k', - 'ð—…' => 'l', - 'ð—†' => 'm', - 'ð—‡' => 'n', - 'ð—ˆ' => 'o', - 'ð—‰' => 'p', - 'ð—Š' => 'q', - 'ð—‹' => 'r', - 'ð—Œ' => 's', - 'ð—' => 't', - 'ð—Ž' => 'u', - 'ð—' => 'v', - 'ð—' => 'w', - 'ð—‘' => 'x', - 'ð—’' => 'y', - 'ð—“' => 'z', - 'ð—”' => 'A', - 'ð—•' => 'B', - 'ð—–' => 'C', - 'ð——' => 'D', - 'ð—˜' => 'E', - 'ð—™' => 'F', - 'ð—š' => 'G', - 'ð—›' => 'H', - 'ð—œ' => 'I', - 'ð—' => 'J', - 'ð—ž' => 'K', - 'ð—Ÿ' => 'L', - 'ð— ' => 'M', - 'ð—¡' => 'N', - 'ð—¢' => 'O', - 'ð—£' => 'P', - 'ð—¤' => 'Q', - 'ð—¥' => 'R', - 'ð—¦' => 'S', - 'ð—§' => 'T', - 'ð—¨' => 'U', - 'ð—©' => 'V', - 'ð—ª' => 'W', - 'ð—«' => 'X', - 'ð—¬' => 'Y', - 'ð—­' => 'Z', - 'ð—®' => 'a', - 'ð—¯' => 'b', - 'ð—°' => 'c', - 'ð—±' => 'd', - 'ð—²' => 'e', - 'ð—³' => 'f', - 'ð—´' => 'g', - 'ð—µ' => 'h', - 'ð—¶' => 'i', - 'ð—·' => 'j', - 'ð—¸' => 'k', - 'ð—¹' => 'l', - 'ð—º' => 'm', - 'ð—»' => 'n', - 'ð—¼' => 'o', - 'ð—½' => 'p', - 'ð—¾' => 'q', - 'ð—¿' => 'r', - 'ð˜€' => 's', - 'ð˜' => 't', - 'ð˜‚' => 'u', - 'ð˜ƒ' => 'v', - 'ð˜„' => 'w', - 'ð˜…' => 'x', - 'ð˜†' => 'y', - 'ð˜‡' => 'z', - 'ð˜ˆ' => 'A', - 'ð˜‰' => 'B', - 'ð˜Š' => 'C', - 'ð˜‹' => 'D', - 'ð˜Œ' => 'E', - 'ð˜' => 'F', - 'ð˜Ž' => 'G', - 'ð˜' => 'H', - 'ð˜' => 'I', - 'ð˜‘' => 'J', - 'ð˜’' => 'K', - 'ð˜“' => 'L', - 'ð˜”' => 'M', - 'ð˜•' => 'N', - 'ð˜–' => 'O', - 'ð˜—' => 'P', - 'ð˜˜' => 'Q', - 'ð˜™' => 'R', - 'ð˜š' => 'S', - 'ð˜›' => 'T', - 'ð˜œ' => 'U', - 'ð˜' => 'V', - 'ð˜ž' => 'W', - 'ð˜Ÿ' => 'X', - 'ð˜ ' => 'Y', - 'ð˜¡' => 'Z', - 'ð˜¢' => 'a', - 'ð˜£' => 'b', - 'ð˜¤' => 'c', - 'ð˜¥' => 'd', - 'ð˜¦' => 'e', - 'ð˜§' => 'f', - 'ð˜¨' => 'g', - 'ð˜©' => 'h', - 'ð˜ª' => 'i', - 'ð˜«' => 'j', - 'ð˜¬' => 'k', - 'ð˜­' => 'l', - 'ð˜®' => 'm', - 'ð˜¯' => 'n', - 'ð˜°' => 'o', - 'ð˜±' => 'p', - 'ð˜²' => 'q', - 'ð˜³' => 'r', - 'ð˜´' => 's', - 'ð˜µ' => 't', - 'ð˜¶' => 'u', - 'ð˜·' => 'v', - 'ð˜¸' => 'w', - 'ð˜¹' => 'x', - 'ð˜º' => 'y', - 'ð˜»' => 'z', - 'ð˜¼' => 'A', - 'ð˜½' => 'B', - 'ð˜¾' => 'C', - 'ð˜¿' => 'D', - 'ð™€' => 'E', - 'ð™' => 'F', - 'ð™‚' => 'G', - 'ð™ƒ' => 'H', - 'ð™„' => 'I', - 'ð™…' => 'J', - 'ð™†' => 'K', - 'ð™‡' => 'L', - 'ð™ˆ' => 'M', - 'ð™‰' => 'N', - 'ð™Š' => 'O', - 'ð™‹' => 'P', - 'ð™Œ' => 'Q', - 'ð™' => 'R', - 'ð™Ž' => 'S', - 'ð™' => 'T', - 'ð™' => 'U', - 'ð™‘' => 'V', - 'ð™’' => 'W', - 'ð™“' => 'X', - 'ð™”' => 'Y', - 'ð™•' => 'Z', - 'ð™–' => 'a', - 'ð™—' => 'b', - 'ð™˜' => 'c', - 'ð™™' => 'd', - 'ð™š' => 'e', - 'ð™›' => 'f', - 'ð™œ' => 'g', - 'ð™' => 'h', - 'ð™ž' => 'i', - 'ð™Ÿ' => 'j', - 'ð™ ' => 'k', - 'ð™¡' => 'l', - 'ð™¢' => 'm', - 'ð™£' => 'n', - 'ð™¤' => 'o', - 'ð™¥' => 'p', - 'ð™¦' => 'q', - 'ð™§' => 'r', - 'ð™¨' => 's', - 'ð™©' => 't', - 'ð™ª' => 'u', - 'ð™«' => 'v', - 'ð™¬' => 'w', - 'ð™­' => 'x', - 'ð™®' => 'y', - 'ð™¯' => 'z', - 'ð™°' => 'A', - 'ð™±' => 'B', - 'ð™²' => 'C', - 'ð™³' => 'D', - 'ð™´' => 'E', - 'ð™µ' => 'F', - 'ð™¶' => 'G', - 'ð™·' => 'H', - 'ð™¸' => 'I', - 'ð™¹' => 'J', - 'ð™º' => 'K', - 'ð™»' => 'L', - 'ð™¼' => 'M', - 'ð™½' => 'N', - 'ð™¾' => 'O', - 'ð™¿' => 'P', - 'ðš€' => 'Q', - 'ðš' => 'R', - 'ðš‚' => 'S', - 'ðšƒ' => 'T', - 'ðš„' => 'U', - 'ðš…' => 'V', - 'ðš†' => 'W', - 'ðš‡' => 'X', - 'ðšˆ' => 'Y', - 'ðš‰' => 'Z', - 'ðšŠ' => 'a', - 'ðš‹' => 'b', - 'ðšŒ' => 'c', - 'ðš' => 'd', - 'ðšŽ' => 'e', - 'ðš' => 'f', - 'ðš' => 'g', - 'ðš‘' => 'h', - 'ðš’' => 'i', - 'ðš“' => 'j', - 'ðš”' => 'k', - 'ðš•' => 'l', - 'ðš–' => 'm', - 'ðš—' => 'n', - 'ðš˜' => 'o', - 'ðš™' => 'p', - 'ðšš' => 'q', - 'ðš›' => 'r', - 'ðšœ' => 's', - 'ðš' => 't', - 'ðšž' => 'u', - 'ðšŸ' => 'v', - 'ðš ' => 'w', - 'ðš¡' => 'x', - 'ðš¢' => 'y', - 'ðš£' => 'z', - 'ðš¤' => 'ı', - 'ðš¥' => 'È·', - 'ðš¨' => 'Α', - 'ðš©' => 'Î’', - 'ðšª' => 'Γ', - 'ðš«' => 'Δ', - 'ðš¬' => 'Ε', - 'ðš­' => 'Ζ', - 'ðš®' => 'Η', - 'ðš¯' => 'Θ', - 'ðš°' => 'Ι', - 'ðš±' => 'Κ', - 'ðš²' => 'Λ', - 'ðš³' => 'Îœ', - 'ðš´' => 'Î', - 'ðšµ' => 'Ξ', - 'ðš¶' => 'Ο', - 'ðš·' => 'Π', - 'ðš¸' => 'Ρ', - 'ðš¹' => 'Ï´', - 'ðšº' => 'Σ', - 'ðš»' => 'Τ', - 'ðš¼' => 'Î¥', - 'ðš½' => 'Φ', - 'ðš¾' => 'Χ', - 'ðš¿' => 'Ψ', - 'ð›€' => 'Ω', - 'ð›' => '∇', - 'ð›‚' => 'α', - 'ð›ƒ' => 'β', - 'ð›„' => 'γ', - 'ð›…' => 'δ', - 'ð›†' => 'ε', - 'ð›‡' => 'ζ', - 'ð›ˆ' => 'η', - 'ð›‰' => 'θ', - 'ð›Š' => 'ι', - 'ð›‹' => 'κ', - 'ð›Œ' => 'λ', - 'ð›' => 'μ', - 'ð›Ž' => 'ν', - 'ð›' => 'ξ', - 'ð›' => 'ο', - 'ð›‘' => 'Ï€', - 'ð›’' => 'Ï', - 'ð›“' => 'Ï‚', - 'ð›”' => 'σ', - 'ð›•' => 'Ï„', - 'ð›–' => 'Ï…', - 'ð›—' => 'φ', - 'ð›˜' => 'χ', - 'ð›™' => 'ψ', - 'ð›š' => 'ω', - 'ð››' => '∂', - 'ð›œ' => 'ϵ', - 'ð›' => 'Ï‘', - 'ð›ž' => 'Ï°', - 'ð›Ÿ' => 'Ï•', - 'ð› ' => 'ϱ', - 'ð›¡' => 'Ï–', - 'ð›¢' => 'Α', - 'ð›£' => 'Î’', - 'ð›¤' => 'Γ', - 'ð›¥' => 'Δ', - 'ð›¦' => 'Ε', - 'ð›§' => 'Ζ', - 'ð›¨' => 'Η', - 'ð›©' => 'Θ', - 'ð›ª' => 'Ι', - 'ð›«' => 'Κ', - 'ð›¬' => 'Λ', - 'ð›­' => 'Îœ', - 'ð›®' => 'Î', - 'ð›¯' => 'Ξ', - 'ð›°' => 'Ο', - 'ð›±' => 'Π', - 'ð›²' => 'Ρ', - 'ð›³' => 'Ï´', - 'ð›´' => 'Σ', - 'ð›µ' => 'Τ', - 'ð›¶' => 'Î¥', - 'ð›·' => 'Φ', - 'ð›¸' => 'Χ', - 'ð›¹' => 'Ψ', - 'ð›º' => 'Ω', - 'ð›»' => '∇', - 'ð›¼' => 'α', - 'ð›½' => 'β', - 'ð›¾' => 'γ', - 'ð›¿' => 'δ', - 'ðœ€' => 'ε', - 'ðœ' => 'ζ', - 'ðœ‚' => 'η', - 'ðœƒ' => 'θ', - 'ðœ„' => 'ι', - 'ðœ…' => 'κ', - 'ðœ†' => 'λ', - 'ðœ‡' => 'μ', - 'ðœˆ' => 'ν', - 'ðœ‰' => 'ξ', - 'ðœŠ' => 'ο', - 'ðœ‹' => 'Ï€', - 'ðœŒ' => 'Ï', - 'ðœ' => 'Ï‚', - 'ðœŽ' => 'σ', - 'ðœ' => 'Ï„', - 'ðœ' => 'Ï…', - 'ðœ‘' => 'φ', - 'ðœ’' => 'χ', - 'ðœ“' => 'ψ', - 'ðœ”' => 'ω', - 'ðœ•' => '∂', - 'ðœ–' => 'ϵ', - 'ðœ—' => 'Ï‘', - 'ðœ˜' => 'Ï°', - 'ðœ™' => 'Ï•', - 'ðœš' => 'ϱ', - 'ðœ›' => 'Ï–', - 'ðœœ' => 'Α', - 'ðœ' => 'Î’', - 'ðœž' => 'Γ', - 'ðœŸ' => 'Δ', - 'ðœ ' => 'Ε', - 'ðœ¡' => 'Ζ', - 'ðœ¢' => 'Η', - 'ðœ£' => 'Θ', - 'ðœ¤' => 'Ι', - 'ðœ¥' => 'Κ', - 'ðœ¦' => 'Λ', - 'ðœ§' => 'Îœ', - 'ðœ¨' => 'Î', - 'ðœ©' => 'Ξ', - 'ðœª' => 'Ο', - 'ðœ«' => 'Π', - 'ðœ¬' => 'Ρ', - 'ðœ­' => 'Ï´', - 'ðœ®' => 'Σ', - 'ðœ¯' => 'Τ', - 'ðœ°' => 'Î¥', - 'ðœ±' => 'Φ', - 'ðœ²' => 'Χ', - 'ðœ³' => 'Ψ', - 'ðœ´' => 'Ω', - 'ðœµ' => '∇', - 'ðœ¶' => 'α', - 'ðœ·' => 'β', - 'ðœ¸' => 'γ', - 'ðœ¹' => 'δ', - 'ðœº' => 'ε', - 'ðœ»' => 'ζ', - 'ðœ¼' => 'η', - 'ðœ½' => 'θ', - 'ðœ¾' => 'ι', - 'ðœ¿' => 'κ', - 'ð€' => 'λ', - 'ð' => 'μ', - 'ð‚' => 'ν', - 'ðƒ' => 'ξ', - 'ð„' => 'ο', - 'ð…' => 'Ï€', - 'ð†' => 'Ï', - 'ð‡' => 'Ï‚', - 'ðˆ' => 'σ', - 'ð‰' => 'Ï„', - 'ðŠ' => 'Ï…', - 'ð‹' => 'φ', - 'ðŒ' => 'χ', - 'ð' => 'ψ', - 'ðŽ' => 'ω', - 'ð' => '∂', - 'ð' => 'ϵ', - 'ð‘' => 'Ï‘', - 'ð’' => 'Ï°', - 'ð“' => 'Ï•', - 'ð”' => 'ϱ', - 'ð•' => 'Ï–', - 'ð–' => 'Α', - 'ð—' => 'Î’', - 'ð˜' => 'Γ', - 'ð™' => 'Δ', - 'ðš' => 'Ε', - 'ð›' => 'Ζ', - 'ðœ' => 'Η', - 'ð' => 'Θ', - 'ðž' => 'Ι', - 'ðŸ' => 'Κ', - 'ð ' => 'Λ', - 'ð¡' => 'Îœ', - 'ð¢' => 'Î', - 'ð£' => 'Ξ', - 'ð¤' => 'Ο', - 'ð¥' => 'Π', - 'ð¦' => 'Ρ', - 'ð§' => 'Ï´', - 'ð¨' => 'Σ', - 'ð©' => 'Τ', - 'ðª' => 'Î¥', - 'ð«' => 'Φ', - 'ð¬' => 'Χ', - 'ð­' => 'Ψ', - 'ð®' => 'Ω', - 'ð¯' => '∇', - 'ð°' => 'α', - 'ð±' => 'β', - 'ð²' => 'γ', - 'ð³' => 'δ', - 'ð´' => 'ε', - 'ðµ' => 'ζ', - 'ð¶' => 'η', - 'ð·' => 'θ', - 'ð¸' => 'ι', - 'ð¹' => 'κ', - 'ðº' => 'λ', - 'ð»' => 'μ', - 'ð¼' => 'ν', - 'ð½' => 'ξ', - 'ð¾' => 'ο', - 'ð¿' => 'Ï€', - 'ðž€' => 'Ï', - 'ðž' => 'Ï‚', - 'ðž‚' => 'σ', - 'ðžƒ' => 'Ï„', - 'ðž„' => 'Ï…', - 'ðž…' => 'φ', - 'ðž†' => 'χ', - 'ðž‡' => 'ψ', - 'ðžˆ' => 'ω', - 'ðž‰' => '∂', - 'ðžŠ' => 'ϵ', - 'ðž‹' => 'Ï‘', - 'ðžŒ' => 'Ï°', - 'ðž' => 'Ï•', - 'ðžŽ' => 'ϱ', - 'ðž' => 'Ï–', - 'ðž' => 'Α', - 'ðž‘' => 'Î’', - 'ðž’' => 'Γ', - 'ðž“' => 'Δ', - 'ðž”' => 'Ε', - 'ðž•' => 'Ζ', - 'ðž–' => 'Η', - 'ðž—' => 'Θ', - 'ðž˜' => 'Ι', - 'ðž™' => 'Κ', - 'ðžš' => 'Λ', - 'ðž›' => 'Îœ', - 'ðžœ' => 'Î', - 'ðž' => 'Ξ', - 'ðžž' => 'Ο', - 'ðžŸ' => 'Π', - 'ðž ' => 'Ρ', - 'ðž¡' => 'Ï´', - 'ðž¢' => 'Σ', - 'ðž£' => 'Τ', - 'ðž¤' => 'Î¥', - 'ðž¥' => 'Φ', - 'ðž¦' => 'Χ', - 'ðž§' => 'Ψ', - 'ðž¨' => 'Ω', - 'ðž©' => '∇', - 'ðžª' => 'α', - 'ðž«' => 'β', - 'ðž¬' => 'γ', - 'ðž­' => 'δ', - 'ðž®' => 'ε', - 'ðž¯' => 'ζ', - 'ðž°' => 'η', - 'ðž±' => 'θ', - 'ðž²' => 'ι', - 'ðž³' => 'κ', - 'ðž´' => 'λ', - 'ðžµ' => 'μ', - 'ðž¶' => 'ν', - 'ðž·' => 'ξ', - 'ðž¸' => 'ο', - 'ðž¹' => 'Ï€', - 'ðžº' => 'Ï', - 'ðž»' => 'Ï‚', - 'ðž¼' => 'σ', - 'ðž½' => 'Ï„', - 'ðž¾' => 'Ï…', - 'ðž¿' => 'φ', - 'ðŸ€' => 'χ', - 'ðŸ' => 'ψ', - 'ðŸ‚' => 'ω', - 'ðŸƒ' => '∂', - 'ðŸ„' => 'ϵ', - 'ðŸ…' => 'Ï‘', - 'ðŸ†' => 'Ï°', - 'ðŸ‡' => 'Ï•', - 'ðŸˆ' => 'ϱ', - 'ðŸ‰' => 'Ï–', - 'ðŸŠ' => 'Ïœ', - 'ðŸ‹' => 'Ï', - 'ðŸŽ' => '0', - 'ðŸ' => '1', - 'ðŸ' => '2', - 'ðŸ‘' => '3', - 'ðŸ’' => '4', - 'ðŸ“' => '5', - 'ðŸ”' => '6', - 'ðŸ•' => '7', - 'ðŸ–' => '8', - 'ðŸ—' => '9', - 'ðŸ˜' => '0', - 'ðŸ™' => '1', - 'ðŸš' => '2', - 'ðŸ›' => '3', - 'ðŸœ' => '4', - 'ðŸ' => '5', - 'ðŸž' => '6', - 'ðŸŸ' => '7', - 'ðŸ ' => '8', - 'ðŸ¡' => '9', - 'ðŸ¢' => '0', - 'ðŸ£' => '1', - 'ðŸ¤' => '2', - 'ðŸ¥' => '3', - 'ðŸ¦' => '4', - 'ðŸ§' => '5', - 'ðŸ¨' => '6', - 'ðŸ©' => '7', - 'ðŸª' => '8', - 'ðŸ«' => '9', - 'ðŸ¬' => '0', - 'ðŸ­' => '1', - 'ðŸ®' => '2', - 'ðŸ¯' => '3', - 'ðŸ°' => '4', - 'ðŸ±' => '5', - 'ðŸ²' => '6', - 'ðŸ³' => '7', - 'ðŸ´' => '8', - 'ðŸµ' => '9', - 'ðŸ¶' => '0', - 'ðŸ·' => '1', - 'ðŸ¸' => '2', - 'ðŸ¹' => '3', - 'ðŸº' => '4', - 'ðŸ»' => '5', - 'ðŸ¼' => '6', - 'ðŸ½' => '7', - 'ðŸ¾' => '8', - 'ðŸ¿' => '9', - '𞸀' => 'ا', - 'ðž¸' => 'ب', - '𞸂' => 'ج', - '𞸃' => 'د', - '𞸅' => 'Ùˆ', - '𞸆' => 'ز', - '𞸇' => 'Ø­', - '𞸈' => 'Ø·', - '𞸉' => 'ÙŠ', - '𞸊' => 'Ùƒ', - '𞸋' => 'Ù„', - '𞸌' => 'Ù…', - 'ðž¸' => 'Ù†', - '𞸎' => 'س', - 'ðž¸' => 'ع', - 'ðž¸' => 'Ù', - '𞸑' => 'ص', - '𞸒' => 'Ù‚', - '𞸓' => 'ر', - '𞸔' => 'Ø´', - '𞸕' => 'ت', - '𞸖' => 'Ø«', - '𞸗' => 'Ø®', - '𞸘' => 'Ø°', - '𞸙' => 'ض', - '𞸚' => 'ظ', - '𞸛' => 'غ', - '𞸜' => 'Ù®', - 'ðž¸' => 'Úº', - '𞸞' => 'Ú¡', - '𞸟' => 'Ù¯', - '𞸡' => 'ب', - '𞸢' => 'ج', - '𞸤' => 'Ù‡', - '𞸧' => 'Ø­', - '𞸩' => 'ÙŠ', - '𞸪' => 'Ùƒ', - '𞸫' => 'Ù„', - '𞸬' => 'Ù…', - '𞸭' => 'Ù†', - '𞸮' => 'س', - '𞸯' => 'ع', - '𞸰' => 'Ù', - '𞸱' => 'ص', - '𞸲' => 'Ù‚', - '𞸴' => 'Ø´', - '𞸵' => 'ت', - '𞸶' => 'Ø«', - '𞸷' => 'Ø®', - '𞸹' => 'ض', - '𞸻' => 'غ', - '𞹂' => 'ج', - '𞹇' => 'Ø­', - '𞹉' => 'ÙŠ', - '𞹋' => 'Ù„', - 'ðž¹' => 'Ù†', - '𞹎' => 'س', - 'ðž¹' => 'ع', - '𞹑' => 'ص', - 'ðž¹’' => 'Ù‚', - 'ðž¹”' => 'Ø´', - 'ðž¹—' => 'Ø®', - 'ðž¹™' => 'ض', - 'ðž¹›' => 'غ', - 'ðž¹' => 'Úº', - '𞹟' => 'Ù¯', - '𞹡' => 'ب', - 'ðž¹¢' => 'ج', - '𞹤' => 'Ù‡', - '𞹧' => 'Ø­', - '𞹨' => 'Ø·', - '𞹩' => 'ÙŠ', - '𞹪' => 'Ùƒ', - '𞹬' => 'Ù…', - 'ðž¹­' => 'Ù†', - 'ðž¹®' => 'س', - '𞹯' => 'ع', - 'ðž¹°' => 'Ù', - 'ðž¹±' => 'ص', - 'ðž¹²' => 'Ù‚', - 'ðž¹´' => 'Ø´', - 'ðž¹µ' => 'ت', - '𞹶' => 'Ø«', - 'ðž¹·' => 'Ø®', - 'ðž¹¹' => 'ض', - '𞹺' => 'ظ', - 'ðž¹»' => 'غ', - 'ðž¹¼' => 'Ù®', - 'ðž¹¾' => 'Ú¡', - '𞺀' => 'ا', - 'ðžº' => 'ب', - '𞺂' => 'ج', - '𞺃' => 'د', - '𞺄' => 'Ù‡', - '𞺅' => 'Ùˆ', - '𞺆' => 'ز', - '𞺇' => 'Ø­', - '𞺈' => 'Ø·', - '𞺉' => 'ÙŠ', - '𞺋' => 'Ù„', - '𞺌' => 'Ù…', - 'ðžº' => 'Ù†', - '𞺎' => 'س', - 'ðžº' => 'ع', - 'ðžº' => 'Ù', - '𞺑' => 'ص', - '𞺒' => 'Ù‚', - '𞺓' => 'ر', - '𞺔' => 'Ø´', - '𞺕' => 'ت', - '𞺖' => 'Ø«', - '𞺗' => 'Ø®', - '𞺘' => 'Ø°', - '𞺙' => 'ض', - '𞺚' => 'ظ', - '𞺛' => 'غ', - '𞺡' => 'ب', - '𞺢' => 'ج', - '𞺣' => 'د', - '𞺥' => 'Ùˆ', - '𞺦' => 'ز', - '𞺧' => 'Ø­', - '𞺨' => 'Ø·', - '𞺩' => 'ÙŠ', - '𞺫' => 'Ù„', - '𞺬' => 'Ù…', - '𞺭' => 'Ù†', - '𞺮' => 'س', - '𞺯' => 'ع', - '𞺰' => 'Ù', - '𞺱' => 'ص', - '𞺲' => 'Ù‚', - '𞺳' => 'ر', - '𞺴' => 'Ø´', - '𞺵' => 'ت', - '𞺶' => 'Ø«', - '𞺷' => 'Ø®', - '𞺸' => 'Ø°', - '𞺹' => 'ض', - '𞺺' => 'ظ', - '𞺻' => 'غ', - '🄀' => '0.', - 'ðŸ„' => '0,', - '🄂' => '1,', - '🄃' => '2,', - '🄄' => '3,', - '🄅' => '4,', - '🄆' => '5,', - '🄇' => '6,', - '🄈' => '7,', - '🄉' => '8,', - '🄊' => '9,', - 'ðŸ„' => '(A)', - '🄑' => '(B)', - '🄒' => '(C)', - '🄓' => '(D)', - '🄔' => '(E)', - '🄕' => '(F)', - '🄖' => '(G)', - '🄗' => '(H)', - '🄘' => '(I)', - '🄙' => '(J)', - '🄚' => '(K)', - '🄛' => '(L)', - '🄜' => '(M)', - 'ðŸ„' => '(N)', - '🄞' => '(O)', - '🄟' => '(P)', - '🄠' => '(Q)', - '🄡' => '(R)', - '🄢' => '(S)', - '🄣' => '(T)', - '🄤' => '(U)', - '🄥' => '(V)', - '🄦' => '(W)', - '🄧' => '(X)', - '🄨' => '(Y)', - '🄩' => '(Z)', - '🄪' => '〔S〕', - '🄫' => '(C)', - '🄬' => '(R)', - '🄭' => '(CD)', - '🄮' => '(WZ)', - '🄰' => 'A', - '🄱' => 'B', - '🄲' => 'C', - '🄳' => 'D', - '🄴' => 'E', - '🄵' => 'F', - '🄶' => 'G', - '🄷' => 'H', - '🄸' => 'I', - '🄹' => 'J', - '🄺' => 'K', - '🄻' => 'L', - '🄼' => 'M', - '🄽' => 'N', - '🄾' => 'O', - '🄿' => 'P', - '🅀' => 'Q', - 'ðŸ…' => 'R', - '🅂' => 'S', - '🅃' => 'T', - '🅄' => 'U', - '🅅' => 'V', - '🅆' => 'W', - '🅇' => 'X', - '🅈' => 'Y', - '🅉' => 'Z', - '🅊' => 'HV', - '🅋' => 'MV', - '🅌' => 'SD', - 'ðŸ…' => 'SS', - '🅎' => 'PPV', - 'ðŸ…' => 'WC', - 'ðŸ†' => 'DJ', - '🈀' => 'ã»ã‹', - 'ðŸˆ' => 'ココ', - '🈂' => 'サ', - 'ðŸˆ' => '手', - '🈑' => 'å­—', - '🈒' => 'åŒ', - '🈓' => 'デ', - '🈔' => '二', - '🈕' => '多', - '🈖' => '解', - '🈗' => '天', - '🈘' => '交', - '🈙' => '映', - '🈚' => 'ç„¡', - '🈛' => 'æ–™', - '🈜' => 'å‰', - 'ðŸˆ' => '後', - '🈞' => 'å†', - '🈟' => 'æ–°', - '🈠' => 'åˆ', - '🈡' => '終', - '🈢' => '生', - '🈣' => '販', - '🈤' => '声', - '🈥' => 'å¹', - '🈦' => 'æ¼”', - '🈧' => '投', - '🈨' => 'æ•', - '🈩' => '一', - '🈪' => '三', - '🈫' => 'éŠ', - '🈬' => 'å·¦', - '🈭' => '中', - '🈮' => 'å³', - '🈯' => '指', - '🈰' => 'èµ°', - '🈱' => '打', - '🈲' => 'ç¦', - '🈳' => '空', - '🈴' => 'åˆ', - '🈵' => '満', - '🈶' => '有', - '🈷' => '月', - '🈸' => '申', - '🈹' => '割', - '🈺' => 'å–¶', - '🈻' => 'é…', - '🉀' => '〔本〕', - 'ðŸ‰' => '〔三〕', - '🉂' => '〔二〕', - '🉃' => '〔安〕', - '🉄' => '〔点〕', - '🉅' => '〔打〕', - '🉆' => '〔盗〕', - '🉇' => '〔å‹ã€•', - '🉈' => '〔敗〕', - 'ðŸ‰' => '(å¾—)', - '🉑' => '(å¯)', - '🯰' => '0', - '🯱' => '1', - '🯲' => '2', - '🯳' => '3', - '🯴' => '4', - '🯵' => '5', - '🯶' => '6', - '🯷' => '7', - '🯸' => '8', - '🯹' => '9', - '丽' => '丽', - 'ð¯ ' => '丸', - '乁' => 'ä¹', - '𠄢' => 'ð „¢', - '你' => 'ä½ ', - '侮' => 'ä¾®', - '侻' => 'ä¾»', - '倂' => '倂', - '偺' => 'åº', - '備' => 'å‚™', - '僧' => '僧', - '像' => 'åƒ', - '㒞' => 'ã’ž', - 'ð¯ ' => '𠘺', - '免' => 'å…', - 'ð¯ ' => 'å…”', - 'ð¯ ' => 'å…¤', - '具' => 'å…·', - '𠔜' => '𠔜', - '㒹' => 'ã’¹', - '內' => 'å…§', - '再' => 'å†', - '𠕋' => 'ð •‹', - '冗' => '冗', - '冤' => '冤', - '仌' => '仌', - '冬' => '冬', - '况' => '况', - '𩇟' => '𩇟', - 'ð¯ ' => '凵', - '刃' => '刃', - '㓟' => 'ã“Ÿ', - '刻' => '刻', - '剆' => '剆', - '割' => '割', - '剷' => '剷', - '㔕' => '㔕', - '勇' => '勇', - '勉' => '勉', - '勤' => '勤', - '勺' => '勺', - '包' => '包', - '匆' => '匆', - '北' => '北', - '卉' => 'å‰', - '卑' => 'å‘', - '博' => 'åš', - '即' => 'å³', - '卽' => 'å½', - '卿' => 'å¿', - '卿' => 'å¿', - '卿' => 'å¿', - '𠨬' => '𠨬', - '灰' => 'ç°', - '及' => 'åŠ', - '叟' => 'åŸ', - '𠭣' => 'ð ­£', - '叫' => 'å«', - '叱' => 'å±', - '吆' => 'å†', - '咞' => 'å’ž', - '吸' => 'å¸', - '呈' => '呈', - '周' => '周', - '咢' => 'å’¢', - 'ð¯¡' => '哶', - '唐' => 'å”', - '啓' => 'å•“', - '啣' => 'å•£', - '善' => 'å–„', - '善' => 'å–„', - '喙' => 'å–™', - '喫' => 'å–«', - '喳' => 'å–³', - '嗂' => 'å—‚', - '圖' => '圖', - '嘆' => '嘆', - 'ð¯¡' => '圗', - '噑' => '噑', - 'ð¯¡' => 'å™´', - 'ð¯¡' => '切', - '壮' => '壮', - '城' => '城', - '埴' => '埴', - '堍' => 'å ', - '型' => 'åž‹', - '堲' => 'å ²', - '報' => 'å ±', - '墬' => '墬', - '𡓤' => '𡓤', - '売' => '売', - '壷' => '壷', - '夆' => '夆', - 'ð¯¡' => '多', - '夢' => '夢', - '奢' => '奢', - '𡚨' => '𡚨', - '𡛪' => '𡛪', - '姬' => '姬', - '娛' => '娛', - '娧' => '娧', - '姘' => '姘', - '婦' => '婦', - '㛮' => 'ã›®', - '㛼' => '㛼', - '嬈' => '嬈', - '嬾' => '嬾', - '嬾' => '嬾', - '𡧈' => '𡧈', - '寃' => '寃', - '寘' => '寘', - '寧' => '寧', - '寳' => '寳', - '𡬘' => '𡬘', - '寿' => '寿', - '将' => 'å°†', - '当' => '当', - '尢' => 'å°¢', - '㞁' => 'ãž', - '屠' => 'å± ', - '屮' => 'å±®', - '峀' => 'å³€', - '岍' => 'å²', - '𡷤' => 'ð¡·¤', - '嵃' => '嵃', - '𡷦' => 'ð¡·¦', - '嵮' => 'åµ®', - '嵫' => '嵫', - '嵼' => 'åµ¼', - 'ð¯¢' => 'å·¡', - '巢' => 'å·¢', - '㠯' => 'ã ¯', - '巽' => 'å·½', - '帨' => '帨', - '帽' => '帽', - '幩' => '幩', - '㡢' => 'ã¡¢', - '𢆃' => '𢆃', - '㡼' => '㡼', - '庰' => '庰', - '庳' => '庳', - 'ð¯¢' => '庶', - '廊' => '廊', - 'ð¯¢' => '𪎒', - 'ð¯¢' => '廾', - '𢌱' => '𢌱', - '𢌱' => '𢌱', - '舁' => 'èˆ', - '弢' => 'å¼¢', - '弢' => 'å¼¢', - '㣇' => '㣇', - '𣊸' => '𣊸', - '𦇚' => '𦇚', - '形' => 'å½¢', - '彫' => '彫', - '㣣' => '㣣', - '徚' => '徚', - 'ð¯¢' => 'å¿', - '志' => 'å¿—', - '忹' => '忹', - '悁' => 'æ‚', - '㤺' => '㤺', - '㤜' => '㤜', - '悔' => 'æ‚”', - '𢛔' => '𢛔', - '惇' => '惇', - '慈' => 'æ…ˆ', - '慌' => 'æ…Œ', - '慎' => 'æ…Ž', - '慌' => 'æ…Œ', - '慺' => 'æ…º', - '憎' => '憎', - '憲' => '憲', - '憤' => '憤', - '憯' => '憯', - '懞' => '懞', - '懲' => '懲', - '懶' => '懶', - '成' => 'æˆ', - '戛' => '戛', - '扝' => 'æ‰', - '抱' => '抱', - '拔' => 'æ‹”', - '捐' => 'æ', - '𢬌' => '𢬌', - '挽' => '挽', - '拼' => '拼', - '捨' => 'æ¨', - '掃' => '掃', - '揤' => 'æ¤', - '𢯱' => '𢯱', - '搢' => 'æ¢', - '揅' => 'æ…', - 'ð¯£' => '掩', - '㨮' => '㨮', - '摩' => 'æ‘©', - '摾' => '摾', - '撝' => 'æ’', - '摷' => 'æ‘·', - '㩬' => '㩬', - '敏' => 'æ•', - '敬' => '敬', - '𣀊' => '𣀊', - '旣' => 'æ—£', - '書' => '書', - 'ð¯£' => '晉', - '㬙' => '㬙', - 'ð¯£' => 'æš‘', - 'ð¯£' => '㬈', - '㫤' => '㫤', - '冒' => '冒', - '冕' => '冕', - '最' => '最', - '暜' => 'æšœ', - '肭' => 'è‚­', - '䏙' => 'ä™', - '朗' => '朗', - '望' => '望', - '朡' => '朡', - '杞' => 'æž', - '杓' => 'æ“', - 'ð¯£' => 'ð£ƒ', - '㭉' => 'ã­‰', - '柺' => '柺', - '枅' => 'æž…', - '桒' => 'æ¡’', - '梅' => '梅', - '𣑭' => '𣑭', - '梎' => '梎', - '栟' => 'æ Ÿ', - '椔' => '椔', - '㮝' => 'ã®', - '楂' => '楂', - '榣' => '榣', - '槪' => '槪', - '檨' => '檨', - '𣚣' => '𣚣', - '櫛' => 'æ«›', - '㰘' => 'ã°˜', - '次' => '次', - '𣢧' => '𣢧', - '歔' => 'æ­”', - '㱎' => '㱎', - '歲' => 'æ­²', - '殟' => '殟', - '殺' => '殺', - '殻' => 'æ®»', - '𣪍' => 'ð£ª', - '𡴋' => 'ð¡´‹', - '𣫺' => '𣫺', - '汎' => '汎', - '𣲼' => '𣲼', - '沿' => '沿', - '泍' => 'æ³', - '汧' => '汧', - '洖' => 'æ´–', - '派' => 'æ´¾', - 'ð¯¤' => 'æµ·', - '流' => 'æµ', - '浩' => '浩', - '浸' => '浸', - '涅' => '涅', - '𣴞' => '𣴞', - '洴' => 'æ´´', - '港' => '港', - '湮' => 'æ¹®', - '㴳' => 'ã´³', - '滋' => '滋', - '滇' => '滇', - 'ð¯¤' => '𣻑', - '淹' => 'æ·¹', - 'ð¯¤' => 'æ½®', - 'ð¯¤' => '𣽞', - '𣾎' => '𣾎', - '濆' => '濆', - '瀹' => '瀹', - '瀞' => '瀞', - '瀛' => '瀛', - '㶖' => '㶖', - '灊' => 'çŠ', - '災' => 'ç½', - '灷' => 'ç·', - '炭' => 'ç‚­', - '𠔥' => '𠔥', - '煅' => 'ç……', - 'ð¯¤' => '𤉣', - '熜' => '熜', - '𤎫' => '𤎫', - '爨' => '爨', - '爵' => '爵', - '牐' => 'ç‰', - '𤘈' => '𤘈', - '犀' => '犀', - '犕' => '犕', - '𤜵' => '𤜵', - '𤠔' => '𤠔', - '獺' => 'çº', - '王' => '王', - '㺬' => '㺬', - '玥' => '玥', - '㺸' => '㺸', - '㺸' => '㺸', - '瑇' => '瑇', - '瑜' => 'ç‘œ', - '瑱' => '瑱', - '璅' => 'ç’…', - '瓊' => 'ç“Š', - '㼛' => 'ã¼›', - '甤' => '甤', - '𤰶' => '𤰶', - '甾' => '甾', - '𤲒' => '𤲒', - '異' => 'ç•°', - '𢆟' => '𢆟', - '瘐' => 'ç˜', - '𤾡' => '𤾡', - '𤾸' => '𤾸', - '𥁄' => 'ð¥„', - '㿼' => '㿼', - '䀈' => '䀈', - '直' => 'ç›´', - 'ð¯¥' => '𥃳', - '𥃲' => '𥃲', - '𥄙' => '𥄙', - '𥄳' => '𥄳', - '眞' => '眞', - '真' => '真', - '真' => '真', - '睊' => 'çŠ', - '䀹' => '䀹', - '瞋' => 'çž‹', - '䁆' => 'ä†', - '䂖' => 'ä‚–', - 'ð¯¥' => 'ð¥', - '硎' => 'ç¡Ž', - 'ð¯¥' => '碌', - 'ð¯¥' => '磌', - '䃣' => '䃣', - '𥘦' => '𥘦', - '祖' => '祖', - '𥚚' => '𥚚', - '𥛅' => '𥛅', - '福' => 'ç¦', - '秫' => '秫', - '䄯' => '䄯', - '穀' => 'ç©€', - '穊' => 'ç©Š', - '穏' => 'ç©', - '𥥼' => '𥥼', - 'ð¯¥' => '𥪧', - '𥪧' => '𥪧', - '竮' => 'ç«®', - '䈂' => '䈂', - '𥮫' => '𥮫', - '篆' => '篆', - '築' => '築', - '䈧' => '䈧', - '𥲀' => '𥲀', - '糒' => 'ç³’', - '䊠' => '䊠', - '糨' => '糨', - '糣' => 'ç³£', - '紀' => 'ç´€', - '𥾆' => '𥾆', - '絣' => 'çµ£', - '䌁' => 'äŒ', - '緇' => 'ç·‡', - '縂' => '縂', - '繅' => 'ç¹…', - '䌴' => '䌴', - '𦈨' => '𦈨', - '𦉇' => '𦉇', - '䍙' => 'ä™', - '𦋙' => '𦋙', - '罺' => '罺', - '𦌾' => '𦌾', - '羕' => '羕', - '翺' => '翺', - '者' => '者', - '𦓚' => '𦓚', - '𦔣' => '𦔣', - '聠' => 'è ', - '𦖨' => '𦖨', - '聰' => 'è°', - '𣍟' => 'ð£Ÿ', - 'ð¯¦' => 'ä•', - '育' => '育', - '脃' => '脃', - '䐋' => 'ä‹', - '脾' => '脾', - '媵' => '媵', - '𦞧' => '𦞧', - '𦞵' => '𦞵', - '𣎓' => '𣎓', - '𣎜' => '𣎜', - '舁' => 'èˆ', - '舄' => '舄', - 'ð¯¦' => '辞', - '䑫' => 'ä‘«', - 'ð¯¦' => '芑', - 'ð¯¦' => '芋', - '芝' => 'èŠ', - '劳' => '劳', - '花' => '花', - '芳' => '芳', - '芽' => '芽', - '苦' => '苦', - '𦬼' => '𦬼', - '若' => 'è‹¥', - '茝' => 'èŒ', - '荣' => 'è£', - '莭' => '莭', - '茣' => '茣', - 'ð¯¦' => '莽', - '菧' => 'è§', - '著' => 'è‘—', - '荓' => 'è“', - '菊' => 'èŠ', - '菌' => 'èŒ', - '菜' => 'èœ', - '𦰶' => '𦰶', - '𦵫' => '𦵫', - '𦳕' => '𦳕', - '䔫' => '䔫', - '蓱' => '蓱', - '蓳' => '蓳', - '蔖' => 'è”–', - '𧏊' => 'ð§Š', - '蕤' => '蕤', - '𦼬' => '𦼬', - '䕝' => 'ä•', - '䕡' => 'ä•¡', - '𦾱' => '𦾱', - '𧃒' => '𧃒', - '䕫' => 'ä•«', - '虐' => 'è™', - '虜' => '虜', - '虧' => '虧', - '虩' => '虩', - '蚩' => 'èš©', - '蚈' => '蚈', - '蜎' => '蜎', - '蛢' => '蛢', - '蝹' => 'è¹', - '蜨' => '蜨', - '蝫' => 'è«', - '螆' => '螆', - '䗗' => 'ä——', - '蟡' => '蟡', - 'ð¯§' => 'è ', - '䗹' => 'ä—¹', - '衠' => 'è¡ ', - '衣' => 'è¡£', - '𧙧' => '𧙧', - '裗' => '裗', - '裞' => '裞', - '䘵' => '䘵', - '裺' => '裺', - '㒻' => 'ã’»', - '𧢮' => '𧢮', - '𧥦' => '𧥦', - 'ð¯§' => 'äš¾', - '䛇' => '䛇', - 'ð¯§' => '誠', - 'ð¯§' => 'è«­', - '變' => '變', - '豕' => '豕', - '𧲨' => '𧲨', - '貫' => '貫', - '賁' => 'è³', - '贛' => 'è´›', - '起' => 'èµ·', - '𧼯' => '𧼯', - '𠠄' => 'ð  „', - '跋' => 'è·‹', - '趼' => '趼', - '跰' => 'è·°', - 'ð¯§' => '𠣞', - '軔' => 'è»”', - '輸' => '輸', - '𨗒' => '𨗒', - '𨗭' => '𨗭', - '邔' => 'é‚”', - '郱' => '郱', - '鄑' => 'é„‘', - '𨜮' => '𨜮', - '鄛' => 'é„›', - '鈸' => '鈸', - '鋗' => 'é‹—', - '鋘' => '鋘', - '鉼' => '鉼', - '鏹' => 'é¹', - '鐕' => 'é•', - '𨯺' => '𨯺', - '開' => 'é–‹', - '䦕' => '䦕', - '閷' => 'é–·', - '𨵷' => '𨵷', - '䧦' => '䧦', - '雃' => '雃', - '嶲' => '嶲', - '霣' => '霣', - '𩅅' => 'ð©……', - '𩈚' => '𩈚', - '䩮' => 'ä©®', - '䩶' => '䩶', - '韠' => '韠', - '𩐊' => 'ð©Š', - '䪲' => '䪲', - '𩒖' => 'ð©’–', - '頋' => 'é ‹', - '頋' => 'é ‹', - '頩' => 'é ©', - 'ð¯¨' => 'ð©–¶', - '飢' => '飢', - '䬳' => '䬳', - '餩' => '餩', - '馧' => '馧', - '駂' => '駂', - '駾' => '駾', - '䯎' => '䯎', - '𩬰' => '𩬰', - '鬒' => '鬒', - '鱀' => 'é±€', - '鳽' => 'é³½', - 'ð¯¨' => '䳎', - '䳭' => 'ä³­', - 'ð¯¨' => '鵧', - 'ð¯¨' => '𪃎', - '䳸' => '䳸', - '𪄅' => '𪄅', - '𪈎' => '𪈎', - '𪊑' => '𪊑', - '麻' => '麻', - '䵖' => 'äµ–', - '黹' => '黹', - '黾' => '黾', - '鼅' => 'é¼…', - '鼏' => 'é¼', - '鼖' => 'é¼–', - '鼻' => 'é¼»', - 'ð¯¨' => '𪘀', - 'Æ' => 'AE', - 'Ã' => 'D', - 'Ø' => 'O', - 'Þ' => 'TH', - 'ß' => 'ss', - 'æ' => 'ae', - 'ð' => 'd', - 'ø' => 'o', - 'þ' => 'th', - 'Ä' => 'D', - 'Ä‘' => 'd', - 'Ħ' => 'H', - 'ħ' => 'h', - 'ı' => 'i', - 'ĸ' => 'q', - 'Å' => 'L', - 'Å‚' => 'l', - 'ÅŠ' => 'N', - 'Å‹' => 'n', - 'Å’' => 'OE', - 'Å“' => 'oe', - 'Ŧ' => 'T', - 'ŧ' => 't', - 'Æ€' => 'b', - 'Æ' => 'B', - 'Æ‚' => 'B', - 'ƃ' => 'b', - 'Ƈ' => 'C', - 'ƈ' => 'c', - 'Ɖ' => 'D', - 'ÆŠ' => 'D', - 'Æ‹' => 'D', - 'ÆŒ' => 'd', - 'Æ' => 'E', - 'Æ‘' => 'F', - 'Æ’' => 'f', - 'Æ“' => 'G', - 'Æ•' => 'hv', - 'Æ–' => 'I', - 'Æ—' => 'I', - 'Ƙ' => 'K', - 'Æ™' => 'k', - 'Æš' => 'l', - 'Æ' => 'N', - 'Æž' => 'n', - 'Æ¢' => 'OI', - 'Æ£' => 'oi', - 'Ƥ' => 'P', - 'Æ¥' => 'p', - 'Æ«' => 't', - 'Ƭ' => 'T', - 'Æ­' => 't', - 'Æ®' => 'T', - 'Ʋ' => 'V', - 'Ƴ' => 'Y', - 'Æ´' => 'y', - 'Ƶ' => 'Z', - 'ƶ' => 'z', - 'Ǥ' => 'G', - 'Ç¥' => 'g', - 'È¡' => 'd', - 'Ȥ' => 'Z', - 'È¥' => 'z', - 'È´' => 'l', - 'ȵ' => 'n', - 'ȶ' => 't', - 'È·' => 'j', - 'ȸ' => 'db', - 'ȹ' => 'qp', - 'Ⱥ' => 'A', - 'È»' => 'C', - 'ȼ' => 'c', - 'Ƚ' => 'L', - 'Ⱦ' => 'T', - 'È¿' => 's', - 'É€' => 'z', - 'Ƀ' => 'B', - 'É„' => 'U', - 'Ɇ' => 'E', - 'ɇ' => 'e', - 'Ɉ' => 'J', - 'ɉ' => 'j', - 'ÉŒ' => 'R', - 'É' => 'r', - 'ÉŽ' => 'Y', - 'É' => 'y', - 'É“' => 'b', - 'É•' => 'c', - 'É–' => 'd', - 'É—' => 'd', - 'É›' => 'e', - 'ÉŸ' => 'j', - 'É ' => 'g', - 'É¡' => 'g', - 'É¢' => 'G', - 'ɦ' => 'h', - 'ɧ' => 'h', - 'ɨ' => 'i', - 'ɪ' => 'I', - 'É«' => 'l', - 'ɬ' => 'l', - 'É­' => 'l', - 'ɱ' => 'm', - 'ɲ' => 'n', - 'ɳ' => 'n', - 'É´' => 'N', - 'ɶ' => 'OE', - 'ɼ' => 'r', - 'ɽ' => 'r', - 'ɾ' => 'r', - 'Ê€' => 'R', - 'Ê‚' => 's', - 'ʈ' => 't', - 'ʉ' => 'u', - 'Ê‹' => 'v', - 'Ê' => 'Y', - 'Ê' => 'z', - 'Ê‘' => 'z', - 'Ê™' => 'B', - 'Ê›' => 'G', - 'Êœ' => 'H', - 'Ê' => 'j', - 'ÊŸ' => 'L', - 'Ê ' => 'q', - 'Ê£' => 'dz', - 'Ê¥' => 'dz', - 'ʦ' => 'ts', - 'ʪ' => 'ls', - 'Ê«' => 'lz', - 'á´€' => 'A', - 'á´' => 'AE', - 'á´ƒ' => 'B', - 'á´„' => 'C', - 'á´…' => 'D', - 'á´†' => 'D', - 'á´‡' => 'E', - 'á´Š' => 'J', - 'á´‹' => 'K', - 'á´Œ' => 'L', - 'á´' => 'M', - 'á´' => 'O', - 'á´˜' => 'P', - 'á´›' => 'T', - 'á´œ' => 'U', - 'á´ ' => 'V', - 'á´¡' => 'W', - 'á´¢' => 'Z', - 'ᵫ' => 'ue', - 'ᵬ' => 'b', - 'áµ­' => 'd', - 'áµ®' => 'f', - 'ᵯ' => 'm', - 'áµ°' => 'n', - 'áµ±' => 'p', - 'áµ²' => 'r', - 'áµ³' => 'r', - 'áµ´' => 's', - 'áµµ' => 't', - 'ᵶ' => 'z', - 'ᵺ' => 'th', - 'áµ»' => 'I', - 'áµ½' => 'p', - 'áµ¾' => 'U', - 'ᶀ' => 'b', - 'á¶' => 'd', - 'ᶂ' => 'f', - 'ᶃ' => 'g', - 'ᶄ' => 'k', - 'ᶅ' => 'l', - 'ᶆ' => 'm', - 'ᶇ' => 'n', - 'ᶈ' => 'p', - 'ᶉ' => 'r', - 'ᶊ' => 's', - 'ᶌ' => 'v', - 'á¶' => 'x', - 'ᶎ' => 'z', - 'á¶' => 'a', - 'ᶑ' => 'd', - 'ᶒ' => 'e', - 'ᶓ' => 'e', - 'ᶖ' => 'i', - 'ᶙ' => 'u', - 'ẜ' => 's', - 'áº' => 's', - 'ẞ' => 'SS', - 'Ỻ' => 'LL', - 'á»»' => 'll', - 'Ỽ' => 'V', - 'ỽ' => 'v', - 'Ỿ' => 'Y', - 'ỿ' => 'y', - 'â± ' => 'L', - 'ⱡ' => 'l', - 'â±¢' => 'L', - 'â±£' => 'P', - 'Ɽ' => 'R', - 'â±¥' => 'a', - 'ⱦ' => 't', - 'Ⱨ' => 'H', - 'ⱨ' => 'h', - 'Ⱪ' => 'K', - 'ⱪ' => 'k', - 'Ⱬ' => 'Z', - 'ⱬ' => 'z', - 'â±®' => 'M', - 'â±±' => 'v', - 'â±²' => 'W', - 'â±³' => 'w', - 'â±´' => 'v', - 'ⱸ' => 'e', - 'ⱺ' => 'o', - 'â±¾' => 'S', - 'Ɀ' => 'Z', - 'ꜰ' => 'F', - 'ꜱ' => 'S', - 'Ꜳ' => 'AA', - 'ꜳ' => 'aa', - 'Ꜵ' => 'AO', - 'ꜵ' => 'ao', - 'Ꜷ' => 'AU', - 'ꜷ' => 'au', - 'Ꜹ' => 'AV', - 'ꜹ' => 'av', - 'Ꜻ' => 'AV', - 'ꜻ' => 'av', - 'Ꜽ' => 'AY', - 'ꜽ' => 'ay', - 'ê€' => 'K', - 'ê' => 'k', - 'ê‚' => 'K', - 'êƒ' => 'k', - 'ê„' => 'K', - 'ê…' => 'k', - 'ê†' => 'L', - 'ê‡' => 'l', - 'êˆ' => 'L', - 'ê‰' => 'l', - 'êŠ' => 'O', - 'ê‹' => 'o', - 'êŒ' => 'O', - 'ê' => 'o', - 'êŽ' => 'OO', - 'ê' => 'oo', - 'ê' => 'P', - 'ê‘' => 'p', - 'ê’' => 'P', - 'ê“' => 'p', - 'ê”' => 'P', - 'ê•' => 'p', - 'ê–' => 'Q', - 'ê—' => 'q', - 'ê˜' => 'Q', - 'ê™' => 'q', - 'êž' => 'V', - 'êŸ' => 'v', - 'ê ' => 'VY', - 'ê¡' => 'vy', - 'ê¤' => 'TH', - 'ê¥' => 'th', - 'ê¦' => 'TH', - 'ê§' => 'th', - 'ê±' => 'd', - 'ê²' => 'l', - 'ê³' => 'm', - 'ê´' => 'n', - 'êµ' => 'r', - 'ê¶' => 'R', - 'ê·' => 't', - 'ê¹' => 'D', - 'êº' => 'd', - 'ê»' => 'F', - 'ê¼' => 'f', - 'Ꞇ' => 'T', - 'ꞇ' => 't', - 'êž' => 'N', - 'êž‘' => 'n', - 'êž’' => 'C', - 'êž“' => 'c', - 'êž ' => 'G', - 'êž¡' => 'g', - 'Ꞣ' => 'K', - 'ꞣ' => 'k', - 'Ꞥ' => 'N', - 'ꞥ' => 'n', - 'Ꞧ' => 'R', - 'ꞧ' => 'r', - 'Ꞩ' => 'S', - 'êž©' => 's', - 'Ɦ' => 'H', - '©' => '(C)', - '®' => '(R)', - 'â‚ ' => 'CE', - 'â‚¢' => 'Cr', - 'â‚£' => 'Fr.', - '₤' => 'L.', - '₧' => 'Pts', - '₹' => 'Rs', - '₺' => 'TL', - 'â„—' => '(P)', - '℘' => 'P', - 'â„ž' => 'Rx', - '〇' => '0', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - ' ' => ' ', - 'âŸ' => ' ', - 'ʹ' => '\'', - 'ʺ' => '"', - 'Ê»' => '\'', - 'ʼ' => '\'', - 'ʽ' => '\'', - 'ˈ' => '\'', - 'Ë‹' => '`', - '‘' => '\'', - '’' => '\'', - '‚' => ',', - '‛' => '\'', - '“' => '"', - 'â€' => '"', - '„' => ',,', - '‟' => '"', - '′' => '\'', - 'ã€' => '"', - '〞' => '"', - '«' => '<<', - '»' => '>>', - '‹' => '<', - '›' => '>', - '­' => '-', - 'â€' => '-', - '‑' => '-', - '‒' => '-', - '–' => '-', - '—' => '-', - '―' => '-', - '︱' => '-', - '︲' => '-', - '¡' => '!', - '¿' => '?', - 'Ë‚' => '<', - '˃' => '>', - 'Ë„' => '^', - 'ˆ' => '^', - 'Ë' => ':', - 'Ëœ' => '~', - '‖' => '||', - 'â„' => '/', - 'â…' => '[', - 'â†' => ']', - 'âŽ' => '*', - 'ã€' => ',', - '。' => '.', - '〈' => '<', - '〉' => '>', - '《' => '<<', - '》' => '>>', - '〔' => '[', - '〕' => ']', - '〘' => '[', - '〙' => ']', - '〚' => '[', - '〛' => ']', - 'ï¸' => ',', - '︑' => ',', - '︒' => '.', - '︓' => ':', - '︔' => ';', - '︕' => '!', - '︖' => '?', - '︙' => '...', - '︰' => '..', - '︵' => '(', - '︶' => ')', - '︷' => '{', - '︸' => '}', - '︹' => '[', - '︺' => ']', - '︽' => '<<', - '︾' => '>>', - '︿' => '<', - 'ï¹€' => '>', - '﹇' => '[', - '﹈' => ']', - '±' => '+/-', - '×' => '*', - '÷' => '/', - 'Ë–' => '+', - 'Ë—' => '-', - '−' => '-', - '∕' => '/', - '∖' => '\\', - '∣' => '|', - '∥' => '||', - '≪' => '<<', - '≫' => '>>', - '⦅' => '((', - '⦆' => '))', -); diff --git a/symfony/polyfill-iconv/bootstrap.php b/symfony/polyfill-iconv/bootstrap.php deleted file mode 100644 index c11df3b32..000000000 --- a/symfony/polyfill-iconv/bootstrap.php +++ /dev/null @@ -1,88 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Iconv as p; - -if (extension_loaded('iconv')) { - return; -} - -if (\PHP_VERSION_ID >= 80000) { - return require __DIR__.'/bootstrap80.php'; -} - -if (!defined('ICONV_IMPL')) { - define('ICONV_IMPL', 'Symfony'); -} -if (!defined('ICONV_VERSION')) { - define('ICONV_VERSION', '1.0'); -} -if (!defined('ICONV_MIME_DECODE_STRICT')) { - define('ICONV_MIME_DECODE_STRICT', 1); -} -if (!defined('ICONV_MIME_DECODE_CONTINUE_ON_ERROR')) { - define('ICONV_MIME_DECODE_CONTINUE_ON_ERROR', 2); -} - -if (!function_exists('iconv')) { - function iconv($from_encoding, $to_encoding, $string) { return p\Iconv::iconv($from_encoding, $to_encoding, $string); } -} -if (!function_exists('iconv_get_encoding')) { - function iconv_get_encoding($type = 'all') { return p\Iconv::iconv_get_encoding($type); } -} -if (!function_exists('iconv_set_encoding')) { - function iconv_set_encoding($type, $encoding) { return p\Iconv::iconv_set_encoding($type, $encoding); } -} -if (!function_exists('iconv_mime_encode')) { - function iconv_mime_encode($field_name, $field_value, $options = []) { return p\Iconv::iconv_mime_encode($field_name, $field_value, $options); } -} -if (!function_exists('iconv_mime_decode_headers')) { - function iconv_mime_decode_headers($headers, $mode = 0, $encoding = null) { return p\Iconv::iconv_mime_decode_headers($headers, $mode, $encoding); } -} - -if (extension_loaded('mbstring')) { - if (!function_exists('iconv_strlen')) { - function iconv_strlen($string, $encoding = null) { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strlen($string, $encoding); } - } - if (!function_exists('iconv_strpos')) { - function iconv_strpos($haystack, $needle, $offset = 0, $encoding = null) { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strpos($haystack, $needle, $offset, $encoding); } - } - if (!function_exists('iconv_strrpos')) { - function iconv_strrpos($haystack, $needle, $encoding = null) { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strrpos($haystack, $needle, 0, $encoding); } - } - if (!function_exists('iconv_substr')) { - function iconv_substr($string, $offset, $length = 2147483647, $encoding = null) { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_substr($string, $offset, $length, $encoding); } - } - if (!function_exists('iconv_mime_decode')) { - function iconv_mime_decode($string, $mode = 0, $encoding = null) { $currentMbEncoding = mb_internal_encoding(); null === $encoding && $encoding = p\Iconv::$internalEncoding; mb_internal_encoding($encoding); $decoded = mb_decode_mimeheader($string); mb_internal_encoding($currentMbEncoding); return $decoded; } - } -} else { - if (!function_exists('iconv_strlen')) { - if (extension_loaded('xml')) { - function iconv_strlen($string, $encoding = null) { return p\Iconv::strlen1($string, $encoding); } - } else { - function iconv_strlen($string, $encoding = null) { return p\Iconv::strlen2($string, $encoding); } - } - } - - if (!function_exists('iconv_strpos')) { - function iconv_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Iconv::iconv_strpos($haystack, $needle, $offset, $encoding); } - } - if (!function_exists('iconv_strrpos')) { - function iconv_strrpos($haystack, $needle, $encoding = null) { return p\Iconv::iconv_strrpos($haystack, $needle, $encoding); } - } - if (!function_exists('iconv_substr')) { - function iconv_substr($string, $offset, $length = 2147483647, $encoding = null) { return p\Iconv::iconv_substr($string, $offset, $length, $encoding); } - } - if (!function_exists('iconv_mime_decode')) { - function iconv_mime_decode($string, $mode = 0, $encoding = null) { return p\Iconv::iconv_mime_decode($string, $mode, $encoding); } - } -} diff --git a/symfony/polyfill-iconv/bootstrap80.php b/symfony/polyfill-iconv/bootstrap80.php deleted file mode 100644 index 04b1473b7..000000000 --- a/symfony/polyfill-iconv/bootstrap80.php +++ /dev/null @@ -1,80 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -use Symfony\Polyfill\Iconv as p; - -if (!defined('ICONV_IMPL')) { - define('ICONV_IMPL', 'Symfony'); -} -if (!defined('ICONV_VERSION')) { - define('ICONV_VERSION', '1.0'); -} -if (!defined('ICONV_MIME_DECODE_STRICT')) { - define('ICONV_MIME_DECODE_STRICT', 1); -} -if (!defined('ICONV_MIME_DECODE_CONTINUE_ON_ERROR')) { - define('ICONV_MIME_DECODE_CONTINUE_ON_ERROR', 2); -} - -if (!function_exists('iconv')) { - function iconv(?string $from_encoding, ?string $to_encoding, ?string $string): string|false { return p\Iconv::iconv((string) $from_encoding, (string) $to_encoding, (string) $string); } -} -if (!function_exists('iconv_get_encoding')) { - function iconv_get_encoding(?string $type = 'all'): array|string|false { return p\Iconv::iconv_get_encoding((string) $type); } -} -if (!function_exists('iconv_set_encoding')) { - function iconv_set_encoding(?string $type, ?string $encoding): bool { return p\Iconv::iconv_set_encoding((string) $type, (string) $encoding); } -} -if (!function_exists('iconv_mime_encode')) { - function iconv_mime_encode(?string $field_name, ?string $field_value, ?array $options = []): string|false { return p\Iconv::iconv_mime_encode((string) $field_name, (string) $field_value, (array) $options); } -} -if (!function_exists('iconv_mime_decode_headers')) { - function iconv_mime_decode_headers(?string $headers, ?int $mode = 0, ?string $encoding = null): array|false { return p\Iconv::iconv_mime_decode_headers((string) $headers, (int) $mode, $encoding); } -} - -if (extension_loaded('mbstring')) { - if (!function_exists('iconv_strlen')) { - function iconv_strlen(?string $string, ?string $encoding = null): int|false { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strlen((string) $string, $encoding); } - } - if (!function_exists('iconv_strpos')) { - function iconv_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } - } - if (!function_exists('iconv_strrpos')) { - function iconv_strrpos(?string $haystack, ?string $needle, ?string $encoding = null): int|false { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_strrpos((string) $haystack, (string) $needle, 0, $encoding); } - } - if (!function_exists('iconv_substr')) { - function iconv_substr(?string $string, ?int $offset, ?int $length = null, ?string $encoding = null): string|false { null === $encoding && $encoding = p\Iconv::$internalEncoding; return mb_substr((string) $string, (int) $offset, $length, $encoding); } - } - if (!function_exists('iconv_mime_decode')) { - function iconv_mime_decode($string, $mode = 0, $encoding = null) { $currentMbEncoding = mb_internal_encoding(); null === $encoding && $encoding = p\Iconv::$internalEncoding; mb_internal_encoding($encoding); $decoded = mb_decode_mimeheader($string); mb_internal_encoding($currentMbEncoding); return $decoded; } - } -} else { - if (!function_exists('iconv_strlen')) { - if (extension_loaded('xml')) { - function iconv_strlen(?string $string, ?string $encoding = null): int|false { return p\Iconv::strlen1((string) $string, $encoding); } - } else { - function iconv_strlen(?string $string, ?string $encoding = null): int|false { return p\Iconv::strlen2((string) $string, $encoding); } - } - } - - if (!function_exists('iconv_strpos')) { - function iconv_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Iconv::iconv_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } - } - if (!function_exists('iconv_strrpos')) { - function iconv_strrpos(?string $haystack, ?string $needle, ?string $encoding = null): int|false { return p\Iconv::iconv_strrpos((string) $haystack, (string) $needle, $encoding); } - } - if (!function_exists('iconv_substr')) { - function iconv_substr(?string $string, ?int $offset, ?int $length = null, ?string $encoding = null): string|false { return p\Iconv::iconv_substr((string) $string, (string) $offset, $length, $encoding); } - } - if (!function_exists('iconv_mime_decode')) { - function iconv_mime_decode(?string $string, ?int $mode = 0, ?string $encoding = null): string|false { return p\Iconv::iconv_mime_decode((string) $string, (int) $mode, $encoding); } - } -}