Instant Indexing for Google - Version 1.1.15

Version Description

Download this release

Release Info

Developer rankmath
Plugin Icon 128x128 Instant Indexing for Google
Version 1.1.15
Comparing to
See all releases

Code changes from version 1.1.14 to 1.1.15

Files changed (84) hide show
  1. includes/class-instant-indexing.php +1 -1
  2. readme.txt +5 -2
  3. vendor/composer/autoload_classmap.php +0 -1
  4. vendor/composer/autoload_files.php +1 -3
  5. vendor/composer/autoload_psr4.php +1 -3
  6. vendor/composer/autoload_static.php +6 -22
  7. vendor/composer/installed.json +94 -216
  8. vendor/composer/installed.php +25 -28
  9. vendor/composer/platform_check.php +2 -2
  10. vendor/guzzlehttp/guzzle/.php_cs +0 -23
  11. vendor/guzzlehttp/guzzle/Dockerfile +0 -18
  12. vendor/guzzlehttp/guzzle/src/BodySummarizer.php +28 -0
  13. vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php +13 -0
  14. vendor/guzzlehttp/guzzle/src/Client.php +106 -130
  15. vendor/guzzlehttp/guzzle/src/ClientInterface.php +10 -13
  16. vendor/guzzlehttp/guzzle/src/ClientTrait.php +241 -0
  17. vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php +63 -66
  18. vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php +9 -14
  19. vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php +28 -18
  20. vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php +20 -15
  21. vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php +134 -98
  22. vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php +21 -9
  23. vendor/guzzlehttp/guzzle/src/Exception/ClientException.php +1 -0
  24. vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php +29 -10
  25. vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php +4 -18
  26. vendor/guzzlehttp/guzzle/src/Exception/RequestException.php +41 -67
  27. vendor/guzzlehttp/guzzle/src/Exception/SeekException.php +0 -27
  28. vendor/guzzlehttp/guzzle/src/Exception/ServerException.php +1 -0
  29. vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php +1 -0
  30. vendor/guzzlehttp/guzzle/src/Exception/TransferException.php +1 -0
  31. vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php +211 -201
  32. vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php +3 -5
  33. vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php +15 -11
  34. vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php +91 -49
  35. vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php +50 -30
  36. vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php +42 -0
  37. vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php +78 -62
  38. vendor/guzzlehttp/guzzle/src/Handler/Proxy.php +18 -22
  39. vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php +232 -184
  40. vendor/guzzlehttp/guzzle/src/HandlerStack.php +70 -72
  41. vendor/guzzlehttp/guzzle/src/MessageFormatter.php +50 -37
  42. vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php +18 -0
  43. vendor/guzzlehttp/guzzle/src/Middleware.php +61 -55
  44. vendor/guzzlehttp/guzzle/src/Pool.php +27 -36
  45. vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php +13 -20
  46. vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php +78 -80
  47. vendor/guzzlehttp/guzzle/src/RequestOptions.php +32 -31
  48. vendor/guzzlehttp/guzzle/src/RetryMiddleware.php +36 -48
  49. vendor/guzzlehttp/guzzle/src/TransferStats.php +31 -24
  50. vendor/guzzlehttp/guzzle/src/UriTemplate.php +0 -237
  51. vendor/guzzlehttp/guzzle/src/Utils.php +321 -31
  52. vendor/guzzlehttp/guzzle/src/functions.php +54 -221
  53. vendor/guzzlehttp/guzzle/src/functions_include.php +1 -1
  54. vendor/{symfony/polyfill-intl-normalizer → psr/http-client}/LICENSE +8 -8
  55. vendor/psr/http-client/src/ClientExceptionInterface.php +10 -0
  56. vendor/psr/http-client/src/ClientInterface.php +20 -0
  57. vendor/psr/http-client/src/NetworkExceptionInterface.php +24 -0
  58. vendor/psr/http-client/src/RequestExceptionInterface.php +24 -0
  59. vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE +1 -1
  60. vendor/symfony/deprecation-contracts/function.php +27 -0
  61. vendor/symfony/polyfill-intl-idn/Idn.php +0 -925
  62. vendor/symfony/polyfill-intl-idn/Info.php +0 -23
  63. vendor/symfony/polyfill-intl-idn/LICENSE +0 -19
  64. vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php +0 -375
  65. vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php +0 -24
  66. vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php +0 -8
  67. vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php +0 -2638
  68. vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php +0 -308
  69. vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php +0 -71
  70. vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php +0 -273
  71. vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php +0 -5778
  72. vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php +0 -65
  73. vendor/symfony/polyfill-intl-idn/bootstrap.php +0 -145
  74. vendor/symfony/polyfill-intl-idn/bootstrap80.php +0 -125
  75. vendor/symfony/polyfill-intl-normalizer/Normalizer.php +0 -310
  76. vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php +0 -17
  77. vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php +0 -945
  78. vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php +0 -2065
  79. vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php +0 -876
  80. vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php +0 -3695
  81. vendor/symfony/polyfill-intl-normalizer/bootstrap.php +0 -23
  82. vendor/symfony/polyfill-intl-normalizer/bootstrap80.php +0 -19
  83. vendor/symfony/polyfill-php72/Php72.php +0 -217
  84. vendor/symfony/polyfill-php72/bootstrap.php +0 -57
includes/class-instant-indexing.php CHANGED
@@ -15,7 +15,7 @@ class RM_GIAPI {
15
  *
16
  * @var string
17
  */
18
- public $version = '1.1.14';
19
 
20
  /**
21
  * Holds the admin menu hook suffix for the "dummy" dashboard.
15
  *
16
  * @var string
17
  */
18
+ public $version = '1.1.15';
19
 
20
  /**
21
  * Holds the admin menu hook suffix for the "dummy" dashboard.
readme.txt CHANGED
@@ -4,8 +4,8 @@ Plugin link: https://rankmath.com/wordpress/plugin/instant-indexing/
4
  Tags: indexing api, crawling, live streaming, fast indexing, job posting
5
  Tested up to: 6.0
6
  Requires at least: 5.6
7
- Requires PHP: 7.2
8
- Stable tag: 1.1.14
9
  License: GPL-2.0+
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.txt
11
 
@@ -106,6 +106,9 @@ Technically, yes. That's what the plugin is made to do. But, please note that we
106
 
107
  == Changelog ==
108
 
 
 
 
109
  = v1.1.14 [Jun 4, 2022] =
110
  * Updated the third-party libraries included in the plugin
111
 
4
  Tags: indexing api, crawling, live streaming, fast indexing, job posting
5
  Tested up to: 6.0
6
  Requires at least: 5.6
7
+ Requires PHP: 7.2.5
8
+ Stable tag: 1.1.15
9
  License: GPL-2.0+
10
  License URI: https://www.gnu.org/licenses/gpl-2.0.txt
11
 
106
 
107
  == Changelog ==
108
 
109
+ = v1.1.15 [Jun 21, 2022] =
110
+ * Updated the Guzzle HTTP library to version 7.4.4 (requires PHP 7.2.5)
111
+
112
  = v1.1.14 [Jun 4, 2022] =
113
  * Updated the third-party libraries included in the plugin
114
 
vendor/composer/autoload_classmap.php CHANGED
@@ -28,5 +28,4 @@ return array(
28
  'Google_Task_Retryable' => $vendorDir . '/google/apiclient/src/aliases.php',
29
  'Google_Task_Runner' => $vendorDir . '/google/apiclient/src/aliases.php',
30
  'Google_Utils_UriTemplate' => $vendorDir . '/google/apiclient/src/aliases.php',
31
- 'Normalizer' => $vendorDir . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
32
  );
28
  'Google_Task_Retryable' => $vendorDir . '/google/apiclient/src/aliases.php',
29
  'Google_Task_Runner' => $vendorDir . '/google/apiclient/src/aliases.php',
30
  'Google_Utils_UriTemplate' => $vendorDir . '/google/apiclient/src/aliases.php',
 
31
  );
vendor/composer/autoload_files.php CHANGED
@@ -9,9 +9,7 @@ return array(
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
11
  'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
12
- '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php',
13
- 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php',
14
- 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php',
15
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
16
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
17
  '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
9
  '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
10
  'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php',
11
  'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
12
+ '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
 
 
13
  '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
14
  'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
15
  '1f87db08236948d07391152dccb70f04' => $vendorDir . '/google/apiclient-services/autoload.php',
vendor/composer/autoload_psr4.php CHANGED
@@ -7,11 +7,9 @@ $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
  'phpseclib3\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
10
- 'Symfony\\Polyfill\\Php72\\' => array($vendorDir . '/symfony/polyfill-php72'),
11
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => array($vendorDir . '/symfony/polyfill-intl-normalizer'),
12
- 'Symfony\\Polyfill\\Intl\\Idn\\' => array($vendorDir . '/symfony/polyfill-intl-idn'),
13
  'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
14
  'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
 
15
  'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
16
  'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
17
  'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
7
 
8
  return array(
9
  'phpseclib3\\' => array($vendorDir . '/phpseclib/phpseclib/phpseclib'),
 
 
 
10
  'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
11
  'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
12
+ 'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
13
  'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
14
  'ParagonIE\\ConstantTime\\' => array($vendorDir . '/paragonie/constant_time_encoding/src'),
15
  'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
vendor/composer/autoload_static.php CHANGED
@@ -10,9 +10,7 @@ class ComposerStaticInit1cfac4bac5a1827f26c0b477558bd882
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
12
  'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
13
- '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php',
14
- 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php',
15
- 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php',
16
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
17
  'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
18
  '1f87db08236948d07391152dccb70f04' => __DIR__ . '/..' . '/google/apiclient-services/autoload.php',
@@ -24,16 +22,11 @@ class ComposerStaticInit1cfac4bac5a1827f26c0b477558bd882
24
  array (
25
  'phpseclib3\\' => 11,
26
  ),
27
- 'S' =>
28
- array (
29
- 'Symfony\\Polyfill\\Php72\\' => 23,
30
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' => 33,
31
- 'Symfony\\Polyfill\\Intl\\Idn\\' => 26,
32
- ),
33
  'P' =>
34
  array (
35
  'Psr\\Log\\' => 8,
36
  'Psr\\Http\\Message\\' => 17,
 
37
  'Psr\\Cache\\' => 10,
38
  'ParagonIE\\ConstantTime\\' => 23,
39
  ),
@@ -61,18 +54,6 @@ class ComposerStaticInit1cfac4bac5a1827f26c0b477558bd882
61
  array (
62
  0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib',
63
  ),
64
- 'Symfony\\Polyfill\\Php72\\' =>
65
- array (
66
- 0 => __DIR__ . '/..' . '/symfony/polyfill-php72',
67
- ),
68
- 'Symfony\\Polyfill\\Intl\\Normalizer\\' =>
69
- array (
70
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer',
71
- ),
72
- 'Symfony\\Polyfill\\Intl\\Idn\\' =>
73
- array (
74
- 0 => __DIR__ . '/..' . '/symfony/polyfill-intl-idn',
75
- ),
76
  'Psr\\Log\\' =>
77
  array (
78
  0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
@@ -81,6 +62,10 @@ class ComposerStaticInit1cfac4bac5a1827f26c0b477558bd882
81
  array (
82
  0 => __DIR__ . '/..' . '/psr/http-message/src',
83
  ),
 
 
 
 
84
  'Psr\\Cache\\' =>
85
  array (
86
  0 => __DIR__ . '/..' . '/psr/cache/src',
@@ -146,7 +131,6 @@ class ComposerStaticInit1cfac4bac5a1827f26c0b477558bd882
146
  'Google_Task_Retryable' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
147
  'Google_Task_Runner' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
148
  'Google_Utils_UriTemplate' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
149
- 'Normalizer' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php',
150
  );
151
 
152
  public static function getInitializer(ClassLoader $loader)
10
  '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
11
  'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php',
12
  'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
13
+ '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
 
 
14
  '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
15
  'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
16
  '1f87db08236948d07391152dccb70f04' => __DIR__ . '/..' . '/google/apiclient-services/autoload.php',
22
  array (
23
  'phpseclib3\\' => 11,
24
  ),
 
 
 
 
 
 
25
  'P' =>
26
  array (
27
  'Psr\\Log\\' => 8,
28
  'Psr\\Http\\Message\\' => 17,
29
+ 'Psr\\Http\\Client\\' => 16,
30
  'Psr\\Cache\\' => 10,
31
  'ParagonIE\\ConstantTime\\' => 23,
32
  ),
54
  array (
55
  0 => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib',
56
  ),
 
 
 
 
 
 
 
 
 
 
 
 
57
  'Psr\\Log\\' =>
58
  array (
59
  0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
62
  array (
63
  0 => __DIR__ . '/..' . '/psr/http-message/src',
64
  ),
65
+ 'Psr\\Http\\Client\\' =>
66
+ array (
67
+ 0 => __DIR__ . '/..' . '/psr/http-client/src',
68
+ ),
69
  'Psr\\Cache\\' =>
70
  array (
71
  0 => __DIR__ . '/..' . '/psr/cache/src',
131
  'Google_Task_Retryable' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
132
  'Google_Task_Runner' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
133
  'Google_Utils_UriTemplate' => __DIR__ . '/..' . '/google/apiclient/src/aliases.php',
 
134
  );
135
 
136
  public static function getInitializer(ClassLoader $loader)
vendor/composer/installed.json CHANGED
@@ -248,39 +248,47 @@
248
  },
249
  {
250
  "name": "guzzlehttp/guzzle",
251
- "version": "6.5.6",
252
- "version_normalized": "6.5.6.0",
253
  "source": {
254
  "type": "git",
255
  "url": "https://github.com/guzzle/guzzle.git",
256
- "reference": "f092dd734083473658de3ee4bef093ed77d2689c"
257
  },
258
  "dist": {
259
  "type": "zip",
260
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f092dd734083473658de3ee4bef093ed77d2689c",
261
- "reference": "f092dd734083473658de3ee4bef093ed77d2689c",
262
  "shasum": ""
263
  },
264
  "require": {
265
  "ext-json": "*",
266
- "guzzlehttp/promises": "^1.0",
267
- "guzzlehttp/psr7": "^1.6.1",
268
- "php": ">=5.5",
269
- "symfony/polyfill-intl-idn": "^1.17.0"
 
 
 
 
270
  },
271
  "require-dev": {
 
272
  "ext-curl": "*",
273
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
274
- "psr/log": "^1.1"
 
275
  },
276
  "suggest": {
 
 
277
  "psr/log": "Required for using the Log middleware"
278
  },
279
- "time": "2022-05-25T13:19:12+00:00",
280
  "type": "library",
281
  "extra": {
282
  "branch-alias": {
283
- "dev-master": "6.5-dev"
284
  }
285
  },
286
  "installation-source": "dist",
@@ -334,19 +342,20 @@
334
  }
335
  ],
336
  "description": "Guzzle is a PHP HTTP client library",
337
- "homepage": "http://guzzlephp.org/",
338
  "keywords": [
339
  "client",
340
  "curl",
341
  "framework",
342
  "http",
343
  "http client",
 
 
344
  "rest",
345
  "web service"
346
  ],
347
  "support": {
348
  "issues": "https://github.com/guzzle/guzzle/issues",
349
- "source": "https://github.com/guzzle/guzzle/tree/6.5.6"
350
  },
351
  "funding": [
352
  {
@@ -958,6 +967,61 @@
958
  },
959
  "install-path": "../psr/cache"
960
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
961
  {
962
  "name": "psr/http-message",
963
  "version": "1.0.1",
@@ -1115,137 +1179,38 @@
1115
  "install-path": "../ralouphie/getallheaders"
1116
  },
1117
  {
1118
- "name": "symfony/polyfill-intl-idn",
1119
- "version": "v1.26.0",
1120
- "version_normalized": "1.26.0.0",
1121
  "source": {
1122
  "type": "git",
1123
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
1124
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
1125
  },
1126
  "dist": {
1127
  "type": "zip",
1128
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
1129
- "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
1130
- "shasum": ""
1131
- },
1132
- "require": {
1133
- "php": ">=7.1",
1134
- "symfony/polyfill-intl-normalizer": "^1.10",
1135
- "symfony/polyfill-php72": "^1.10"
1136
- },
1137
- "suggest": {
1138
- "ext-intl": "For best performance"
1139
- },
1140
- "time": "2022-05-24T11:49:31+00:00",
1141
- "type": "library",
1142
- "extra": {
1143
- "branch-alias": {
1144
- "dev-main": "1.26-dev"
1145
- },
1146
- "thanks": {
1147
- "name": "symfony/polyfill",
1148
- "url": "https://github.com/symfony/polyfill"
1149
- }
1150
- },
1151
- "installation-source": "dist",
1152
- "autoload": {
1153
- "files": [
1154
- "bootstrap.php"
1155
- ],
1156
- "psr-4": {
1157
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
1158
- }
1159
- },
1160
- "notification-url": "https://packagist.org/downloads/",
1161
- "license": [
1162
- "MIT"
1163
- ],
1164
- "authors": [
1165
- {
1166
- "name": "Laurent Bassin",
1167
- "email": "laurent@bassin.info"
1168
- },
1169
- {
1170
- "name": "Trevor Rowbotham",
1171
- "email": "trevor.rowbotham@pm.me"
1172
- },
1173
- {
1174
- "name": "Symfony Community",
1175
- "homepage": "https://symfony.com/contributors"
1176
- }
1177
- ],
1178
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
1179
- "homepage": "https://symfony.com",
1180
- "keywords": [
1181
- "compatibility",
1182
- "idn",
1183
- "intl",
1184
- "polyfill",
1185
- "portable",
1186
- "shim"
1187
- ],
1188
- "support": {
1189
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
1190
- },
1191
- "funding": [
1192
- {
1193
- "url": "https://symfony.com/sponsor",
1194
- "type": "custom"
1195
- },
1196
- {
1197
- "url": "https://github.com/fabpot",
1198
- "type": "github"
1199
- },
1200
- {
1201
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1202
- "type": "tidelift"
1203
- }
1204
- ],
1205
- "install-path": "../symfony/polyfill-intl-idn"
1206
- },
1207
- {
1208
- "name": "symfony/polyfill-intl-normalizer",
1209
- "version": "v1.26.0",
1210
- "version_normalized": "1.26.0.0",
1211
- "source": {
1212
- "type": "git",
1213
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
1214
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
1215
- },
1216
- "dist": {
1217
- "type": "zip",
1218
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
1219
- "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
1220
  "shasum": ""
1221
  },
1222
  "require": {
1223
  "php": ">=7.1"
1224
  },
1225
- "suggest": {
1226
- "ext-intl": "For best performance"
1227
- },
1228
- "time": "2022-05-24T11:49:31+00:00",
1229
  "type": "library",
1230
  "extra": {
1231
  "branch-alias": {
1232
- "dev-main": "1.26-dev"
1233
  },
1234
  "thanks": {
1235
- "name": "symfony/polyfill",
1236
- "url": "https://github.com/symfony/polyfill"
1237
  }
1238
  },
1239
  "installation-source": "dist",
1240
  "autoload": {
1241
  "files": [
1242
- "bootstrap.php"
1243
- ],
1244
- "psr-4": {
1245
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
1246
- },
1247
- "classmap": [
1248
- "Resources/stubs"
1249
  ]
1250
  },
1251
  "notification-url": "https://packagist.org/downloads/",
@@ -1262,97 +1227,10 @@
1262
  "homepage": "https://symfony.com/contributors"
1263
  }
1264
  ],
1265
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
1266
  "homepage": "https://symfony.com",
1267
- "keywords": [
1268
- "compatibility",
1269
- "intl",
1270
- "normalizer",
1271
- "polyfill",
1272
- "portable",
1273
- "shim"
1274
- ],
1275
- "support": {
1276
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
1277
- },
1278
- "funding": [
1279
- {
1280
- "url": "https://symfony.com/sponsor",
1281
- "type": "custom"
1282
- },
1283
- {
1284
- "url": "https://github.com/fabpot",
1285
- "type": "github"
1286
- },
1287
- {
1288
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
1289
- "type": "tidelift"
1290
- }
1291
- ],
1292
- "install-path": "../symfony/polyfill-intl-normalizer"
1293
- },
1294
- {
1295
- "name": "symfony/polyfill-php72",
1296
- "version": "v1.26.0",
1297
- "version_normalized": "1.26.0.0",
1298
- "source": {
1299
- "type": "git",
1300
- "url": "https://github.com/symfony/polyfill-php72.git",
1301
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
1302
- },
1303
- "dist": {
1304
- "type": "zip",
1305
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
1306
- "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
1307
- "shasum": ""
1308
- },
1309
- "require": {
1310
- "php": ">=7.1"
1311
- },
1312
- "time": "2022-05-24T11:49:31+00:00",
1313
- "type": "library",
1314
- "extra": {
1315
- "branch-alias": {
1316
- "dev-main": "1.26-dev"
1317
- },
1318
- "thanks": {
1319
- "name": "symfony/polyfill",
1320
- "url": "https://github.com/symfony/polyfill"
1321
- }
1322
- },
1323
- "installation-source": "dist",
1324
- "autoload": {
1325
- "files": [
1326
- "bootstrap.php"
1327
- ],
1328
- "psr-4": {
1329
- "Symfony\\Polyfill\\Php72\\": ""
1330
- }
1331
- },
1332
- "notification-url": "https://packagist.org/downloads/",
1333
- "license": [
1334
- "MIT"
1335
- ],
1336
- "authors": [
1337
- {
1338
- "name": "Nicolas Grekas",
1339
- "email": "p@tchwork.com"
1340
- },
1341
- {
1342
- "name": "Symfony Community",
1343
- "homepage": "https://symfony.com/contributors"
1344
- }
1345
- ],
1346
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
1347
- "homepage": "https://symfony.com",
1348
- "keywords": [
1349
- "compatibility",
1350
- "polyfill",
1351
- "portable",
1352
- "shim"
1353
- ],
1354
  "support": {
1355
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
1356
  },
1357
  "funding": [
1358
  {
@@ -1368,7 +1246,7 @@
1368
  "type": "tidelift"
1369
  }
1370
  ],
1371
- "install-path": "../symfony/polyfill-php72"
1372
  }
1373
  ],
1374
  "dev": true,
248
  },
249
  {
250
  "name": "guzzlehttp/guzzle",
251
+ "version": "7.4.4",
252
+ "version_normalized": "7.4.4.0",
253
  "source": {
254
  "type": "git",
255
  "url": "https://github.com/guzzle/guzzle.git",
256
+ "reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8"
257
  },
258
  "dist": {
259
  "type": "zip",
260
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
261
+ "reference": "e3ff079b22820c2029d4c2a87796b6a0b8716ad8",
262
  "shasum": ""
263
  },
264
  "require": {
265
  "ext-json": "*",
266
+ "guzzlehttp/promises": "^1.5",
267
+ "guzzlehttp/psr7": "^1.8.3 || ^2.1",
268
+ "php": "^7.2.5 || ^8.0",
269
+ "psr/http-client": "^1.0",
270
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
271
+ },
272
+ "provide": {
273
+ "psr/http-client-implementation": "1.0"
274
  },
275
  "require-dev": {
276
+ "bamarni/composer-bin-plugin": "^1.4.1",
277
  "ext-curl": "*",
278
+ "php-http/client-integration-tests": "^3.0",
279
+ "phpunit/phpunit": "^8.5.5 || ^9.3.5",
280
+ "psr/log": "^1.1 || ^2.0 || ^3.0"
281
  },
282
  "suggest": {
283
+ "ext-curl": "Required for CURL handler support",
284
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
285
  "psr/log": "Required for using the Log middleware"
286
  },
287
+ "time": "2022-06-09T21:39:15+00:00",
288
  "type": "library",
289
  "extra": {
290
  "branch-alias": {
291
+ "dev-master": "7.4-dev"
292
  }
293
  },
294
  "installation-source": "dist",
342
  }
343
  ],
344
  "description": "Guzzle is a PHP HTTP client library",
 
345
  "keywords": [
346
  "client",
347
  "curl",
348
  "framework",
349
  "http",
350
  "http client",
351
+ "psr-18",
352
+ "psr-7",
353
  "rest",
354
  "web service"
355
  ],
356
  "support": {
357
  "issues": "https://github.com/guzzle/guzzle/issues",
358
+ "source": "https://github.com/guzzle/guzzle/tree/7.4.4"
359
  },
360
  "funding": [
361
  {
967
  },
968
  "install-path": "../psr/cache"
969
  },
970
+ {
971
+ "name": "psr/http-client",
972
+ "version": "1.0.1",
973
+ "version_normalized": "1.0.1.0",
974
+ "source": {
975
+ "type": "git",
976
+ "url": "https://github.com/php-fig/http-client.git",
977
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
978
+ },
979
+ "dist": {
980
+ "type": "zip",
981
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
982
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
983
+ "shasum": ""
984
+ },
985
+ "require": {
986
+ "php": "^7.0 || ^8.0",
987
+ "psr/http-message": "^1.0"
988
+ },
989
+ "time": "2020-06-29T06:28:15+00:00",
990
+ "type": "library",
991
+ "extra": {
992
+ "branch-alias": {
993
+ "dev-master": "1.0.x-dev"
994
+ }
995
+ },
996
+ "installation-source": "dist",
997
+ "autoload": {
998
+ "psr-4": {
999
+ "Psr\\Http\\Client\\": "src/"
1000
+ }
1001
+ },
1002
+ "notification-url": "https://packagist.org/downloads/",
1003
+ "license": [
1004
+ "MIT"
1005
+ ],
1006
+ "authors": [
1007
+ {
1008
+ "name": "PHP-FIG",
1009
+ "homepage": "http://www.php-fig.org/"
1010
+ }
1011
+ ],
1012
+ "description": "Common interface for HTTP clients",
1013
+ "homepage": "https://github.com/php-fig/http-client",
1014
+ "keywords": [
1015
+ "http",
1016
+ "http-client",
1017
+ "psr",
1018
+ "psr-18"
1019
+ ],
1020
+ "support": {
1021
+ "source": "https://github.com/php-fig/http-client/tree/master"
1022
+ },
1023
+ "install-path": "../psr/http-client"
1024
+ },
1025
  {
1026
  "name": "psr/http-message",
1027
  "version": "1.0.1",
1179
  "install-path": "../ralouphie/getallheaders"
1180
  },
1181
  {
1182
+ "name": "symfony/deprecation-contracts",
1183
+ "version": "v2.5.1",
1184
+ "version_normalized": "2.5.1.0",
1185
  "source": {
1186
  "type": "git",
1187
+ "url": "https://github.com/symfony/deprecation-contracts.git",
1188
+ "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
1189
  },
1190
  "dist": {
1191
  "type": "zip",
1192
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
1193
+ "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1194
  "shasum": ""
1195
  },
1196
  "require": {
1197
  "php": ">=7.1"
1198
  },
1199
+ "time": "2022-01-02T09:53:40+00:00",
 
 
 
1200
  "type": "library",
1201
  "extra": {
1202
  "branch-alias": {
1203
+ "dev-main": "2.5-dev"
1204
  },
1205
  "thanks": {
1206
+ "name": "symfony/contracts",
1207
+ "url": "https://github.com/symfony/contracts"
1208
  }
1209
  },
1210
  "installation-source": "dist",
1211
  "autoload": {
1212
  "files": [
1213
+ "function.php"
 
 
 
 
 
 
1214
  ]
1215
  },
1216
  "notification-url": "https://packagist.org/downloads/",
1227
  "homepage": "https://symfony.com/contributors"
1228
  }
1229
  ],
1230
+ "description": "A generic function and convention to trigger deprecation notices",
1231
  "homepage": "https://symfony.com",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1232
  "support": {
1233
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1"
1234
  },
1235
  "funding": [
1236
  {
1246
  "type": "tidelift"
1247
  }
1248
  ],
1249
+ "install-path": "../symfony/deprecation-contracts"
1250
  }
1251
  ],
1252
  "dev": true,
vendor/composer/installed.php CHANGED
@@ -5,7 +5,7 @@
5
  'type' => 'library',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => '82113c705aa243720cd831a7dfb75fd767ea9248',
9
  'name' => '__root__',
10
  'dev' => true,
11
  ),
@@ -16,7 +16,7 @@
16
  'type' => 'library',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
- 'reference' => '82113c705aa243720cd831a7dfb75fd767ea9248',
20
  'dev_requirement' => false,
21
  ),
22
  'firebase/php-jwt' => array(
@@ -56,12 +56,12 @@
56
  'dev_requirement' => false,
57
  ),
58
  'guzzlehttp/guzzle' => array(
59
- 'pretty_version' => '6.5.6',
60
- 'version' => '6.5.6.0',
61
  'type' => 'library',
62
  'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
63
  'aliases' => array(),
64
- 'reference' => 'f092dd734083473658de3ee4bef093ed77d2689c',
65
  'dev_requirement' => false,
66
  ),
67
  'guzzlehttp/promises' => array(
@@ -127,6 +127,21 @@
127
  'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
128
  'dev_requirement' => false,
129
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  'psr/http-message' => array(
131
  'pretty_version' => '1.0.1',
132
  'version' => '1.0.1.0',
@@ -166,31 +181,13 @@
166
  'reference' => '120b605dfeb996808c31b6477290a714d356e822',
167
  'dev_requirement' => false,
168
  ),
169
- 'symfony/polyfill-intl-idn' => array(
170
- 'pretty_version' => 'v1.26.0',
171
- 'version' => '1.26.0.0',
172
- 'type' => 'library',
173
- 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn',
174
- 'aliases' => array(),
175
- 'reference' => '59a8d271f00dd0e4c2e518104cc7963f655a1aa8',
176
- 'dev_requirement' => false,
177
- ),
178
- 'symfony/polyfill-intl-normalizer' => array(
179
- 'pretty_version' => 'v1.26.0',
180
- 'version' => '1.26.0.0',
181
- 'type' => 'library',
182
- 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer',
183
- 'aliases' => array(),
184
- 'reference' => '219aa369ceff116e673852dce47c3a41794c14bd',
185
- 'dev_requirement' => false,
186
- ),
187
- 'symfony/polyfill-php72' => array(
188
- 'pretty_version' => 'v1.26.0',
189
- 'version' => '1.26.0.0',
190
  'type' => 'library',
191
- 'install_path' => __DIR__ . '/../symfony/polyfill-php72',
192
  'aliases' => array(),
193
- 'reference' => 'bf44a9fd41feaac72b074de600314a93e2ae78e2',
194
  'dev_requirement' => false,
195
  ),
196
  ),
5
  'type' => 'library',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '4c4fa5ca8b204e9eafc307ec71ecb1b0cc3f92be',
9
  'name' => '__root__',
10
  'dev' => true,
11
  ),
16
  'type' => 'library',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
+ 'reference' => '4c4fa5ca8b204e9eafc307ec71ecb1b0cc3f92be',
20
  'dev_requirement' => false,
21
  ),
22
  'firebase/php-jwt' => array(
56
  'dev_requirement' => false,
57
  ),
58
  'guzzlehttp/guzzle' => array(
59
+ 'pretty_version' => '7.4.4',
60
+ 'version' => '7.4.4.0',
61
  'type' => 'library',
62
  'install_path' => __DIR__ . '/../guzzlehttp/guzzle',
63
  'aliases' => array(),
64
+ 'reference' => 'e3ff079b22820c2029d4c2a87796b6a0b8716ad8',
65
  'dev_requirement' => false,
66
  ),
67
  'guzzlehttp/promises' => array(
127
  'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
128
  'dev_requirement' => false,
129
  ),
130
+ 'psr/http-client' => array(
131
+ 'pretty_version' => '1.0.1',
132
+ 'version' => '1.0.1.0',
133
+ 'type' => 'library',
134
+ 'install_path' => __DIR__ . '/../psr/http-client',
135
+ 'aliases' => array(),
136
+ 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621',
137
+ 'dev_requirement' => false,
138
+ ),
139
+ 'psr/http-client-implementation' => array(
140
+ 'dev_requirement' => false,
141
+ 'provided' => array(
142
+ 0 => '1.0',
143
+ ),
144
+ ),
145
  'psr/http-message' => array(
146
  'pretty_version' => '1.0.1',
147
  'version' => '1.0.1.0',
181
  'reference' => '120b605dfeb996808c31b6477290a714d356e822',
182
  'dev_requirement' => false,
183
  ),
184
+ 'symfony/deprecation-contracts' => array(
185
+ 'pretty_version' => 'v2.5.1',
186
+ 'version' => '2.5.1.0',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  'type' => 'library',
188
+ 'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
189
  'aliases' => array(),
190
+ 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
191
  'dev_requirement' => false,
192
  ),
193
  ),
vendor/composer/platform_check.php CHANGED
@@ -4,8 +4,8 @@
4
 
5
  $issues = array();
6
 
7
- if (!(PHP_VERSION_ID >= 70200)) {
8
- $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.';
9
  }
10
 
11
  if ($issues) {
4
 
5
  $issues = array();
6
 
7
+ if (!(PHP_VERSION_ID >= 70205)) {
8
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
9
  }
10
 
11
  if ($issues) {
vendor/guzzlehttp/guzzle/.php_cs DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- $config = PhpCsFixer\Config::create()
4
- ->setRiskyAllowed(true)
5
- ->setRules([
6
- '@PSR2' => true,
7
- 'array_syntax' => ['syntax' => 'short'],
8
- 'declare_strict_types' => false,
9
- 'concat_space' => ['spacing'=>'one'],
10
- 'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
11
- 'ordered_imports' => true,
12
- // 'phpdoc_align' => ['align'=>'vertical'],
13
- // 'native_function_invocation' => true,
14
- ])
15
- ->setFinder(
16
- PhpCsFixer\Finder::create()
17
- ->in(__DIR__.'/src')
18
- ->in(__DIR__.'/tests')
19
- ->name('*.php')
20
- )
21
- ;
22
-
23
- return $config;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/Dockerfile DELETED
@@ -1,18 +0,0 @@
1
- FROM composer:latest as setup
2
-
3
- RUN mkdir /guzzle
4
-
5
- WORKDIR /guzzle
6
-
7
- RUN set -xe \
8
- && composer init --name=guzzlehttp/test --description="Simple project for testing Guzzle scripts" --author="Márk Sági-Kazár <mark.sagikazar@gmail.com>" --no-interaction \
9
- && composer require guzzlehttp/guzzle
10
-
11
-
12
- FROM php:7.3
13
-
14
- RUN mkdir /guzzle
15
-
16
- WORKDIR /guzzle
17
-
18
- COPY --from=setup /guzzle /guzzle
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/src/BodySummarizer.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp;
4
+
5
+ use Psr\Http\Message\MessageInterface;
6
+
7
+ final class BodySummarizer implements BodySummarizerInterface
8
+ {
9
+ /**
10
+ * @var int|null
11
+ */
12
+ private $truncateAt;
13
+
14
+ public function __construct(int $truncateAt = null)
15
+ {
16
+ $this->truncateAt = $truncateAt;
17
+ }
18
+
19
+ /**
20
+ * Returns a summarized message body.
21
+ */
22
+ public function summarize(MessageInterface $message): ?string
23
+ {
24
+ return $this->truncateAt === null
25
+ ? \GuzzleHttp\Psr7\Message::bodySummary($message)
26
+ : \GuzzleHttp\Psr7\Message::bodySummary($message, $this->truncateAt);
27
+ }
28
+ }
vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp;
4
+
5
+ use Psr\Http\Message\MessageInterface;
6
+
7
+ interface BodySummarizerInterface
8
+ {
9
+ /**
10
+ * Returns a summarized message body.
11
+ */
12
+ public function summarize(MessageInterface $message): ?string;
13
+ }
vendor/guzzlehttp/guzzle/src/Client.php CHANGED
@@ -1,31 +1,26 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Cookie\CookieJar;
5
  use GuzzleHttp\Exception\GuzzleException;
6
- use GuzzleHttp\Promise;
7
- use GuzzleHttp\Psr7;
 
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
10
  use Psr\Http\Message\UriInterface;
11
 
12
  /**
13
- * @method ResponseInterface get(string|UriInterface $uri, array $options = [])
14
- * @method ResponseInterface head(string|UriInterface $uri, array $options = [])
15
- * @method ResponseInterface put(string|UriInterface $uri, array $options = [])
16
- * @method ResponseInterface post(string|UriInterface $uri, array $options = [])
17
- * @method ResponseInterface patch(string|UriInterface $uri, array $options = [])
18
- * @method ResponseInterface delete(string|UriInterface $uri, array $options = [])
19
- * @method Promise\PromiseInterface getAsync(string|UriInterface $uri, array $options = [])
20
- * @method Promise\PromiseInterface headAsync(string|UriInterface $uri, array $options = [])
21
- * @method Promise\PromiseInterface putAsync(string|UriInterface $uri, array $options = [])
22
- * @method Promise\PromiseInterface postAsync(string|UriInterface $uri, array $options = [])
23
- * @method Promise\PromiseInterface patchAsync(string|UriInterface $uri, array $options = [])
24
- * @method Promise\PromiseInterface deleteAsync(string|UriInterface $uri, array $options = [])
25
  */
26
- class Client implements ClientInterface
27
  {
28
- /** @var array Default request options */
 
 
 
 
29
  private $config;
30
 
31
  /**
@@ -63,13 +58,13 @@ class Client implements ClientInterface
63
  {
64
  if (!isset($config['handler'])) {
65
  $config['handler'] = HandlerStack::create();
66
- } elseif (!is_callable($config['handler'])) {
67
- throw new \InvalidArgumentException('handler must be a callable');
68
  }
69
 
70
  // Convert the base_uri to a UriInterface
71
  if (isset($config['base_uri'])) {
72
- $config['base_uri'] = Psr7\uri_for($config['base_uri']);
73
  }
74
 
75
  $this->configureDefaults($config);
@@ -79,19 +74,21 @@ class Client implements ClientInterface
79
  * @param string $method
80
  * @param array $args
81
  *
82
- * @return Promise\PromiseInterface
 
 
83
  */
84
  public function __call($method, $args)
85
  {
86
- if (count($args) < 1) {
87
- throw new \InvalidArgumentException('Magic request methods require a URI and optional options array');
88
  }
89
 
90
  $uri = $args[0];
91
- $opts = isset($args[1]) ? $args[1] : [];
92
 
93
- return substr($method, -5) === 'Async'
94
- ? $this->requestAsync(substr($method, 0, -5), $uri, $opts)
95
  : $this->request($method, $uri, $opts);
96
  }
97
 
@@ -100,10 +97,8 @@ class Client implements ClientInterface
100
  *
101
  * @param array $options Request options to apply to the given
102
  * request and to the transfer. See \GuzzleHttp\RequestOptions.
103
- *
104
- * @return Promise\PromiseInterface
105
  */
106
- public function sendAsync(RequestInterface $request, array $options = [])
107
  {
108
  // Merge the base URI into the request URI if needed.
109
  $options = $this->prepareDefaults($options);
@@ -120,12 +115,25 @@ class Client implements ClientInterface
120
  * @param array $options Request options to apply to the given
121
  * request and to the transfer. See \GuzzleHttp\RequestOptions.
122
  *
123
- * @return ResponseInterface
124
  * @throws GuzzleException
125
  */
126
- public function send(RequestInterface $request, array $options = [])
 
 
 
 
 
 
 
 
 
 
 
127
  {
128
  $options[RequestOptions::SYNCHRONOUS] = true;
 
 
 
129
  return $this->sendAsync($request, $options)->wait();
130
  }
131
 
@@ -140,20 +148,18 @@ class Client implements ClientInterface
140
  * @param string $method HTTP method
141
  * @param string|UriInterface $uri URI object or string.
142
  * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
143
- *
144
- * @return Promise\PromiseInterface
145
  */
146
- public function requestAsync($method, $uri = '', array $options = [])
147
  {
148
  $options = $this->prepareDefaults($options);
149
  // Remove request modifying parameter because it can be done up-front.
150
- $headers = isset($options['headers']) ? $options['headers'] : [];
151
- $body = isset($options['body']) ? $options['body'] : null;
152
- $version = isset($options['version']) ? $options['version'] : '1.1';
153
  // Merge the URI into the base URI.
154
- $uri = $this->buildUri($uri, $options);
155
- if (is_array($body)) {
156
- $this->invalidBody();
157
  }
158
  $request = new Psr7\Request($method, $uri, $headers, $body, $version);
159
  // Remove the option so that they are not doubly-applied.
@@ -173,10 +179,9 @@ class Client implements ClientInterface
173
  * @param string|UriInterface $uri URI object or string.
174
  * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
175
  *
176
- * @return ResponseInterface
177
  * @throws GuzzleException
178
  */
179
- public function request($method, $uri = '', array $options = [])
180
  {
181
  $options[RequestOptions::SYNCHRONOUS] = true;
182
  return $this->requestAsync($method, $uri, $options)->wait();
@@ -192,30 +197,24 @@ class Client implements ClientInterface
192
  * @param string|null $option The config option to retrieve.
193
  *
194
  * @return mixed
 
 
195
  */
196
- public function getConfig($option = null)
197
  {
198
  return $option === null
199
  ? $this->config
200
- : (isset($this->config[$option]) ? $this->config[$option] : null);
201
  }
202
 
203
- /**
204
- * @param string|null $uri
205
- *
206
- * @return UriInterface
207
- */
208
- private function buildUri($uri, array $config)
209
  {
210
- // for BC we accept null which would otherwise fail in uri_for
211
- $uri = Psr7\uri_for($uri === null ? '' : $uri);
212
-
213
  if (isset($config['base_uri'])) {
214
- $uri = Psr7\UriResolver::resolve(Psr7\uri_for($config['base_uri']), $uri);
215
  }
216
 
217
  if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
218
- $idnOptions = ($config['idn_conversion'] === true) ? IDNA_DEFAULT : $config['idn_conversion'];
219
  $uri = Utils::idnUriConvert($uri, $idnOptions);
220
  }
221
 
@@ -224,11 +223,8 @@ class Client implements ClientInterface
224
 
225
  /**
226
  * Configures the default options for a client.
227
- *
228
- * @param array $config
229
- * @return void
230
  */
231
- private function configureDefaults(array $config)
232
  {
233
  $defaults = [
234
  'allow_redirects' => RedirectMiddleware::$defaultSettings,
@@ -236,7 +232,7 @@ class Client implements ClientInterface
236
  'decode_content' => true,
237
  'verify' => true,
238
  'cookies' => false,
239
- 'idn_conversion' => true,
240
  ];
241
 
242
  // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
@@ -244,17 +240,17 @@ class Client implements ClientInterface
244
  // We can only trust the HTTP_PROXY environment variable in a CLI
245
  // process due to the fact that PHP has no reliable mechanism to
246
  // get environment variables that start with "HTTP_".
247
- if (php_sapi_name() === 'cli' && getenv('HTTP_PROXY')) {
248
- $defaults['proxy']['http'] = getenv('HTTP_PROXY');
249
  }
250
 
251
- if ($proxy = getenv('HTTPS_PROXY')) {
252
  $defaults['proxy']['https'] = $proxy;
253
  }
254
 
255
- if ($noProxy = getenv('NO_PROXY')) {
256
- $cleanedNoProxy = str_replace(' ', '', $noProxy);
257
- $defaults['proxy']['no'] = explode(',', $cleanedNoProxy);
258
  }
259
 
260
  $this->config = $config + $defaults;
@@ -265,15 +261,15 @@ class Client implements ClientInterface
265
 
266
  // Add the default user-agent header.
267
  if (!isset($this->config['headers'])) {
268
- $this->config['headers'] = ['User-Agent' => default_user_agent()];
269
  } else {
270
  // Add the User-Agent header if one was not already set.
271
- foreach (array_keys($this->config['headers']) as $name) {
272
- if (strtolower($name) === 'user-agent') {
273
  return;
274
  }
275
  }
276
- $this->config['headers']['User-Agent'] = default_user_agent();
277
  }
278
  }
279
 
@@ -281,10 +277,8 @@ class Client implements ClientInterface
281
  * Merges default options into the array.
282
  *
283
  * @param array $options Options to modify by reference
284
- *
285
- * @return array
286
  */
287
- private function prepareDefaults(array $options)
288
  {
289
  $defaults = $this->config;
290
 
@@ -296,13 +290,13 @@ class Client implements ClientInterface
296
 
297
  // Special handling for headers is required as they are added as
298
  // conditional headers and as headers passed to a request ctor.
299
- if (array_key_exists('headers', $options)) {
300
  // Allows default headers to be unset.
301
  if ($options['headers'] === null) {
302
  $defaults['_conditional'] = [];
303
  unset($options['headers']);
304
- } elseif (!is_array($options['headers'])) {
305
- throw new \InvalidArgumentException('headers must be an array');
306
  }
307
  }
308
 
@@ -326,65 +320,49 @@ class Client implements ClientInterface
326
  * as-is without merging in default options.
327
  *
328
  * @param array $options See \GuzzleHttp\RequestOptions.
329
- *
330
- * @return Promise\PromiseInterface
331
  */
332
- private function transfer(RequestInterface $request, array $options)
333
  {
334
- // save_to -> sink
335
- if (isset($options['save_to'])) {
336
- $options['sink'] = $options['save_to'];
337
- unset($options['save_to']);
338
- }
339
-
340
- // exceptions -> http_errors
341
- if (isset($options['exceptions'])) {
342
- $options['http_errors'] = $options['exceptions'];
343
- unset($options['exceptions']);
344
- }
345
-
346
  $request = $this->applyOptions($request, $options);
347
  /** @var HandlerStack $handler */
348
  $handler = $options['handler'];
349
 
350
  try {
351
- return Promise\promise_for($handler($request, $options));
352
  } catch (\Exception $e) {
353
- return Promise\rejection_for($e);
354
  }
355
  }
356
 
357
  /**
358
  * Applies the array of request options to a request.
359
- *
360
- * @param RequestInterface $request
361
- * @param array $options
362
- *
363
- * @return RequestInterface
364
  */
365
- private function applyOptions(RequestInterface $request, array &$options)
366
  {
367
  $modify = [
368
  'set_headers' => [],
369
  ];
370
 
371
  if (isset($options['headers'])) {
 
 
 
372
  $modify['set_headers'] = $options['headers'];
373
  unset($options['headers']);
374
  }
375
 
376
  if (isset($options['form_params'])) {
377
  if (isset($options['multipart'])) {
378
- throw new \InvalidArgumentException('You cannot use '
379
  . 'form_params and multipart at the same time. Use the '
380
  . 'form_params option if you want to send application/'
381
  . 'x-www-form-urlencoded requests, and the multipart '
382
  . 'option to send multipart/form-data requests.');
383
  }
384
- $options['body'] = http_build_query($options['form_params'], '', '&');
385
  unset($options['form_params']);
386
  // Ensure that we don't have the header in different case and set the new value.
387
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
388
  $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
389
  }
390
 
@@ -394,10 +372,10 @@ class Client implements ClientInterface
394
  }
395
 
396
  if (isset($options['json'])) {
397
- $options['body'] = \GuzzleHttp\json_encode($options['json']);
398
  unset($options['json']);
399
  // Ensure that we don't have the header in different case and set the new value.
400
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
401
  $options['_conditional']['Content-Type'] = 'application/json';
402
  }
403
 
@@ -405,47 +383,47 @@ class Client implements ClientInterface
405
  && $options['decode_content'] !== true
406
  ) {
407
  // Ensure that we don't have the header in different case and set the new value.
408
- $options['_conditional'] = Psr7\_caseless_remove(['Accept-Encoding'], $options['_conditional']);
409
  $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
410
  }
411
 
412
  if (isset($options['body'])) {
413
- if (is_array($options['body'])) {
414
- $this->invalidBody();
415
  }
416
- $modify['body'] = Psr7\stream_for($options['body']);
417
  unset($options['body']);
418
  }
419
 
420
- if (!empty($options['auth']) && is_array($options['auth'])) {
421
  $value = $options['auth'];
422
- $type = isset($value[2]) ? strtolower($value[2]) : 'basic';
423
  switch ($type) {
424
  case 'basic':
425
  // Ensure that we don't have the header in different case and set the new value.
426
- $modify['set_headers'] = Psr7\_caseless_remove(['Authorization'], $modify['set_headers']);
427
  $modify['set_headers']['Authorization'] = 'Basic '
428
- . base64_encode("$value[0]:$value[1]");
429
  break;
430
  case 'digest':
431
  // @todo: Do not rely on curl
432
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_DIGEST;
433
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
434
  break;
435
  case 'ntlm':
436
- $options['curl'][CURLOPT_HTTPAUTH] = CURLAUTH_NTLM;
437
- $options['curl'][CURLOPT_USERPWD] = "$value[0]:$value[1]";
438
  break;
439
  }
440
  }
441
 
442
  if (isset($options['query'])) {
443
  $value = $options['query'];
444
- if (is_array($value)) {
445
- $value = http_build_query($value, null, '&', PHP_QUERY_RFC3986);
446
  }
447
- if (!is_string($value)) {
448
- throw new \InvalidArgumentException('query must be a string or array');
449
  }
450
  $modify['query'] = $value;
451
  unset($options['query']);
@@ -454,16 +432,16 @@ class Client implements ClientInterface
454
  // Ensure that sink is not an invalid value.
455
  if (isset($options['sink'])) {
456
  // TODO: Add more sink validation?
457
- if (is_bool($options['sink'])) {
458
- throw new \InvalidArgumentException('sink must not be a boolean');
459
  }
460
  }
461
 
462
- $request = Psr7\modify_request($request, $modify);
463
  if ($request->getBody() instanceof Psr7\MultipartStream) {
464
  // Use a multipart/form-data POST if a Content-Type is not set.
465
  // Ensure that we don't have the header in different case and set the new value.
466
- $options['_conditional'] = Psr7\_caseless_remove(['Content-Type'], $options['_conditional']);
467
  $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
468
  . $request->getBody()->getBoundary();
469
  }
@@ -477,7 +455,7 @@ class Client implements ClientInterface
477
  $modify['set_headers'][$k] = $v;
478
  }
479
  }
480
- $request = Psr7\modify_request($request, $modify);
481
  // Don't pass this internal value along to middleware/handlers.
482
  unset($options['_conditional']);
483
  }
@@ -486,14 +464,12 @@ class Client implements ClientInterface
486
  }
487
 
488
  /**
489
- * Throw Exception with pre-set message.
490
- * @return void
491
- * @throws \InvalidArgumentException Invalid body.
492
  */
493
- private function invalidBody()
494
  {
495
- throw new \InvalidArgumentException('Passing in the "body" request '
496
- . 'option as an array to send a POST request has been deprecated. '
497
  . 'Please use the "form_params" request option to send a '
498
  . 'application/x-www-form-urlencoded request, or the "multipart" '
499
  . 'request option to send a multipart/form-data request.');
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Cookie\CookieJar;
6
  use GuzzleHttp\Exception\GuzzleException;
7
+ use GuzzleHttp\Exception\InvalidArgumentException;
8
+ use GuzzleHttp\Promise as P;
9
+ use GuzzleHttp\Promise\PromiseInterface;
10
  use Psr\Http\Message\RequestInterface;
11
  use Psr\Http\Message\ResponseInterface;
12
  use Psr\Http\Message\UriInterface;
13
 
14
  /**
15
+ * @final
 
 
 
 
 
 
 
 
 
 
 
16
  */
17
+ class Client implements ClientInterface, \Psr\Http\Client\ClientInterface
18
  {
19
+ use ClientTrait;
20
+
21
+ /**
22
+ * @var array Default request options
23
+ */
24
  private $config;
25
 
26
  /**
58
  {
59
  if (!isset($config['handler'])) {
60
  $config['handler'] = HandlerStack::create();
61
+ } elseif (!\is_callable($config['handler'])) {
62
+ throw new InvalidArgumentException('handler must be a callable');
63
  }
64
 
65
  // Convert the base_uri to a UriInterface
66
  if (isset($config['base_uri'])) {
67
+ $config['base_uri'] = Psr7\Utils::uriFor($config['base_uri']);
68
  }
69
 
70
  $this->configureDefaults($config);
74
  * @param string $method
75
  * @param array $args
76
  *
77
+ * @return PromiseInterface|ResponseInterface
78
+ *
79
+ * @deprecated Client::__call will be removed in guzzlehttp/guzzle:8.0.
80
  */
81
  public function __call($method, $args)
82
  {
83
+ if (\count($args) < 1) {
84
+ throw new InvalidArgumentException('Magic request methods require a URI and optional options array');
85
  }
86
 
87
  $uri = $args[0];
88
+ $opts = $args[1] ?? [];
89
 
90
+ return \substr($method, -5) === 'Async'
91
+ ? $this->requestAsync(\substr($method, 0, -5), $uri, $opts)
92
  : $this->request($method, $uri, $opts);
93
  }
94
 
97
  *
98
  * @param array $options Request options to apply to the given
99
  * request and to the transfer. See \GuzzleHttp\RequestOptions.
 
 
100
  */
101
+ public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface
102
  {
103
  // Merge the base URI into the request URI if needed.
104
  $options = $this->prepareDefaults($options);
115
  * @param array $options Request options to apply to the given
116
  * request and to the transfer. See \GuzzleHttp\RequestOptions.
117
  *
 
118
  * @throws GuzzleException
119
  */
120
+ public function send(RequestInterface $request, array $options = []): ResponseInterface
121
+ {
122
+ $options[RequestOptions::SYNCHRONOUS] = true;
123
+ return $this->sendAsync($request, $options)->wait();
124
+ }
125
+
126
+ /**
127
+ * The HttpClient PSR (PSR-18) specify this method.
128
+ *
129
+ * @inheritDoc
130
+ */
131
+ public function sendRequest(RequestInterface $request): ResponseInterface
132
  {
133
  $options[RequestOptions::SYNCHRONOUS] = true;
134
+ $options[RequestOptions::ALLOW_REDIRECTS] = false;
135
+ $options[RequestOptions::HTTP_ERRORS] = false;
136
+
137
  return $this->sendAsync($request, $options)->wait();
138
  }
139
 
148
  * @param string $method HTTP method
149
  * @param string|UriInterface $uri URI object or string.
150
  * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
 
 
151
  */
152
+ public function requestAsync(string $method, $uri = '', array $options = []): PromiseInterface
153
  {
154
  $options = $this->prepareDefaults($options);
155
  // Remove request modifying parameter because it can be done up-front.
156
+ $headers = $options['headers'] ?? [];
157
+ $body = $options['body'] ?? null;
158
+ $version = $options['version'] ?? '1.1';
159
  // Merge the URI into the base URI.
160
+ $uri = $this->buildUri(Psr7\Utils::uriFor($uri), $options);
161
+ if (\is_array($body)) {
162
+ throw $this->invalidBody();
163
  }
164
  $request = new Psr7\Request($method, $uri, $headers, $body, $version);
165
  // Remove the option so that they are not doubly-applied.
179
  * @param string|UriInterface $uri URI object or string.
180
  * @param array $options Request options to apply. See \GuzzleHttp\RequestOptions.
181
  *
 
182
  * @throws GuzzleException
183
  */
184
+ public function request(string $method, $uri = '', array $options = []): ResponseInterface
185
  {
186
  $options[RequestOptions::SYNCHRONOUS] = true;
187
  return $this->requestAsync($method, $uri, $options)->wait();
197
  * @param string|null $option The config option to retrieve.
198
  *
199
  * @return mixed
200
+ *
201
+ * @deprecated Client::getConfig will be removed in guzzlehttp/guzzle:8.0.
202
  */
203
+ public function getConfig(?string $option = null)
204
  {
205
  return $option === null
206
  ? $this->config
207
+ : ($this->config[$option] ?? null);
208
  }
209
 
210
+ private function buildUri(UriInterface $uri, array $config): UriInterface
 
 
 
 
 
211
  {
 
 
 
212
  if (isset($config['base_uri'])) {
213
+ $uri = Psr7\UriResolver::resolve(Psr7\Utils::uriFor($config['base_uri']), $uri);
214
  }
215
 
216
  if (isset($config['idn_conversion']) && ($config['idn_conversion'] !== false)) {
217
+ $idnOptions = ($config['idn_conversion'] === true) ? \IDNA_DEFAULT : $config['idn_conversion'];
218
  $uri = Utils::idnUriConvert($uri, $idnOptions);
219
  }
220
 
223
 
224
  /**
225
  * Configures the default options for a client.
 
 
 
226
  */
227
+ private function configureDefaults(array $config): void
228
  {
229
  $defaults = [
230
  'allow_redirects' => RedirectMiddleware::$defaultSettings,
232
  'decode_content' => true,
233
  'verify' => true,
234
  'cookies' => false,
235
+ 'idn_conversion' => false,
236
  ];
237
 
238
  // Use the standard Linux HTTP_PROXY and HTTPS_PROXY if set.
240
  // We can only trust the HTTP_PROXY environment variable in a CLI
241
  // process due to the fact that PHP has no reliable mechanism to
242
  // get environment variables that start with "HTTP_".
243
+ if (\PHP_SAPI === 'cli' && ($proxy = Utils::getenv('HTTP_PROXY'))) {
244
+ $defaults['proxy']['http'] = $proxy;
245
  }
246
 
247
+ if ($proxy = Utils::getenv('HTTPS_PROXY')) {
248
  $defaults['proxy']['https'] = $proxy;
249
  }
250
 
251
+ if ($noProxy = Utils::getenv('NO_PROXY')) {
252
+ $cleanedNoProxy = \str_replace(' ', '', $noProxy);
253
+ $defaults['proxy']['no'] = \explode(',', $cleanedNoProxy);
254
  }
255
 
256
  $this->config = $config + $defaults;
261
 
262
  // Add the default user-agent header.
263
  if (!isset($this->config['headers'])) {
264
+ $this->config['headers'] = ['User-Agent' => Utils::defaultUserAgent()];
265
  } else {
266
  // Add the User-Agent header if one was not already set.
267
+ foreach (\array_keys($this->config['headers']) as $name) {
268
+ if (\strtolower($name) === 'user-agent') {
269
  return;
270
  }
271
  }
272
+ $this->config['headers']['User-Agent'] = Utils::defaultUserAgent();
273
  }
274
  }
275
 
277
  * Merges default options into the array.
278
  *
279
  * @param array $options Options to modify by reference
 
 
280
  */
281
+ private function prepareDefaults(array $options): array
282
  {
283
  $defaults = $this->config;
284
 
290
 
291
  // Special handling for headers is required as they are added as
292
  // conditional headers and as headers passed to a request ctor.
293
+ if (\array_key_exists('headers', $options)) {
294
  // Allows default headers to be unset.
295
  if ($options['headers'] === null) {
296
  $defaults['_conditional'] = [];
297
  unset($options['headers']);
298
+ } elseif (!\is_array($options['headers'])) {
299
+ throw new InvalidArgumentException('headers must be an array');
300
  }
301
  }
302
 
320
  * as-is without merging in default options.
321
  *
322
  * @param array $options See \GuzzleHttp\RequestOptions.
 
 
323
  */
324
+ private function transfer(RequestInterface $request, array $options): PromiseInterface
325
  {
 
 
 
 
 
 
 
 
 
 
 
 
326
  $request = $this->applyOptions($request, $options);
327
  /** @var HandlerStack $handler */
328
  $handler = $options['handler'];
329
 
330
  try {
331
+ return P\Create::promiseFor($handler($request, $options));
332
  } catch (\Exception $e) {
333
+ return P\Create::rejectionFor($e);
334
  }
335
  }
336
 
337
  /**
338
  * Applies the array of request options to a request.
 
 
 
 
 
339
  */
340
+ private function applyOptions(RequestInterface $request, array &$options): RequestInterface
341
  {
342
  $modify = [
343
  'set_headers' => [],
344
  ];
345
 
346
  if (isset($options['headers'])) {
347
+ if (array_keys($options['headers']) === range(0, count($options['headers']) - 1)) {
348
+ throw new InvalidArgumentException('The headers array must have header name as keys.');
349
+ }
350
  $modify['set_headers'] = $options['headers'];
351
  unset($options['headers']);
352
  }
353
 
354
  if (isset($options['form_params'])) {
355
  if (isset($options['multipart'])) {
356
+ throw new InvalidArgumentException('You cannot use '
357
  . 'form_params and multipart at the same time. Use the '
358
  . 'form_params option if you want to send application/'
359
  . 'x-www-form-urlencoded requests, and the multipart '
360
  . 'option to send multipart/form-data requests.');
361
  }
362
+ $options['body'] = \http_build_query($options['form_params'], '', '&');
363
  unset($options['form_params']);
364
  // Ensure that we don't have the header in different case and set the new value.
365
+ $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
366
  $options['_conditional']['Content-Type'] = 'application/x-www-form-urlencoded';
367
  }
368
 
372
  }
373
 
374
  if (isset($options['json'])) {
375
+ $options['body'] = Utils::jsonEncode($options['json']);
376
  unset($options['json']);
377
  // Ensure that we don't have the header in different case and set the new value.
378
+ $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
379
  $options['_conditional']['Content-Type'] = 'application/json';
380
  }
381
 
383
  && $options['decode_content'] !== true
384
  ) {
385
  // Ensure that we don't have the header in different case and set the new value.
386
+ $options['_conditional'] = Psr7\Utils::caselessRemove(['Accept-Encoding'], $options['_conditional']);
387
  $modify['set_headers']['Accept-Encoding'] = $options['decode_content'];
388
  }
389
 
390
  if (isset($options['body'])) {
391
+ if (\is_array($options['body'])) {
392
+ throw $this->invalidBody();
393
  }
394
+ $modify['body'] = Psr7\Utils::streamFor($options['body']);
395
  unset($options['body']);
396
  }
397
 
398
+ if (!empty($options['auth']) && \is_array($options['auth'])) {
399
  $value = $options['auth'];
400
+ $type = isset($value[2]) ? \strtolower($value[2]) : 'basic';
401
  switch ($type) {
402
  case 'basic':
403
  // Ensure that we don't have the header in different case and set the new value.
404
+ $modify['set_headers'] = Psr7\Utils::caselessRemove(['Authorization'], $modify['set_headers']);
405
  $modify['set_headers']['Authorization'] = 'Basic '
406
+ . \base64_encode("$value[0]:$value[1]");
407
  break;
408
  case 'digest':
409
  // @todo: Do not rely on curl
410
+ $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_DIGEST;
411
+ $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
412
  break;
413
  case 'ntlm':
414
+ $options['curl'][\CURLOPT_HTTPAUTH] = \CURLAUTH_NTLM;
415
+ $options['curl'][\CURLOPT_USERPWD] = "$value[0]:$value[1]";
416
  break;
417
  }
418
  }
419
 
420
  if (isset($options['query'])) {
421
  $value = $options['query'];
422
+ if (\is_array($value)) {
423
+ $value = \http_build_query($value, '', '&', \PHP_QUERY_RFC3986);
424
  }
425
+ if (!\is_string($value)) {
426
+ throw new InvalidArgumentException('query must be a string or array');
427
  }
428
  $modify['query'] = $value;
429
  unset($options['query']);
432
  // Ensure that sink is not an invalid value.
433
  if (isset($options['sink'])) {
434
  // TODO: Add more sink validation?
435
+ if (\is_bool($options['sink'])) {
436
+ throw new InvalidArgumentException('sink must not be a boolean');
437
  }
438
  }
439
 
440
+ $request = Psr7\Utils::modifyRequest($request, $modify);
441
  if ($request->getBody() instanceof Psr7\MultipartStream) {
442
  // Use a multipart/form-data POST if a Content-Type is not set.
443
  // Ensure that we don't have the header in different case and set the new value.
444
+ $options['_conditional'] = Psr7\Utils::caselessRemove(['Content-Type'], $options['_conditional']);
445
  $options['_conditional']['Content-Type'] = 'multipart/form-data; boundary='
446
  . $request->getBody()->getBoundary();
447
  }
455
  $modify['set_headers'][$k] = $v;
456
  }
457
  }
458
+ $request = Psr7\Utils::modifyRequest($request, $modify);
459
  // Don't pass this internal value along to middleware/handlers.
460
  unset($options['_conditional']);
461
  }
464
  }
465
 
466
  /**
467
+ * Return an InvalidArgumentException with pre-set message.
 
 
468
  */
469
+ private function invalidBody(): InvalidArgumentException
470
  {
471
+ return new InvalidArgumentException('Passing in the "body" request '
472
+ . 'option as an array to send a request is not supported. '
473
  . 'Please use the "form_params" request option to send a '
474
  . 'application/x-www-form-urlencoded request, or the "multipart" '
475
  . 'request option to send a multipart/form-data request.');
vendor/guzzlehttp/guzzle/src/ClientInterface.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Exception\GuzzleException;
@@ -13,9 +14,9 @@ use Psr\Http\Message\UriInterface;
13
  interface ClientInterface
14
  {
15
  /**
16
- * @deprecated Will be removed in Guzzle 7.0.0
17
  */
18
- const VERSION = '6.5.5';
19
 
20
  /**
21
  * Send an HTTP request.
@@ -24,10 +25,9 @@ interface ClientInterface
24
  * @param array $options Request options to apply to the given
25
  * request and to the transfer.
26
  *
27
- * @return ResponseInterface
28
  * @throws GuzzleException
29
  */
30
- public function send(RequestInterface $request, array $options = []);
31
 
32
  /**
33
  * Asynchronously send an HTTP request.
@@ -35,10 +35,8 @@ interface ClientInterface
35
  * @param RequestInterface $request Request to send
36
  * @param array $options Request options to apply to the given
37
  * request and to the transfer.
38
- *
39
- * @return PromiseInterface
40
  */
41
- public function sendAsync(RequestInterface $request, array $options = []);
42
 
43
  /**
44
  * Create and send an HTTP request.
@@ -51,10 +49,9 @@ interface ClientInterface
51
  * @param string|UriInterface $uri URI object or string.
52
  * @param array $options Request options to apply.
53
  *
54
- * @return ResponseInterface
55
  * @throws GuzzleException
56
  */
57
- public function request($method, $uri, array $options = []);
58
 
59
  /**
60
  * Create and send an asynchronous HTTP request.
@@ -67,10 +64,8 @@ interface ClientInterface
67
  * @param string $method HTTP method
68
  * @param string|UriInterface $uri URI object or string.
69
  * @param array $options Request options to apply.
70
- *
71
- * @return PromiseInterface
72
  */
73
- public function requestAsync($method, $uri, array $options = []);
74
 
75
  /**
76
  * Get a client configuration option.
@@ -82,6 +77,8 @@ interface ClientInterface
82
  * @param string|null $option The config option to retrieve.
83
  *
84
  * @return mixed
 
 
85
  */
86
- public function getConfig($option = null);
87
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Exception\GuzzleException;
14
  interface ClientInterface
15
  {
16
  /**
17
+ * The Guzzle major version.
18
  */
19
+ public const MAJOR_VERSION = 7;
20
 
21
  /**
22
  * Send an HTTP request.
25
  * @param array $options Request options to apply to the given
26
  * request and to the transfer.
27
  *
 
28
  * @throws GuzzleException
29
  */
30
+ public function send(RequestInterface $request, array $options = []): ResponseInterface;
31
 
32
  /**
33
  * Asynchronously send an HTTP request.
35
  * @param RequestInterface $request Request to send
36
  * @param array $options Request options to apply to the given
37
  * request and to the transfer.
 
 
38
  */
39
+ public function sendAsync(RequestInterface $request, array $options = []): PromiseInterface;
40
 
41
  /**
42
  * Create and send an HTTP request.
49
  * @param string|UriInterface $uri URI object or string.
50
  * @param array $options Request options to apply.
51
  *
 
52
  * @throws GuzzleException
53
  */
54
+ public function request(string $method, $uri, array $options = []): ResponseInterface;
55
 
56
  /**
57
  * Create and send an asynchronous HTTP request.
64
  * @param string $method HTTP method
65
  * @param string|UriInterface $uri URI object or string.
66
  * @param array $options Request options to apply.
 
 
67
  */
68
+ public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
69
 
70
  /**
71
  * Get a client configuration option.
77
  * @param string|null $option The config option to retrieve.
78
  *
79
  * @return mixed
80
+ *
81
+ * @deprecated ClientInterface::getConfig will be removed in guzzlehttp/guzzle:8.0.
82
  */
83
+ public function getConfig(?string $option = null);
84
  }
vendor/guzzlehttp/guzzle/src/ClientTrait.php ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp;
4
+
5
+ use GuzzleHttp\Exception\GuzzleException;
6
+ use GuzzleHttp\Promise\PromiseInterface;
7
+ use Psr\Http\Message\ResponseInterface;
8
+ use Psr\Http\Message\UriInterface;
9
+
10
+ /**
11
+ * Client interface for sending HTTP requests.
12
+ */
13
+ trait ClientTrait
14
+ {
15
+ /**
16
+ * Create and send an HTTP request.
17
+ *
18
+ * Use an absolute path to override the base path of the client, or a
19
+ * relative path to append to the base path of the client. The URL can
20
+ * contain the query string as well.
21
+ *
22
+ * @param string $method HTTP method.
23
+ * @param string|UriInterface $uri URI object or string.
24
+ * @param array $options Request options to apply.
25
+ *
26
+ * @throws GuzzleException
27
+ */
28
+ abstract public function request(string $method, $uri, array $options = []): ResponseInterface;
29
+
30
+ /**
31
+ * Create and send an HTTP GET request.
32
+ *
33
+ * Use an absolute path to override the base path of the client, or a
34
+ * relative path to append to the base path of the client. The URL can
35
+ * contain the query string as well.
36
+ *
37
+ * @param string|UriInterface $uri URI object or string.
38
+ * @param array $options Request options to apply.
39
+ *
40
+ * @throws GuzzleException
41
+ */
42
+ public function get($uri, array $options = []): ResponseInterface
43
+ {
44
+ return $this->request('GET', $uri, $options);
45
+ }
46
+
47
+ /**
48
+ * Create and send an HTTP HEAD request.
49
+ *
50
+ * Use an absolute path to override the base path of the client, or a
51
+ * relative path to append to the base path of the client. The URL can
52
+ * contain the query string as well.
53
+ *
54
+ * @param string|UriInterface $uri URI object or string.
55
+ * @param array $options Request options to apply.
56
+ *
57
+ * @throws GuzzleException
58
+ */
59
+ public function head($uri, array $options = []): ResponseInterface
60
+ {
61
+ return $this->request('HEAD', $uri, $options);
62
+ }
63
+
64
+ /**
65
+ * Create and send an HTTP PUT request.
66
+ *
67
+ * Use an absolute path to override the base path of the client, or a
68
+ * relative path to append to the base path of the client. The URL can
69
+ * contain the query string as well.
70
+ *
71
+ * @param string|UriInterface $uri URI object or string.
72
+ * @param array $options Request options to apply.
73
+ *
74
+ * @throws GuzzleException
75
+ */
76
+ public function put($uri, array $options = []): ResponseInterface
77
+ {
78
+ return $this->request('PUT', $uri, $options);
79
+ }
80
+
81
+ /**
82
+ * Create and send an HTTP POST request.
83
+ *
84
+ * Use an absolute path to override the base path of the client, or a
85
+ * relative path to append to the base path of the client. The URL can
86
+ * contain the query string as well.
87
+ *
88
+ * @param string|UriInterface $uri URI object or string.
89
+ * @param array $options Request options to apply.
90
+ *
91
+ * @throws GuzzleException
92
+ */
93
+ public function post($uri, array $options = []): ResponseInterface
94
+ {
95
+ return $this->request('POST', $uri, $options);
96
+ }
97
+
98
+ /**
99
+ * Create and send an HTTP PATCH request.
100
+ *
101
+ * Use an absolute path to override the base path of the client, or a
102
+ * relative path to append to the base path of the client. The URL can
103
+ * contain the query string as well.
104
+ *
105
+ * @param string|UriInterface $uri URI object or string.
106
+ * @param array $options Request options to apply.
107
+ *
108
+ * @throws GuzzleException
109
+ */
110
+ public function patch($uri, array $options = []): ResponseInterface
111
+ {
112
+ return $this->request('PATCH', $uri, $options);
113
+ }
114
+
115
+ /**
116
+ * Create and send an HTTP DELETE request.
117
+ *
118
+ * Use an absolute path to override the base path of the client, or a
119
+ * relative path to append to the base path of the client. The URL can
120
+ * contain the query string as well.
121
+ *
122
+ * @param string|UriInterface $uri URI object or string.
123
+ * @param array $options Request options to apply.
124
+ *
125
+ * @throws GuzzleException
126
+ */
127
+ public function delete($uri, array $options = []): ResponseInterface
128
+ {
129
+ return $this->request('DELETE', $uri, $options);
130
+ }
131
+
132
+ /**
133
+ * Create and send an asynchronous HTTP request.
134
+ *
135
+ * Use an absolute path to override the base path of the client, or a
136
+ * relative path to append to the base path of the client. The URL can
137
+ * contain the query string as well. Use an array to provide a URL
138
+ * template and additional variables to use in the URL template expansion.
139
+ *
140
+ * @param string $method HTTP method
141
+ * @param string|UriInterface $uri URI object or string.
142
+ * @param array $options Request options to apply.
143
+ */
144
+ abstract public function requestAsync(string $method, $uri, array $options = []): PromiseInterface;
145
+
146
+ /**
147
+ * Create and send an asynchronous HTTP GET request.
148
+ *
149
+ * Use an absolute path to override the base path of the client, or a
150
+ * relative path to append to the base path of the client. The URL can
151
+ * contain the query string as well. Use an array to provide a URL
152
+ * template and additional variables to use in the URL template expansion.
153
+ *
154
+ * @param string|UriInterface $uri URI object or string.
155
+ * @param array $options Request options to apply.
156
+ */
157
+ public function getAsync($uri, array $options = []): PromiseInterface
158
+ {
159
+ return $this->requestAsync('GET', $uri, $options);
160
+ }
161
+
162
+ /**
163
+ * Create and send an asynchronous HTTP HEAD request.
164
+ *
165
+ * Use an absolute path to override the base path of the client, or a
166
+ * relative path to append to the base path of the client. The URL can
167
+ * contain the query string as well. Use an array to provide a URL
168
+ * template and additional variables to use in the URL template expansion.
169
+ *
170
+ * @param string|UriInterface $uri URI object or string.
171
+ * @param array $options Request options to apply.
172
+ */
173
+ public function headAsync($uri, array $options = []): PromiseInterface
174
+ {
175
+ return $this->requestAsync('HEAD', $uri, $options);
176
+ }
177
+
178
+ /**
179
+ * Create and send an asynchronous HTTP PUT request.
180
+ *
181
+ * Use an absolute path to override the base path of the client, or a
182
+ * relative path to append to the base path of the client. The URL can
183
+ * contain the query string as well. Use an array to provide a URL
184
+ * template and additional variables to use in the URL template expansion.
185
+ *
186
+ * @param string|UriInterface $uri URI object or string.
187
+ * @param array $options Request options to apply.
188
+ */
189
+ public function putAsync($uri, array $options = []): PromiseInterface
190
+ {
191
+ return $this->requestAsync('PUT', $uri, $options);
192
+ }
193
+
194
+ /**
195
+ * Create and send an asynchronous HTTP POST request.
196
+ *
197
+ * Use an absolute path to override the base path of the client, or a
198
+ * relative path to append to the base path of the client. The URL can
199
+ * contain the query string as well. Use an array to provide a URL
200
+ * template and additional variables to use in the URL template expansion.
201
+ *
202
+ * @param string|UriInterface $uri URI object or string.
203
+ * @param array $options Request options to apply.
204
+ */
205
+ public function postAsync($uri, array $options = []): PromiseInterface
206
+ {
207
+ return $this->requestAsync('POST', $uri, $options);
208
+ }
209
+
210
+ /**
211
+ * Create and send an asynchronous HTTP PATCH request.
212
+ *
213
+ * Use an absolute path to override the base path of the client, or a
214
+ * relative path to append to the base path of the client. The URL can
215
+ * contain the query string as well. Use an array to provide a URL
216
+ * template and additional variables to use in the URL template expansion.
217
+ *
218
+ * @param string|UriInterface $uri URI object or string.
219
+ * @param array $options Request options to apply.
220
+ */
221
+ public function patchAsync($uri, array $options = []): PromiseInterface
222
+ {
223
+ return $this->requestAsync('PATCH', $uri, $options);
224
+ }
225
+
226
+ /**
227
+ * Create and send an asynchronous HTTP DELETE request.
228
+ *
229
+ * Use an absolute path to override the base path of the client, or a
230
+ * relative path to append to the base path of the client. The URL can
231
+ * contain the query string as well. Use an array to provide a URL
232
+ * template and additional variables to use in the URL template expansion.
233
+ *
234
+ * @param string|UriInterface $uri URI object or string.
235
+ * @param array $options Request options to apply.
236
+ */
237
+ public function deleteAsync($uri, array $options = []): PromiseInterface
238
+ {
239
+ return $this->requestAsync('DELETE', $uri, $options);
240
+ }
241
+ }
vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Cookie;
3
 
4
  use Psr\Http\Message\RequestInterface;
@@ -9,20 +10,24 @@ use Psr\Http\Message\ResponseInterface;
9
  */
10
  class CookieJar implements CookieJarInterface
11
  {
12
- /** @var SetCookie[] Loaded cookie data */
 
 
13
  private $cookies = [];
14
 
15
- /** @var bool */
 
 
16
  private $strictMode;
17
 
18
  /**
19
- * @param bool $strictMode Set to true to throw exceptions when invalid
20
  * cookies are added to the cookie jar.
21
  * @param array $cookieArray Array of SetCookie objects or a hash of
22
  * arrays that can be used with the SetCookie
23
  * constructor
24
  */
25
- public function __construct($strictMode = false, $cookieArray = [])
26
  {
27
  $this->strictMode = $strictMode;
28
 
@@ -39,10 +44,8 @@ class CookieJar implements CookieJarInterface
39
  *
40
  * @param array $cookies Cookies to create the jar from
41
  * @param string $domain Domain to set the cookies to
42
- *
43
- * @return self
44
  */
45
- public static function fromArray(array $cookies, $domain)
46
  {
47
  $cookieJar = new self();
48
  foreach ($cookies as $name => $value) {
@@ -57,26 +60,15 @@ class CookieJar implements CookieJarInterface
57
  return $cookieJar;
58
  }
59
 
60
- /**
61
- * @deprecated
62
- */
63
- public static function getCookieValue($value)
64
- {
65
- return $value;
66
- }
67
-
68
  /**
69
  * Evaluate if this cookie should be persisted to storage
70
  * that survives between requests.
71
  *
72
- * @param SetCookie $cookie Being evaluated.
73
- * @param bool $allowSessionCookies If we should persist session cookies
74
- * @return bool
75
  */
76
- public static function shouldPersist(
77
- SetCookie $cookie,
78
- $allowSessionCookies = false
79
- ) {
80
  if ($cookie->getExpires() || $allowSessionCookies) {
81
  if (!$cookie->getDiscard()) {
82
  return true;
@@ -90,16 +82,13 @@ class CookieJar implements CookieJarInterface
90
  * Finds and returns the cookie based on the name
91
  *
92
  * @param string $name cookie name to search for
 
93
  * @return SetCookie|null cookie that was found or null if not found
94
  */
95
- public function getCookieByName($name)
96
  {
97
- // don't allow a non string name
98
- if ($name === null || !is_scalar($name)) {
99
- return null;
100
- }
101
  foreach ($this->cookies as $cookie) {
102
- if ($cookie->getName() !== null && strcasecmp($cookie->getName(), $name) === 0) {
103
  return $cookie;
104
  }
105
  }
@@ -107,37 +96,43 @@ class CookieJar implements CookieJarInterface
107
  return null;
108
  }
109
 
110
- public function toArray()
 
 
 
111
  {
112
- return array_map(function (SetCookie $cookie) {
113
  return $cookie->toArray();
114
  }, $this->getIterator()->getArrayCopy());
115
  }
116
 
117
- public function clear($domain = null, $path = null, $name = null)
 
 
 
118
  {
119
  if (!$domain) {
120
  $this->cookies = [];
121
  return;
122
  } elseif (!$path) {
123
- $this->cookies = array_filter(
124
  $this->cookies,
125
- function (SetCookie $cookie) use ($domain) {
126
  return !$cookie->matchesDomain($domain);
127
  }
128
  );
129
  } elseif (!$name) {
130
- $this->cookies = array_filter(
131
  $this->cookies,
132
- function (SetCookie $cookie) use ($path, $domain) {
133
  return !($cookie->matchesPath($path) &&
134
  $cookie->matchesDomain($domain));
135
  }
136
  );
137
  } else {
138
- $this->cookies = array_filter(
139
  $this->cookies,
140
- function (SetCookie $cookie) use ($path, $domain, $name) {
141
  return !($cookie->getName() == $name &&
142
  $cookie->matchesPath($path) &&
143
  $cookie->matchesDomain($domain));
@@ -146,17 +141,23 @@ class CookieJar implements CookieJarInterface
146
  }
147
  }
148
 
149
- public function clearSessionCookies()
 
 
 
150
  {
151
- $this->cookies = array_filter(
152
  $this->cookies,
153
- function (SetCookie $cookie) {
154
  return !$cookie->getDiscard() && $cookie->getExpires();
155
  }
156
  );
157
  }
158
 
159
- public function setCookie(SetCookie $cookie)
 
 
 
160
  {
161
  // If the name string is empty (but not 0), ignore the set-cookie
162
  // string entirely.
@@ -170,10 +171,9 @@ class CookieJar implements CookieJarInterface
170
  if ($result !== true) {
171
  if ($this->strictMode) {
172
  throw new \RuntimeException('Invalid cookie: ' . $result);
173
- } else {
174
- $this->removeCookieIfEmpty($cookie);
175
- return false;
176
  }
 
 
177
  }
178
 
179
  // Resolve conflicts with previously set cookies
@@ -217,27 +217,28 @@ class CookieJar implements CookieJarInterface
217
  return true;
218
  }
219
 
220
- public function count()
221
  {
222
- return count($this->cookies);
223
  }
224
 
225
- public function getIterator()
 
 
 
226
  {
227
- return new \ArrayIterator(array_values($this->cookies));
228
  }
229
 
230
- public function extractCookies(
231
- RequestInterface $request,
232
- ResponseInterface $response
233
- ) {
234
  if ($cookieHeader = $response->getHeader('Set-Cookie')) {
235
  foreach ($cookieHeader as $cookie) {
236
  $sc = SetCookie::fromString($cookie);
237
  if (!$sc->getDomain()) {
238
  $sc->setDomain($request->getUri()->getHost());
239
  }
240
- if (0 !== strpos($sc->getPath(), '/')) {
241
  $sc->setPath($this->getCookiePathFromRequest($request));
242
  }
243
  if (!$sc->matchesDomain($request->getUri()->getHost())) {
@@ -254,30 +255,28 @@ class CookieJar implements CookieJarInterface
254
  * Computes cookie path following RFC 6265 section 5.1.4
255
  *
256
  * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
257
- *
258
- * @param RequestInterface $request
259
- * @return string
260
  */
261
- private function getCookiePathFromRequest(RequestInterface $request)
262
  {
263
  $uriPath = $request->getUri()->getPath();
264
- if ('' === $uriPath) {
265
  return '/';
266
  }
267
- if (0 !== strpos($uriPath, '/')) {
268
  return '/';
269
  }
270
  if ('/' === $uriPath) {
271
  return '/';
272
  }
273
- if (0 === $lastSlashPos = strrpos($uriPath, '/')) {
 
274
  return '/';
275
  }
276
 
277
- return substr($uriPath, 0, $lastSlashPos);
278
  }
279
 
280
- public function withCookieHeader(RequestInterface $request)
281
  {
282
  $values = [];
283
  $uri = $request->getUri();
@@ -297,17 +296,15 @@ class CookieJar implements CookieJarInterface
297
  }
298
 
299
  return $values
300
- ? $request->withHeader('Cookie', implode('; ', $values))
301
  : $request;
302
  }
303
 
304
  /**
305
  * If a cookie already exists and the server asks to set it again with a
306
  * null value, the cookie must be deleted.
307
- *
308
- * @param SetCookie $cookie
309
  */
310
- private function removeCookieIfEmpty(SetCookie $cookie)
311
  {
312
  $cookieValue = $cookie->getValue();
313
  if ($cookieValue === null || $cookieValue === '') {
1
  <?php
2
+
3
  namespace GuzzleHttp\Cookie;
4
 
5
  use Psr\Http\Message\RequestInterface;
10
  */
11
  class CookieJar implements CookieJarInterface
12
  {
13
+ /**
14
+ * @var SetCookie[] Loaded cookie data
15
+ */
16
  private $cookies = [];
17
 
18
+ /**
19
+ * @var bool
20
+ */
21
  private $strictMode;
22
 
23
  /**
24
+ * @param bool $strictMode Set to true to throw exceptions when invalid
25
  * cookies are added to the cookie jar.
26
  * @param array $cookieArray Array of SetCookie objects or a hash of
27
  * arrays that can be used with the SetCookie
28
  * constructor
29
  */
30
+ public function __construct(bool $strictMode = false, array $cookieArray = [])
31
  {
32
  $this->strictMode = $strictMode;
33
 
44
  *
45
  * @param array $cookies Cookies to create the jar from
46
  * @param string $domain Domain to set the cookies to
 
 
47
  */
48
+ public static function fromArray(array $cookies, string $domain): self
49
  {
50
  $cookieJar = new self();
51
  foreach ($cookies as $name => $value) {
60
  return $cookieJar;
61
  }
62
 
 
 
 
 
 
 
 
 
63
  /**
64
  * Evaluate if this cookie should be persisted to storage
65
  * that survives between requests.
66
  *
67
+ * @param SetCookie $cookie Being evaluated.
68
+ * @param bool $allowSessionCookies If we should persist session cookies
 
69
  */
70
+ public static function shouldPersist(SetCookie $cookie, bool $allowSessionCookies = false): bool
71
+ {
 
 
72
  if ($cookie->getExpires() || $allowSessionCookies) {
73
  if (!$cookie->getDiscard()) {
74
  return true;
82
  * Finds and returns the cookie based on the name
83
  *
84
  * @param string $name cookie name to search for
85
+ *
86
  * @return SetCookie|null cookie that was found or null if not found
87
  */
88
+ public function getCookieByName(string $name): ?SetCookie
89
  {
 
 
 
 
90
  foreach ($this->cookies as $cookie) {
91
+ if ($cookie->getName() !== null && \strcasecmp($cookie->getName(), $name) === 0) {
92
  return $cookie;
93
  }
94
  }
96
  return null;
97
  }
98
 
99
+ /**
100
+ * @inheritDoc
101
+ */
102
+ public function toArray(): array
103
  {
104
+ return \array_map(static function (SetCookie $cookie): array {
105
  return $cookie->toArray();
106
  }, $this->getIterator()->getArrayCopy());
107
  }
108
 
109
+ /**
110
+ * @inheritDoc
111
+ */
112
+ public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void
113
  {
114
  if (!$domain) {
115
  $this->cookies = [];
116
  return;
117
  } elseif (!$path) {
118
+ $this->cookies = \array_filter(
119
  $this->cookies,
120
+ static function (SetCookie $cookie) use ($domain): bool {
121
  return !$cookie->matchesDomain($domain);
122
  }
123
  );
124
  } elseif (!$name) {
125
+ $this->cookies = \array_filter(
126
  $this->cookies,
127
+ static function (SetCookie $cookie) use ($path, $domain): bool {
128
  return !($cookie->matchesPath($path) &&
129
  $cookie->matchesDomain($domain));
130
  }
131
  );
132
  } else {
133
+ $this->cookies = \array_filter(
134
  $this->cookies,
135
+ static function (SetCookie $cookie) use ($path, $domain, $name) {
136
  return !($cookie->getName() == $name &&
137
  $cookie->matchesPath($path) &&
138
  $cookie->matchesDomain($domain));
141
  }
142
  }
143
 
144
+ /**
145
+ * @inheritDoc
146
+ */
147
+ public function clearSessionCookies(): void
148
  {
149
+ $this->cookies = \array_filter(
150
  $this->cookies,
151
+ static function (SetCookie $cookie): bool {
152
  return !$cookie->getDiscard() && $cookie->getExpires();
153
  }
154
  );
155
  }
156
 
157
+ /**
158
+ * @inheritDoc
159
+ */
160
+ public function setCookie(SetCookie $cookie): bool
161
  {
162
  // If the name string is empty (but not 0), ignore the set-cookie
163
  // string entirely.
171
  if ($result !== true) {
172
  if ($this->strictMode) {
173
  throw new \RuntimeException('Invalid cookie: ' . $result);
 
 
 
174
  }
175
+ $this->removeCookieIfEmpty($cookie);
176
+ return false;
177
  }
178
 
179
  // Resolve conflicts with previously set cookies
217
  return true;
218
  }
219
 
220
+ public function count(): int
221
  {
222
+ return \count($this->cookies);
223
  }
224
 
225
+ /**
226
+ * @return \ArrayIterator<int, SetCookie>
227
+ */
228
+ public function getIterator(): \ArrayIterator
229
  {
230
+ return new \ArrayIterator(\array_values($this->cookies));
231
  }
232
 
233
+ public function extractCookies(RequestInterface $request, ResponseInterface $response): void
234
+ {
 
 
235
  if ($cookieHeader = $response->getHeader('Set-Cookie')) {
236
  foreach ($cookieHeader as $cookie) {
237
  $sc = SetCookie::fromString($cookie);
238
  if (!$sc->getDomain()) {
239
  $sc->setDomain($request->getUri()->getHost());
240
  }
241
+ if (0 !== \strpos($sc->getPath(), '/')) {
242
  $sc->setPath($this->getCookiePathFromRequest($request));
243
  }
244
  if (!$sc->matchesDomain($request->getUri()->getHost())) {
255
  * Computes cookie path following RFC 6265 section 5.1.4
256
  *
257
  * @link https://tools.ietf.org/html/rfc6265#section-5.1.4
 
 
 
258
  */
259
+ private function getCookiePathFromRequest(RequestInterface $request): string
260
  {
261
  $uriPath = $request->getUri()->getPath();
262
+ if ('' === $uriPath) {
263
  return '/';
264
  }
265
+ if (0 !== \strpos($uriPath, '/')) {
266
  return '/';
267
  }
268
  if ('/' === $uriPath) {
269
  return '/';
270
  }
271
+ $lastSlashPos = \strrpos($uriPath, '/');
272
+ if (0 === $lastSlashPos || false === $lastSlashPos) {
273
  return '/';
274
  }
275
 
276
+ return \substr($uriPath, 0, $lastSlashPos);
277
  }
278
 
279
+ public function withCookieHeader(RequestInterface $request): RequestInterface
280
  {
281
  $values = [];
282
  $uri = $request->getUri();
296
  }
297
 
298
  return $values
299
+ ? $request->withHeader('Cookie', \implode('; ', $values))
300
  : $request;
301
  }
302
 
303
  /**
304
  * If a cookie already exists and the server asks to set it again with a
305
  * null value, the cookie must be deleted.
 
 
306
  */
307
+ private function removeCookieIfEmpty(SetCookie $cookie): void
308
  {
309
  $cookieValue = $cookie->getValue();
310
  if ($cookieValue === null || $cookieValue === '') {
vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Cookie;
3
 
4
  use Psr\Http\Message\RequestInterface;
@@ -12,7 +13,8 @@ use Psr\Http\Message\ResponseInterface;
12
  * necessary. Subclasses are also responsible for storing and retrieving
13
  * cookies from a file, database, etc.
14
  *
15
- * @link http://docs.python.org/2/library/cookielib.html Inspiration
 
16
  */
17
  interface CookieJarInterface extends \Countable, \IteratorAggregate
18
  {
@@ -26,7 +28,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
26
  *
27
  * @return RequestInterface returns the modified request.
28
  */
29
- public function withCookieHeader(RequestInterface $request);
30
 
31
  /**
32
  * Extract cookies from an HTTP response and store them in the CookieJar.
@@ -34,10 +36,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
34
  * @param RequestInterface $request Request that was sent
35
  * @param ResponseInterface $response Response that was received
36
  */
37
- public function extractCookies(
38
- RequestInterface $request,
39
- ResponseInterface $response
40
- );
41
 
42
  /**
43
  * Sets a cookie in the cookie jar.
@@ -46,7 +45,7 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
46
  *
47
  * @return bool Returns true on success or false on failure
48
  */
49
- public function setCookie(SetCookie $cookie);
50
 
51
  /**
52
  * Remove cookies currently held in the cookie jar.
@@ -61,10 +60,8 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
61
  * @param string|null $domain Clears cookies matching a domain
62
  * @param string|null $path Clears cookies matching a domain and path
63
  * @param string|null $name Clears cookies matching a domain, path, and name
64
- *
65
- * @return CookieJarInterface
66
  */
67
- public function clear($domain = null, $path = null, $name = null);
68
 
69
  /**
70
  * Discard all sessions cookies.
@@ -73,12 +70,10 @@ interface CookieJarInterface extends \Countable, \IteratorAggregate
73
  * field set to true. To be called when the user agent shuts down according
74
  * to RFC 2965.
75
  */
76
- public function clearSessionCookies();
77
 
78
  /**
79
  * Converts the cookie jar to an array.
80
- *
81
- * @return array
82
  */
83
- public function toArray();
84
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Cookie;
4
 
5
  use Psr\Http\Message\RequestInterface;
13
  * necessary. Subclasses are also responsible for storing and retrieving
14
  * cookies from a file, database, etc.
15
  *
16
+ * @link https://docs.python.org/2/library/cookielib.html Inspiration
17
+ * @extends \IteratorAggregate<SetCookie>
18
  */
19
  interface CookieJarInterface extends \Countable, \IteratorAggregate
20
  {
28
  *
29
  * @return RequestInterface returns the modified request.
30
  */
31
+ public function withCookieHeader(RequestInterface $request): RequestInterface;
32
 
33
  /**
34
  * Extract cookies from an HTTP response and store them in the CookieJar.
36
  * @param RequestInterface $request Request that was sent
37
  * @param ResponseInterface $response Response that was received
38
  */
39
+ public function extractCookies(RequestInterface $request, ResponseInterface $response): void;
 
 
 
40
 
41
  /**
42
  * Sets a cookie in the cookie jar.
45
  *
46
  * @return bool Returns true on success or false on failure
47
  */
48
+ public function setCookie(SetCookie $cookie): bool;
49
 
50
  /**
51
  * Remove cookies currently held in the cookie jar.
60
  * @param string|null $domain Clears cookies matching a domain
61
  * @param string|null $path Clears cookies matching a domain and path
62
  * @param string|null $name Clears cookies matching a domain, path, and name
 
 
63
  */
64
+ public function clear(?string $domain = null, ?string $path = null, ?string $name = null): void;
65
 
66
  /**
67
  * Discard all sessions cookies.
70
  * field set to true. To be called when the user agent shuts down according
71
  * to RFC 2965.
72
  */
73
+ public function clearSessionCookies(): void;
74
 
75
  /**
76
  * Converts the cookie jar to an array.
 
 
77
  */
78
+ public function toArray(): array;
79
  }
vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php CHANGED
@@ -1,33 +1,40 @@
1
  <?php
 
2
  namespace GuzzleHttp\Cookie;
3
 
 
 
4
  /**
5
  * Persists non-session cookies using a JSON formatted file
6
  */
7
  class FileCookieJar extends CookieJar
8
  {
9
- /** @var string filename */
 
 
10
  private $filename;
11
 
12
- /** @var bool Control whether to persist session cookies or not. */
 
 
13
  private $storeSessionCookies;
14
 
15
  /**
16
  * Create a new FileCookieJar object
17
  *
18
- * @param string $cookieFile File to store the cookie data
19
- * @param bool $storeSessionCookies Set to true to store session cookies
20
- * in the cookie jar.
21
  *
22
  * @throws \RuntimeException if the file cannot be found or created
23
  */
24
- public function __construct($cookieFile, $storeSessionCookies = false)
25
  {
26
  parent::__construct();
27
  $this->filename = $cookieFile;
28
  $this->storeSessionCookies = $storeSessionCookies;
29
 
30
- if (file_exists($cookieFile)) {
31
  $this->load($cookieFile);
32
  }
33
  }
@@ -44,20 +51,21 @@ class FileCookieJar extends CookieJar
44
  * Saves the cookies to a file.
45
  *
46
  * @param string $filename File to save
 
47
  * @throws \RuntimeException if the file cannot be found or created
48
  */
49
- public function save($filename)
50
  {
51
  $json = [];
 
52
  foreach ($this as $cookie) {
53
- /** @var SetCookie $cookie */
54
  if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
55
  $json[] = $cookie->toArray();
56
  }
57
  }
58
 
59
- $jsonStr = \GuzzleHttp\json_encode($json);
60
- if (false === file_put_contents($filename, $jsonStr, LOCK_EX)) {
61
  throw new \RuntimeException("Unable to save file {$filename}");
62
  }
63
  }
@@ -68,23 +76,25 @@ class FileCookieJar extends CookieJar
68
  * Old cookies are kept unless overwritten by newly loaded ones.
69
  *
70
  * @param string $filename Cookie file to load.
 
71
  * @throws \RuntimeException if the file cannot be loaded.
72
  */
73
- public function load($filename)
74
  {
75
- $json = file_get_contents($filename);
76
  if (false === $json) {
77
  throw new \RuntimeException("Unable to load file {$filename}");
78
- } elseif ($json === '') {
 
79
  return;
80
  }
81
 
82
- $data = \GuzzleHttp\json_decode($json, true);
83
- if (is_array($data)) {
84
- foreach (json_decode($json, true) as $cookie) {
85
  $this->setCookie(new SetCookie($cookie));
86
  }
87
- } elseif (strlen($data)) {
88
  throw new \RuntimeException("Invalid cookie file: {$filename}");
89
  }
90
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Cookie;
4
 
5
+ use GuzzleHttp\Utils;
6
+
7
  /**
8
  * Persists non-session cookies using a JSON formatted file
9
  */
10
  class FileCookieJar extends CookieJar
11
  {
12
+ /**
13
+ * @var string filename
14
+ */
15
  private $filename;
16
 
17
+ /**
18
+ * @var bool Control whether to persist session cookies or not.
19
+ */
20
  private $storeSessionCookies;
21
 
22
  /**
23
  * Create a new FileCookieJar object
24
  *
25
+ * @param string $cookieFile File to store the cookie data
26
+ * @param bool $storeSessionCookies Set to true to store session cookies
27
+ * in the cookie jar.
28
  *
29
  * @throws \RuntimeException if the file cannot be found or created
30
  */
31
+ public function __construct(string $cookieFile, bool $storeSessionCookies = false)
32
  {
33
  parent::__construct();
34
  $this->filename = $cookieFile;
35
  $this->storeSessionCookies = $storeSessionCookies;
36
 
37
+ if (\file_exists($cookieFile)) {
38
  $this->load($cookieFile);
39
  }
40
  }
51
  * Saves the cookies to a file.
52
  *
53
  * @param string $filename File to save
54
+ *
55
  * @throws \RuntimeException if the file cannot be found or created
56
  */
57
+ public function save(string $filename): void
58
  {
59
  $json = [];
60
+ /** @var SetCookie $cookie */
61
  foreach ($this as $cookie) {
 
62
  if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
63
  $json[] = $cookie->toArray();
64
  }
65
  }
66
 
67
+ $jsonStr = Utils::jsonEncode($json);
68
+ if (false === \file_put_contents($filename, $jsonStr, \LOCK_EX)) {
69
  throw new \RuntimeException("Unable to save file {$filename}");
70
  }
71
  }
76
  * Old cookies are kept unless overwritten by newly loaded ones.
77
  *
78
  * @param string $filename Cookie file to load.
79
+ *
80
  * @throws \RuntimeException if the file cannot be loaded.
81
  */
82
+ public function load(string $filename): void
83
  {
84
+ $json = \file_get_contents($filename);
85
  if (false === $json) {
86
  throw new \RuntimeException("Unable to load file {$filename}");
87
+ }
88
+ if ($json === '') {
89
  return;
90
  }
91
 
92
+ $data = Utils::jsonDecode($json, true);
93
+ if (\is_array($data)) {
94
+ foreach ($data as $cookie) {
95
  $this->setCookie(new SetCookie($cookie));
96
  }
97
+ } elseif (\is_scalar($data) && !empty($data)) {
98
  throw new \RuntimeException("Invalid cookie file: {$filename}");
99
  }
100
  }
vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Cookie;
3
 
4
  /**
@@ -6,21 +7,25 @@ namespace GuzzleHttp\Cookie;
6
  */
7
  class SessionCookieJar extends CookieJar
8
  {
9
- /** @var string session key */
 
 
10
  private $sessionKey;
11
-
12
- /** @var bool Control whether to persist session cookies or not. */
 
 
13
  private $storeSessionCookies;
14
 
15
  /**
16
  * Create a new SessionCookieJar object
17
  *
18
- * @param string $sessionKey Session key name to store the cookie
19
- * data in session
20
- * @param bool $storeSessionCookies Set to true to store session cookies
21
- * in the cookie jar.
22
  */
23
- public function __construct($sessionKey, $storeSessionCookies = false)
24
  {
25
  parent::__construct();
26
  $this->sessionKey = $sessionKey;
@@ -39,33 +44,33 @@ class SessionCookieJar extends CookieJar
39
  /**
40
  * Save cookies to the client session
41
  */
42
- public function save()
43
  {
44
  $json = [];
 
45
  foreach ($this as $cookie) {
46
- /** @var SetCookie $cookie */
47
  if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
48
  $json[] = $cookie->toArray();
49
  }
50
  }
51
 
52
- $_SESSION[$this->sessionKey] = json_encode($json);
53
  }
54
 
55
  /**
56
  * Load the contents of the client session into the data array
57
  */
58
- protected function load()
59
  {
60
  if (!isset($_SESSION[$this->sessionKey])) {
61
  return;
62
  }
63
- $data = json_decode($_SESSION[$this->sessionKey], true);
64
- if (is_array($data)) {
65
  foreach ($data as $cookie) {
66
  $this->setCookie(new SetCookie($cookie));
67
  }
68
- } elseif (strlen($data)) {
69
  throw new \RuntimeException("Invalid cookie data");
70
  }
71
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Cookie;
4
 
5
  /**
7
  */
8
  class SessionCookieJar extends CookieJar
9
  {
10
+ /**
11
+ * @var string session key
12
+ */
13
  private $sessionKey;
14
+
15
+ /**
16
+ * @var bool Control whether to persist session cookies or not.
17
+ */
18
  private $storeSessionCookies;
19
 
20
  /**
21
  * Create a new SessionCookieJar object
22
  *
23
+ * @param string $sessionKey Session key name to store the cookie
24
+ * data in session
25
+ * @param bool $storeSessionCookies Set to true to store session cookies
26
+ * in the cookie jar.
27
  */
28
+ public function __construct(string $sessionKey, bool $storeSessionCookies = false)
29
  {
30
  parent::__construct();
31
  $this->sessionKey = $sessionKey;
44
  /**
45
  * Save cookies to the client session
46
  */
47
+ public function save(): void
48
  {
49
  $json = [];
50
+ /** @var SetCookie $cookie */
51
  foreach ($this as $cookie) {
 
52
  if (CookieJar::shouldPersist($cookie, $this->storeSessionCookies)) {
53
  $json[] = $cookie->toArray();
54
  }
55
  }
56
 
57
+ $_SESSION[$this->sessionKey] = \json_encode($json);
58
  }
59
 
60
  /**
61
  * Load the contents of the client session into the data array
62
  */
63
+ protected function load(): void
64
  {
65
  if (!isset($_SESSION[$this->sessionKey])) {
66
  return;
67
  }
68
+ $data = \json_decode($_SESSION[$this->sessionKey], true);
69
+ if (\is_array($data)) {
70
  foreach ($data as $cookie) {
71
  $this->setCookie(new SetCookie($cookie));
72
  }
73
+ } elseif (\strlen($data)) {
74
  throw new \RuntimeException("Invalid cookie data");
75
  }
76
  }
vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Cookie;
3
 
4
  /**
@@ -6,7 +7,9 @@ namespace GuzzleHttp\Cookie;
6
  */
7
  class SetCookie
8
  {
9
- /** @var array */
 
 
10
  private static $defaults = [
11
  'Name' => null,
12
  'Value' => null,
@@ -19,42 +22,42 @@ class SetCookie
19
  'HttpOnly' => false
20
  ];
21
 
22
- /** @var array Cookie data */
 
 
23
  private $data;
24
 
25
  /**
26
- * Create a new SetCookie object from a string
27
  *
28
  * @param string $cookie Set-Cookie header string
29
- *
30
- * @return self
31
  */
32
- public static function fromString($cookie)
33
  {
34
  // Create the default return array
35
  $data = self::$defaults;
36
  // Explode the cookie string using a series of semicolons
37
- $pieces = array_filter(array_map('trim', explode(';', $cookie)));
38
  // The name of the cookie (first kvp) must exist and include an equal sign.
39
- if (empty($pieces[0]) || !strpos($pieces[0], '=')) {
40
  return new self($data);
41
  }
42
 
43
  // Add the cookie pieces into the parsed data array
44
  foreach ($pieces as $part) {
45
- $cookieParts = explode('=', $part, 2);
46
- $key = trim($cookieParts[0]);
47
  $value = isset($cookieParts[1])
48
- ? trim($cookieParts[1], " \n\r\t\0\x0B")
49
  : true;
50
 
51
  // Only check for non-cookies when cookies have been found
52
- if (empty($data['Name'])) {
53
  $data['Name'] = $key;
54
  $data['Value'] = $value;
55
  } else {
56
- foreach (array_keys(self::$defaults) as $search) {
57
- if (!strcasecmp($search, $key)) {
58
  $data[$search] = $value;
59
  continue 2;
60
  }
@@ -71,39 +74,45 @@ class SetCookie
71
  */
72
  public function __construct(array $data = [])
73
  {
74
- $this->data = array_replace(self::$defaults, $data);
 
 
 
 
 
 
75
  // Extract the Expires value and turn it into a UNIX timestamp if needed
76
  if (!$this->getExpires() && $this->getMaxAge()) {
77
  // Calculate the Expires date
78
- $this->setExpires(time() + $this->getMaxAge());
79
- } elseif ($this->getExpires() && !is_numeric($this->getExpires())) {
80
- $this->setExpires($this->getExpires());
81
  }
82
  }
83
 
84
  public function __toString()
85
  {
86
- $str = $this->data['Name'] . '=' . $this->data['Value'] . '; ';
87
  foreach ($this->data as $k => $v) {
88
  if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
89
  if ($k === 'Expires') {
90
- $str .= 'Expires=' . gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
91
  } else {
92
  $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
93
  }
94
  }
95
  }
96
 
97
- return rtrim($str, '; ');
98
  }
99
 
100
- public function toArray()
101
  {
102
  return $this->data;
103
  }
104
 
105
  /**
106
- * Get the cookie name
107
  *
108
  * @return string
109
  */
@@ -113,19 +122,23 @@ class SetCookie
113
  }
114
 
115
  /**
116
- * Set the cookie name
117
  *
118
  * @param string $name Cookie name
119
  */
120
- public function setName($name)
121
  {
122
- $this->data['Name'] = $name;
 
 
 
 
123
  }
124
 
125
  /**
126
- * Get the cookie value
127
  *
128
- * @return string
129
  */
130
  public function getValue()
131
  {
@@ -133,17 +146,21 @@ class SetCookie
133
  }
134
 
135
  /**
136
- * Set the cookie value
137
  *
138
  * @param string $value Cookie value
139
  */
140
- public function setValue($value)
141
  {
142
- $this->data['Value'] = $value;
 
 
 
 
143
  }
144
 
145
  /**
146
- * Get the domain
147
  *
148
  * @return string|null
149
  */
@@ -153,17 +170,21 @@ class SetCookie
153
  }
154
 
155
  /**
156
- * Set the domain of the cookie
157
  *
158
- * @param string $domain
159
  */
160
- public function setDomain($domain)
161
  {
162
- $this->data['Domain'] = $domain;
 
 
 
 
163
  }
164
 
165
  /**
166
- * Get the path
167
  *
168
  * @return string
169
  */
@@ -173,39 +194,47 @@ class SetCookie
173
  }
174
 
175
  /**
176
- * Set the path of the cookie
177
  *
178
  * @param string $path Path of the cookie
179
  */
180
- public function setPath($path)
181
  {
182
- $this->data['Path'] = $path;
 
 
 
 
183
  }
184
 
185
  /**
186
- * Maximum lifetime of the cookie in seconds
187
  *
188
  * @return int|null
189
  */
190
  public function getMaxAge()
191
  {
192
- return $this->data['Max-Age'];
193
  }
194
 
195
  /**
196
- * Set the max-age of the cookie
197
  *
198
- * @param int $maxAge Max age of the cookie in seconds
199
  */
200
- public function setMaxAge($maxAge)
201
  {
202
- $this->data['Max-Age'] = $maxAge;
 
 
 
 
203
  }
204
 
205
  /**
206
- * The UNIX timestamp when the cookie Expires
207
  *
208
- * @return mixed
209
  */
210
  public function getExpires()
211
  {
@@ -213,21 +242,23 @@ class SetCookie
213
  }
214
 
215
  /**
216
- * Set the unix timestamp for which the cookie will expire
217
  *
218
- * @param int $timestamp Unix timestamp
219
  */
220
- public function setExpires($timestamp)
221
  {
222
- $this->data['Expires'] = is_numeric($timestamp)
223
- ? (int) $timestamp
224
- : strtotime($timestamp);
 
 
225
  }
226
 
227
  /**
228
- * Get whether or not this is a secure cookie
229
  *
230
- * @return bool|null
231
  */
232
  public function getSecure()
233
  {
@@ -235,17 +266,21 @@ class SetCookie
235
  }
236
 
237
  /**
238
- * Set whether or not the cookie is secure
239
  *
240
  * @param bool $secure Set to true or false if secure
241
  */
242
- public function setSecure($secure)
243
  {
244
- $this->data['Secure'] = $secure;
 
 
 
 
245
  }
246
 
247
  /**
248
- * Get whether or not this is a session cookie
249
  *
250
  * @return bool|null
251
  */
@@ -255,17 +290,21 @@ class SetCookie
255
  }
256
 
257
  /**
258
- * Set whether or not this is a session cookie
259
  *
260
  * @param bool $discard Set to true or false if this is a session cookie
261
  */
262
- public function setDiscard($discard)
263
  {
264
- $this->data['Discard'] = $discard;
 
 
 
 
265
  }
266
 
267
  /**
268
- * Get whether or not this is an HTTP only cookie
269
  *
270
  * @return bool
271
  */
@@ -275,13 +314,17 @@ class SetCookie
275
  }
276
 
277
  /**
278
- * Set whether or not this is an HTTP only cookie
279
  *
280
  * @param bool $httpOnly Set to true or false if this is HTTP only
281
  */
282
- public function setHttpOnly($httpOnly)
283
  {
284
- $this->data['HttpOnly'] = $httpOnly;
 
 
 
 
285
  }
286
 
287
  /**
@@ -298,10 +341,8 @@ class SetCookie
298
  * path is a %x2F ("/") character.
299
  *
300
  * @param string $requestPath Path to check against
301
- *
302
- * @return bool
303
  */
304
- public function matchesPath($requestPath)
305
  {
306
  $cookiePath = $this->getPath();
307
 
@@ -311,27 +352,25 @@ class SetCookie
311
  }
312
 
313
  // Ensure that the cookie-path is a prefix of the request path.
314
- if (0 !== strpos($requestPath, $cookiePath)) {
315
  return false;
316
  }
317
 
318
  // Match if the last character of the cookie-path is "/"
319
- if (substr($cookiePath, -1, 1) === '/') {
320
  return true;
321
  }
322
 
323
  // Match if the first character not included in cookie path is "/"
324
- return substr($requestPath, strlen($cookiePath), 1) === '/';
325
  }
326
 
327
  /**
328
- * Check if the cookie matches a domain value
329
  *
330
  * @param string $domain Domain to check against
331
- *
332
- * @return bool
333
  */
334
- public function matchesDomain($domain)
335
  {
336
  $cookieDomain = $this->getDomain();
337
  if (null === $cookieDomain) {
@@ -339,10 +378,10 @@ class SetCookie
339
  }
340
 
341
  // Remove the leading '.' as per spec in RFC 6265.
342
- // http://tools.ietf.org/html/rfc6265#section-5.2.3
343
- $cookieDomain = ltrim(strtolower($cookieDomain), '.');
344
 
345
- $domain = strtolower($domain);
346
 
347
  // Domain not set or exact match.
348
  if ('' === $cookieDomain || $domain === $cookieDomain) {
@@ -350,39 +389,36 @@ class SetCookie
350
  }
351
 
352
  // Matching the subdomain according to RFC 6265.
353
- // http://tools.ietf.org/html/rfc6265#section-5.1.3
354
- if (filter_var($domain, FILTER_VALIDATE_IP)) {
355
  return false;
356
  }
357
 
358
- return (bool) preg_match('/\.' . preg_quote($cookieDomain, '/') . '$/', $domain);
359
  }
360
 
361
  /**
362
- * Check if the cookie is expired
363
- *
364
- * @return bool
365
  */
366
- public function isExpired()
367
  {
368
- return $this->getExpires() !== null && time() > $this->getExpires();
369
  }
370
 
371
  /**
372
- * Check if the cookie is valid according to RFC 6265
373
  *
374
  * @return bool|string Returns true if valid or an error message if invalid
375
  */
376
  public function validate()
377
  {
378
- // Names must not be empty, but can be 0
379
  $name = $this->getName();
380
- if (empty($name) && !is_numeric($name)) {
381
  return 'The cookie name must not be empty';
382
  }
383
 
384
  // Check if any of the invalid characters are present in the cookie name
385
- if (preg_match(
386
  '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
387
  $name
388
  )) {
@@ -391,17 +427,17 @@ class SetCookie
391
  . 'following characters: ()<>@,;:\"/?={}';
392
  }
393
 
394
- // Value must not be empty, but can be 0
 
395
  $value = $this->getValue();
396
- if (empty($value) && !is_numeric($value)) {
397
  return 'The cookie value must not be empty';
398
  }
399
 
400
- // Domains must not be empty, but can be 0
401
- // A "0" is not a valid internet domain, but may be used as server name
402
- // in a private network.
403
  $domain = $this->getDomain();
404
- if (empty($domain) && !is_numeric($domain)) {
405
  return 'The cookie domain must not be empty';
406
  }
407
 
1
  <?php
2
+
3
  namespace GuzzleHttp\Cookie;
4
 
5
  /**
7
  */
8
  class SetCookie
9
  {
10
+ /**
11
+ * @var array
12
+ */
13
  private static $defaults = [
14
  'Name' => null,
15
  'Value' => null,
22
  'HttpOnly' => false
23
  ];
24
 
25
+ /**
26
+ * @var array Cookie data
27
+ */
28
  private $data;
29
 
30
  /**
31
+ * Create a new SetCookie object from a string.
32
  *
33
  * @param string $cookie Set-Cookie header string
 
 
34
  */
35
+ public static function fromString(string $cookie): self
36
  {
37
  // Create the default return array
38
  $data = self::$defaults;
39
  // Explode the cookie string using a series of semicolons
40
+ $pieces = \array_filter(\array_map('trim', \explode(';', $cookie)));
41
  // The name of the cookie (first kvp) must exist and include an equal sign.
42
+ if (!isset($pieces[0]) || \strpos($pieces[0], '=') === false) {
43
  return new self($data);
44
  }
45
 
46
  // Add the cookie pieces into the parsed data array
47
  foreach ($pieces as $part) {
48
+ $cookieParts = \explode('=', $part, 2);
49
+ $key = \trim($cookieParts[0]);
50
  $value = isset($cookieParts[1])
51
+ ? \trim($cookieParts[1], " \n\r\t\0\x0B")
52
  : true;
53
 
54
  // Only check for non-cookies when cookies have been found
55
+ if (!isset($data['Name'])) {
56
  $data['Name'] = $key;
57
  $data['Value'] = $value;
58
  } else {
59
+ foreach (\array_keys(self::$defaults) as $search) {
60
+ if (!\strcasecmp($search, $key)) {
61
  $data[$search] = $value;
62
  continue 2;
63
  }
74
  */
75
  public function __construct(array $data = [])
76
  {
77
+ /** @var array|null $replaced will be null in case of replace error */
78
+ $replaced = \array_replace(self::$defaults, $data);
79
+ if ($replaced === null) {
80
+ throw new \InvalidArgumentException('Unable to replace the default values for the Cookie.');
81
+ }
82
+
83
+ $this->data = $replaced;
84
  // Extract the Expires value and turn it into a UNIX timestamp if needed
85
  if (!$this->getExpires() && $this->getMaxAge()) {
86
  // Calculate the Expires date
87
+ $this->setExpires(\time() + $this->getMaxAge());
88
+ } elseif (null !== ($expires = $this->getExpires()) && !\is_numeric($expires)) {
89
+ $this->setExpires($expires);
90
  }
91
  }
92
 
93
  public function __toString()
94
  {
95
+ $str = $this->data['Name'] . '=' . ($this->data['Value'] ?? '') . '; ';
96
  foreach ($this->data as $k => $v) {
97
  if ($k !== 'Name' && $k !== 'Value' && $v !== null && $v !== false) {
98
  if ($k === 'Expires') {
99
+ $str .= 'Expires=' . \gmdate('D, d M Y H:i:s \G\M\T', $v) . '; ';
100
  } else {
101
  $str .= ($v === true ? $k : "{$k}={$v}") . '; ';
102
  }
103
  }
104
  }
105
 
106
+ return \rtrim($str, '; ');
107
  }
108
 
109
+ public function toArray(): array
110
  {
111
  return $this->data;
112
  }
113
 
114
  /**
115
+ * Get the cookie name.
116
  *
117
  * @return string
118
  */
122
  }
123
 
124
  /**
125
+ * Set the cookie name.
126
  *
127
  * @param string $name Cookie name
128
  */
129
+ public function setName($name): void
130
  {
131
+ if (!is_string($name)) {
132
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
133
+ }
134
+
135
+ $this->data['Name'] = (string) $name;
136
  }
137
 
138
  /**
139
+ * Get the cookie value.
140
  *
141
+ * @return string|null
142
  */
143
  public function getValue()
144
  {
146
  }
147
 
148
  /**
149
+ * Set the cookie value.
150
  *
151
  * @param string $value Cookie value
152
  */
153
+ public function setValue($value): void
154
  {
155
+ if (!is_string($value)) {
156
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
157
+ }
158
+
159
+ $this->data['Value'] = (string) $value;
160
  }
161
 
162
  /**
163
+ * Get the domain.
164
  *
165
  * @return string|null
166
  */
170
  }
171
 
172
  /**
173
+ * Set the domain of the cookie.
174
  *
175
+ * @param string|null $domain
176
  */
177
+ public function setDomain($domain): void
178
  {
179
+ if (!is_string($domain) && null !== $domain) {
180
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
181
+ }
182
+
183
+ $this->data['Domain'] = null === $domain ? null : (string) $domain;
184
  }
185
 
186
  /**
187
+ * Get the path.
188
  *
189
  * @return string
190
  */
194
  }
195
 
196
  /**
197
+ * Set the path of the cookie.
198
  *
199
  * @param string $path Path of the cookie
200
  */
201
+ public function setPath($path): void
202
  {
203
+ if (!is_string($path)) {
204
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
205
+ }
206
+
207
+ $this->data['Path'] = (string) $path;
208
  }
209
 
210
  /**
211
+ * Maximum lifetime of the cookie in seconds.
212
  *
213
  * @return int|null
214
  */
215
  public function getMaxAge()
216
  {
217
+ return null === $this->data['Max-Age'] ? null : (int) $this->data['Max-Age'];
218
  }
219
 
220
  /**
221
+ * Set the max-age of the cookie.
222
  *
223
+ * @param int|null $maxAge Max age of the cookie in seconds
224
  */
225
+ public function setMaxAge($maxAge): void
226
  {
227
+ if (!is_int($maxAge) && null !== $maxAge) {
228
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
229
+ }
230
+
231
+ $this->data['Max-Age'] = $maxAge === null ? null : (int) $maxAge;
232
  }
233
 
234
  /**
235
+ * The UNIX timestamp when the cookie Expires.
236
  *
237
+ * @return string|int|null
238
  */
239
  public function getExpires()
240
  {
242
  }
243
 
244
  /**
245
+ * Set the unix timestamp for which the cookie will expire.
246
  *
247
+ * @param int|string|null $timestamp Unix timestamp or any English textual datetime description.
248
  */
249
+ public function setExpires($timestamp): void
250
  {
251
+ if (!is_int($timestamp) && !is_string($timestamp) && null !== $timestamp) {
252
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an int, string or null to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
253
+ }
254
+
255
+ $this->data['Expires'] = null === $timestamp ? null : (\is_numeric($timestamp) ? (int) $timestamp : \strtotime((string) $timestamp));
256
  }
257
 
258
  /**
259
+ * Get whether or not this is a secure cookie.
260
  *
261
+ * @return bool
262
  */
263
  public function getSecure()
264
  {
266
  }
267
 
268
  /**
269
+ * Set whether or not the cookie is secure.
270
  *
271
  * @param bool $secure Set to true or false if secure
272
  */
273
+ public function setSecure($secure): void
274
  {
275
+ if (!is_bool($secure)) {
276
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
277
+ }
278
+
279
+ $this->data['Secure'] = (bool) $secure;
280
  }
281
 
282
  /**
283
+ * Get whether or not this is a session cookie.
284
  *
285
  * @return bool|null
286
  */
290
  }
291
 
292
  /**
293
+ * Set whether or not this is a session cookie.
294
  *
295
  * @param bool $discard Set to true or false if this is a session cookie
296
  */
297
+ public function setDiscard($discard): void
298
  {
299
+ if (!is_bool($discard)) {
300
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
301
+ }
302
+
303
+ $this->data['Discard'] = (bool) $discard;
304
  }
305
 
306
  /**
307
+ * Get whether or not this is an HTTP only cookie.
308
  *
309
  * @return bool
310
  */
314
  }
315
 
316
  /**
317
+ * Set whether or not this is an HTTP only cookie.
318
  *
319
  * @param bool $httpOnly Set to true or false if this is HTTP only
320
  */
321
+ public function setHttpOnly($httpOnly): void
322
  {
323
+ if (!is_bool($httpOnly)) {
324
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a bool to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
325
+ }
326
+
327
+ $this->data['HttpOnly'] = (bool) $httpOnly;
328
  }
329
 
330
  /**
341
  * path is a %x2F ("/") character.
342
  *
343
  * @param string $requestPath Path to check against
 
 
344
  */
345
+ public function matchesPath(string $requestPath): bool
346
  {
347
  $cookiePath = $this->getPath();
348
 
352
  }
353
 
354
  // Ensure that the cookie-path is a prefix of the request path.
355
+ if (0 !== \strpos($requestPath, $cookiePath)) {
356
  return false;
357
  }
358
 
359
  // Match if the last character of the cookie-path is "/"
360
+ if (\substr($cookiePath, -1, 1) === '/') {
361
  return true;
362
  }
363
 
364
  // Match if the first character not included in cookie path is "/"
365
+ return \substr($requestPath, \strlen($cookiePath), 1) === '/';
366
  }
367
 
368
  /**
369
+ * Check if the cookie matches a domain value.
370
  *
371
  * @param string $domain Domain to check against
 
 
372
  */
373
+ public function matchesDomain(string $domain): bool
374
  {
375
  $cookieDomain = $this->getDomain();
376
  if (null === $cookieDomain) {
378
  }
379
 
380
  // Remove the leading '.' as per spec in RFC 6265.
381
+ // https://tools.ietf.org/html/rfc6265#section-5.2.3
382
+ $cookieDomain = \ltrim(\strtolower($cookieDomain), '.');
383
 
384
+ $domain = \strtolower($domain);
385
 
386
  // Domain not set or exact match.
387
  if ('' === $cookieDomain || $domain === $cookieDomain) {
389
  }
390
 
391
  // Matching the subdomain according to RFC 6265.
392
+ // https://tools.ietf.org/html/rfc6265#section-5.1.3
393
+ if (\filter_var($domain, \FILTER_VALIDATE_IP)) {
394
  return false;
395
  }
396
 
397
+ return (bool) \preg_match('/\.' . \preg_quote($cookieDomain, '/') . '$/', $domain);
398
  }
399
 
400
  /**
401
+ * Check if the cookie is expired.
 
 
402
  */
403
+ public function isExpired(): bool
404
  {
405
+ return $this->getExpires() !== null && \time() > $this->getExpires();
406
  }
407
 
408
  /**
409
+ * Check if the cookie is valid according to RFC 6265.
410
  *
411
  * @return bool|string Returns true if valid or an error message if invalid
412
  */
413
  public function validate()
414
  {
 
415
  $name = $this->getName();
416
+ if ($name === '') {
417
  return 'The cookie name must not be empty';
418
  }
419
 
420
  // Check if any of the invalid characters are present in the cookie name
421
+ if (\preg_match(
422
  '/[\x00-\x20\x22\x28-\x29\x2c\x2f\x3a-\x40\x5c\x7b\x7d\x7f]/',
423
  $name
424
  )) {
427
  . 'following characters: ()<>@,;:\"/?={}';
428
  }
429
 
430
+ // Value must not be null. 0 and empty string are valid. Empty strings
431
+ // are technically against RFC 6265, but known to happen in the wild.
432
  $value = $this->getValue();
433
+ if ($value === null) {
434
  return 'The cookie value must not be empty';
435
  }
436
 
437
+ // Domains must not be empty, but can be 0. "0" is not a valid internet
438
+ // domain, but may be used as server name in a private network.
 
439
  $domain = $this->getDomain();
440
+ if ($domain === null || $domain === '') {
441
  return 'The cookie domain must not be empty';
442
  }
443
 
vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
  use Psr\Http\Message\RequestInterface;
@@ -10,18 +11,29 @@ use Psr\Http\Message\ResponseInterface;
10
  class BadResponseException extends RequestException
11
  {
12
  public function __construct(
13
- $message,
14
  RequestInterface $request,
15
- ResponseInterface $response = null,
16
- \Exception $previous = null,
17
  array $handlerContext = []
18
  ) {
19
- if (null === $response) {
20
- @trigger_error(
21
- 'Instantiating the ' . __CLASS__ . ' class without a Response is deprecated since version 6.3 and will be removed in 7.0.',
22
- E_USER_DEPRECATED
23
- );
24
- }
25
  parent::__construct($message, $request, $response, $previous, $handlerContext);
26
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
  use Psr\Http\Message\RequestInterface;
11
  class BadResponseException extends RequestException
12
  {
13
  public function __construct(
14
+ string $message,
15
  RequestInterface $request,
16
+ ResponseInterface $response,
17
+ \Throwable $previous = null,
18
  array $handlerContext = []
19
  ) {
 
 
 
 
 
 
20
  parent::__construct($message, $request, $response, $previous, $handlerContext);
21
  }
22
+
23
+ /**
24
+ * Current exception and the ones that extend it will always have a response.
25
+ */
26
+ public function hasResponse(): bool
27
+ {
28
+ return true;
29
+ }
30
+
31
+ /**
32
+ * This function narrows the return type from the parent class and does not allow it to be nullable.
33
+ */
34
+ public function getResponse(): ResponseInterface
35
+ {
36
+ /** @var ResponseInterface */
37
+ return parent::getResponse();
38
+ }
39
  }
vendor/guzzlehttp/guzzle/src/Exception/ClientException.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
  /**
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
  /**
vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
 
4
  use Psr\Http\Message\RequestInterface;
5
 
6
  /**
@@ -8,30 +10,47 @@ use Psr\Http\Message\RequestInterface;
8
  *
9
  * Note that no response is present for a ConnectException
10
  */
11
- class ConnectException extends RequestException
12
  {
 
 
 
 
 
 
 
 
 
 
13
  public function __construct(
14
- $message,
15
  RequestInterface $request,
16
- \Exception $previous = null,
17
  array $handlerContext = []
18
  ) {
19
- parent::__construct($message, $request, null, $previous, $handlerContext);
 
 
20
  }
21
 
22
  /**
23
- * @return null
24
  */
25
- public function getResponse()
26
  {
27
- return null;
28
  }
29
 
30
  /**
31
- * @return bool
 
 
 
 
 
32
  */
33
- public function hasResponse()
34
  {
35
- return false;
36
  }
37
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
+ use Psr\Http\Client\NetworkExceptionInterface;
6
  use Psr\Http\Message\RequestInterface;
7
 
8
  /**
10
  *
11
  * Note that no response is present for a ConnectException
12
  */
13
+ class ConnectException extends TransferException implements NetworkExceptionInterface
14
  {
15
+ /**
16
+ * @var RequestInterface
17
+ */
18
+ private $request;
19
+
20
+ /**
21
+ * @var array
22
+ */
23
+ private $handlerContext;
24
+
25
  public function __construct(
26
+ string $message,
27
  RequestInterface $request,
28
+ \Throwable $previous = null,
29
  array $handlerContext = []
30
  ) {
31
+ parent::__construct($message, 0, $previous);
32
+ $this->request = $request;
33
+ $this->handlerContext = $handlerContext;
34
  }
35
 
36
  /**
37
+ * Get the request that caused the exception
38
  */
39
+ public function getRequest(): RequestInterface
40
  {
41
+ return $this->request;
42
  }
43
 
44
  /**
45
+ * Get contextual information about the error from the underlying handler.
46
+ *
47
+ * The contents of this array will vary depending on which handler you are
48
+ * using. It may also be just an empty array. Relying on this data will
49
+ * couple you to a specific handler, but can give more debug information
50
+ * when needed.
51
  */
52
+ public function getHandlerContext(): array
53
  {
54
+ return $this->handlerContext;
55
  }
56
  }
vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php CHANGED
@@ -1,23 +1,9 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
- use Throwable;
5
 
6
- if (interface_exists(Throwable::class)) {
7
- interface GuzzleException extends Throwable
8
- {
9
- }
10
- } else {
11
- /**
12
- * @method string getMessage()
13
- * @method \Throwable|null getPrevious()
14
- * @method mixed getCode()
15
- * @method string getFile()
16
- * @method int getLine()
17
- * @method array getTrace()
18
- * @method string getTraceAsString()
19
- */
20
- interface GuzzleException
21
- {
22
- }
23
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
+ use Psr\Http\Client\ClientExceptionInterface;
6
 
7
+ interface GuzzleException extends ClientExceptionInterface
8
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  }
vendor/guzzlehttp/guzzle/src/Exception/RequestException.php CHANGED
@@ -1,7 +1,10 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
- use GuzzleHttp\Promise\PromiseInterface;
 
 
5
  use Psr\Http\Message\RequestInterface;
6
  use Psr\Http\Message\ResponseInterface;
7
  use Psr\Http\Message\UriInterface;
@@ -9,28 +12,32 @@ use Psr\Http\Message\UriInterface;
9
  /**
10
  * HTTP Request exception
11
  */
12
- class RequestException extends TransferException
13
  {
14
- /** @var RequestInterface */
 
 
15
  private $request;
16
 
17
- /** @var ResponseInterface|null */
 
 
18
  private $response;
19
 
20
- /** @var array */
 
 
21
  private $handlerContext;
22
 
23
  public function __construct(
24
- $message,
25
  RequestInterface $request,
26
  ResponseInterface $response = null,
27
- \Exception $previous = null,
28
  array $handlerContext = []
29
  ) {
30
  // Set the code of the exception if the response is set and not future.
31
- $code = $response && !($response instanceof PromiseInterface)
32
- ? $response->getStatusCode()
33
- : 0;
34
  parent::__construct($message, $code, $previous);
35
  $this->request = $request;
36
  $this->response = $response;
@@ -39,46 +46,39 @@ class RequestException extends TransferException
39
 
40
  /**
41
  * Wrap non-RequestExceptions with a RequestException
42
- *
43
- * @param RequestInterface $request
44
- * @param \Exception $e
45
- *
46
- * @return RequestException
47
  */
48
- public static function wrapException(RequestInterface $request, \Exception $e)
49
  {
50
- return $e instanceof RequestException
51
- ? $e
52
- : new RequestException($e->getMessage(), $request, null, $e);
53
  }
54
 
55
  /**
56
  * Factory method to create a new exception with a normalized error message
57
  *
58
- * @param RequestInterface $request Request
59
- * @param ResponseInterface $response Response received
60
- * @param \Exception $previous Previous exception
61
- * @param array $ctx Optional handler context.
62
- *
63
- * @return self
64
  */
65
  public static function create(
66
  RequestInterface $request,
67
  ResponseInterface $response = null,
68
- \Exception $previous = null,
69
- array $ctx = []
70
- ) {
 
71
  if (!$response) {
72
  return new self(
73
  'Error completing request',
74
  $request,
75
  null,
76
  $previous,
77
- $ctx
78
  );
79
  }
80
 
81
- $level = (int) floor($response->getStatusCode() / 100);
82
  if ($level === 4) {
83
  $label = 'Client error';
84
  $className = ClientException::class;
@@ -95,51 +95,33 @@ class RequestException extends TransferException
95
 
96
  // Client Error: `GET /` resulted in a `404 Not Found` response:
97
  // <html> ... (truncated)
98
- $message = sprintf(
99
  '%s: `%s %s` resulted in a `%s %s` response',
100
  $label,
101
  $request->getMethod(),
102
- $uri,
103
  $response->getStatusCode(),
104
  $response->getReasonPhrase()
105
  );
106
 
107
- $summary = static::getResponseBodySummary($response);
108
 
109
  if ($summary !== null) {
110
  $message .= ":\n{$summary}\n";
111
  }
112
 
113
- return new $className($message, $request, $response, $previous, $ctx);
114
- }
115
-
116
- /**
117
- * Get a short summary of the response
118
- *
119
- * Will return `null` if the response is not printable.
120
- *
121
- * @param ResponseInterface $response
122
- *
123
- * @return string|null
124
- */
125
- public static function getResponseBodySummary(ResponseInterface $response)
126
- {
127
- return \GuzzleHttp\Psr7\get_message_body_summary($response);
128
  }
129
 
130
  /**
131
  * Obfuscates URI if there is a username and a password present
132
- *
133
- * @param UriInterface $uri
134
- *
135
- * @return UriInterface
136
  */
137
- private static function obfuscateUri(UriInterface $uri)
138
  {
139
  $userInfo = $uri->getUserInfo();
140
 
141
- if (false !== ($pos = strpos($userInfo, ':'))) {
142
- return $uri->withUserInfo(substr($userInfo, 0, $pos), '***');
143
  }
144
 
145
  return $uri;
@@ -147,30 +129,24 @@ class RequestException extends TransferException
147
 
148
  /**
149
  * Get the request that caused the exception
150
- *
151
- * @return RequestInterface
152
  */
153
- public function getRequest()
154
  {
155
  return $this->request;
156
  }
157
 
158
  /**
159
  * Get the associated response
160
- *
161
- * @return ResponseInterface|null
162
  */
163
- public function getResponse()
164
  {
165
  return $this->response;
166
  }
167
 
168
  /**
169
  * Check if a response was received
170
- *
171
- * @return bool
172
  */
173
- public function hasResponse()
174
  {
175
  return $this->response !== null;
176
  }
@@ -182,10 +158,8 @@ class RequestException extends TransferException
182
  * using. It may also be just an empty array. Relying on this data will
183
  * couple you to a specific handler, but can give more debug information
184
  * when needed.
185
- *
186
- * @return array
187
  */
188
- public function getHandlerContext()
189
  {
190
  return $this->handlerContext;
191
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
+ use GuzzleHttp\BodySummarizer;
6
+ use GuzzleHttp\BodySummarizerInterface;
7
+ use Psr\Http\Client\RequestExceptionInterface;
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
10
  use Psr\Http\Message\UriInterface;
12
  /**
13
  * HTTP Request exception
14
  */
15
+ class RequestException extends TransferException implements RequestExceptionInterface
16
  {
17
+ /**
18
+ * @var RequestInterface
19
+ */
20
  private $request;
21
 
22
+ /**
23
+ * @var ResponseInterface|null
24
+ */
25
  private $response;
26
 
27
+ /**
28
+ * @var array
29
+ */
30
  private $handlerContext;
31
 
32
  public function __construct(
33
+ string $message,
34
  RequestInterface $request,
35
  ResponseInterface $response = null,
36
+ \Throwable $previous = null,
37
  array $handlerContext = []
38
  ) {
39
  // Set the code of the exception if the response is set and not future.
40
+ $code = $response ? $response->getStatusCode() : 0;
 
 
41
  parent::__construct($message, $code, $previous);
42
  $this->request = $request;
43
  $this->response = $response;
46
 
47
  /**
48
  * Wrap non-RequestExceptions with a RequestException
 
 
 
 
 
49
  */
50
+ public static function wrapException(RequestInterface $request, \Throwable $e): RequestException
51
  {
52
+ return $e instanceof RequestException ? $e : new RequestException($e->getMessage(), $request, null, $e);
 
 
53
  }
54
 
55
  /**
56
  * Factory method to create a new exception with a normalized error message
57
  *
58
+ * @param RequestInterface $request Request sent
59
+ * @param ResponseInterface $response Response received
60
+ * @param \Throwable|null $previous Previous exception
61
+ * @param array $handlerContext Optional handler context
62
+ * @param BodySummarizerInterface|null $bodySummarizer Optional body summarizer
 
63
  */
64
  public static function create(
65
  RequestInterface $request,
66
  ResponseInterface $response = null,
67
+ \Throwable $previous = null,
68
+ array $handlerContext = [],
69
+ BodySummarizerInterface $bodySummarizer = null
70
+ ): self {
71
  if (!$response) {
72
  return new self(
73
  'Error completing request',
74
  $request,
75
  null,
76
  $previous,
77
+ $handlerContext
78
  );
79
  }
80
 
81
+ $level = (int) \floor($response->getStatusCode() / 100);
82
  if ($level === 4) {
83
  $label = 'Client error';
84
  $className = ClientException::class;
95
 
96
  // Client Error: `GET /` resulted in a `404 Not Found` response:
97
  // <html> ... (truncated)
98
+ $message = \sprintf(
99
  '%s: `%s %s` resulted in a `%s %s` response',
100
  $label,
101
  $request->getMethod(),
102
+ $uri->__toString(),
103
  $response->getStatusCode(),
104
  $response->getReasonPhrase()
105
  );
106
 
107
+ $summary = ($bodySummarizer ?? new BodySummarizer())->summarize($response);
108
 
109
  if ($summary !== null) {
110
  $message .= ":\n{$summary}\n";
111
  }
112
 
113
+ return new $className($message, $request, $response, $previous, $handlerContext);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  }
115
 
116
  /**
117
  * Obfuscates URI if there is a username and a password present
 
 
 
 
118
  */
119
+ private static function obfuscateUri(UriInterface $uri): UriInterface
120
  {
121
  $userInfo = $uri->getUserInfo();
122
 
123
+ if (false !== ($pos = \strpos($userInfo, ':'))) {
124
+ return $uri->withUserInfo(\substr($userInfo, 0, $pos), '***');
125
  }
126
 
127
  return $uri;
129
 
130
  /**
131
  * Get the request that caused the exception
 
 
132
  */
133
+ public function getRequest(): RequestInterface
134
  {
135
  return $this->request;
136
  }
137
 
138
  /**
139
  * Get the associated response
 
 
140
  */
141
+ public function getResponse(): ?ResponseInterface
142
  {
143
  return $this->response;
144
  }
145
 
146
  /**
147
  * Check if a response was received
 
 
148
  */
149
+ public function hasResponse(): bool
150
  {
151
  return $this->response !== null;
152
  }
158
  * using. It may also be just an empty array. Relying on this data will
159
  * couple you to a specific handler, but can give more debug information
160
  * when needed.
 
 
161
  */
162
+ public function getHandlerContext(): array
163
  {
164
  return $this->handlerContext;
165
  }
vendor/guzzlehttp/guzzle/src/Exception/SeekException.php DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
- namespace GuzzleHttp\Exception;
3
-
4
- use Psr\Http\Message\StreamInterface;
5
-
6
- /**
7
- * Exception thrown when a seek fails on a stream.
8
- */
9
- class SeekException extends \RuntimeException implements GuzzleException
10
- {
11
- private $stream;
12
-
13
- public function __construct(StreamInterface $stream, $pos = 0, $msg = '')
14
- {
15
- $this->stream = $stream;
16
- $msg = $msg ?: 'Could not seek the stream to position ' . $pos;
17
- parent::__construct($msg);
18
- }
19
-
20
- /**
21
- * @return StreamInterface
22
- */
23
- public function getStream()
24
- {
25
- return $this->stream;
26
- }
27
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/src/Exception/ServerException.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
  /**
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
  /**
vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
  class TooManyRedirectsException extends RequestException
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
  class TooManyRedirectsException extends RequestException
vendor/guzzlehttp/guzzle/src/Exception/TransferException.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Exception;
3
 
4
  class TransferException extends \RuntimeException implements GuzzleException
1
  <?php
2
+
3
  namespace GuzzleHttp\Exception;
4
 
5
  class TransferException extends \RuntimeException implements GuzzleException
vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php CHANGED
@@ -1,37 +1,50 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use GuzzleHttp\Exception\ConnectException;
5
  use GuzzleHttp\Exception\RequestException;
 
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
- use GuzzleHttp\Psr7;
8
  use GuzzleHttp\Psr7\LazyOpenStream;
9
  use GuzzleHttp\TransferStats;
 
10
  use Psr\Http\Message\RequestInterface;
11
 
12
  /**
13
  * Creates curl resources from a request
 
 
14
  */
15
  class CurlFactory implements CurlFactoryInterface
16
  {
17
- const CURL_VERSION_STR = 'curl_version';
18
- const LOW_CURL_VERSION_NUMBER = '7.21.2';
 
 
 
 
19
 
20
- /** @var array */
 
 
21
  private $handles = [];
22
 
23
- /** @var int Total number of idle handles to keep in cache */
 
 
24
  private $maxHandles;
25
 
26
  /**
27
  * @param int $maxHandles Maximum number of idle handles.
28
  */
29
- public function __construct($maxHandles)
30
  {
31
  $this->maxHandles = $maxHandles;
32
  }
33
 
34
- public function create(RequestInterface $request, array $options)
35
  {
36
  if (isset($options['curl']['body_as_string'])) {
37
  $options['_body_as_string'] = $options['curl']['body_as_string'];
@@ -49,35 +62,33 @@ class CurlFactory implements CurlFactoryInterface
49
 
50
  // Add handler options from the request configuration options
51
  if (isset($options['curl'])) {
52
- $conf = array_replace($conf, $options['curl']);
53
  }
54
 
55
- $conf[CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
56
- $easy->handle = $this->handles
57
- ? array_pop($this->handles)
58
- : curl_init();
59
  curl_setopt_array($easy->handle, $conf);
60
 
61
  return $easy;
62
  }
63
 
64
- public function release(EasyHandle $easy)
65
  {
66
  $resource = $easy->handle;
67
  unset($easy->handle);
68
 
69
- if (count($this->handles) >= $this->maxHandles) {
70
- curl_close($resource);
71
  } else {
72
  // Remove all callback functions as they can hold onto references
73
  // and are not cleaned up by curl_reset. Using curl_setopt_array
74
  // does not work for some reason, so removing each one
75
  // individually.
76
- curl_setopt($resource, CURLOPT_HEADERFUNCTION, null);
77
- curl_setopt($resource, CURLOPT_READFUNCTION, null);
78
- curl_setopt($resource, CURLOPT_WRITEFUNCTION, null);
79
- curl_setopt($resource, CURLOPT_PROGRESSFUNCTION, null);
80
- curl_reset($resource);
81
  $this->handles[] = $resource;
82
  }
83
  }
@@ -86,17 +97,11 @@ class CurlFactory implements CurlFactoryInterface
86
  * Completes a cURL transaction, either returning a response promise or a
87
  * rejected promise.
88
  *
89
- * @param callable $handler
90
- * @param EasyHandle $easy
91
- * @param CurlFactoryInterface $factory Dictates how the handle is released
92
- *
93
- * @return \GuzzleHttp\Promise\PromiseInterface
94
  */
95
- public static function finish(
96
- callable $handler,
97
- EasyHandle $easy,
98
- CurlFactoryInterface $factory
99
- ) {
100
  if (isset($easy->options['on_stats'])) {
101
  self::invokeStats($easy);
102
  }
@@ -117,10 +122,10 @@ class CurlFactory implements CurlFactoryInterface
117
  return new FulfilledPromise($easy->response);
118
  }
119
 
120
- private static function invokeStats(EasyHandle $easy)
121
  {
122
- $curlStats = curl_getinfo($easy->handle);
123
- $curlStats['appconnect_time'] = curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME);
124
  $stats = new TransferStats(
125
  $easy->request,
126
  $easy->response,
@@ -128,47 +133,57 @@ class CurlFactory implements CurlFactoryInterface
128
  $easy->errno,
129
  $curlStats
130
  );
131
- call_user_func($easy->options['on_stats'], $stats);
132
  }
133
 
134
- private static function finishError(
135
- callable $handler,
136
- EasyHandle $easy,
137
- CurlFactoryInterface $factory
138
- ) {
139
  // Get error information and release the handle to the factory.
140
  $ctx = [
141
  'errno' => $easy->errno,
142
- 'error' => curl_error($easy->handle),
143
- 'appconnect_time' => curl_getinfo($easy->handle, CURLINFO_APPCONNECT_TIME),
144
- ] + curl_getinfo($easy->handle);
145
- $ctx[self::CURL_VERSION_STR] = curl_version()['version'];
146
  $factory->release($easy);
147
 
148
  // Retry when nothing is present or when curl failed to rewind.
149
- if (empty($easy->options['_err_message'])
150
- && (!$easy->errno || $easy->errno == 65)
151
- ) {
152
  return self::retryFailedRewind($handler, $easy, $ctx);
153
  }
154
 
155
  return self::createRejection($easy, $ctx);
156
  }
157
 
158
- private static function createRejection(EasyHandle $easy, array $ctx)
159
  {
160
  static $connectionErrors = [
161
- CURLE_OPERATION_TIMEOUTED => true,
162
- CURLE_COULDNT_RESOLVE_HOST => true,
163
- CURLE_COULDNT_CONNECT => true,
164
- CURLE_SSL_CONNECT_ERROR => true,
165
- CURLE_GOT_NOTHING => true,
166
  ];
167
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  // If an exception was encountered during the onHeaders event, then
169
  // return a rejected promise that wraps that exception.
170
  if ($easy->onHeadersException) {
171
- return \GuzzleHttp\Promise\rejection_for(
172
  new RequestException(
173
  'An error was encountered during the on_headers event',
174
  $easy->request,
@@ -178,21 +193,16 @@ class CurlFactory implements CurlFactoryInterface
178
  )
179
  );
180
  }
181
- if (version_compare($ctx[self::CURL_VERSION_STR], self::LOW_CURL_VERSION_NUMBER)) {
182
- $message = sprintf(
183
- 'cURL error %s: %s (%s)',
184
- $ctx['errno'],
185
- $ctx['error'],
186
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
187
- );
188
- } else {
189
- $message = sprintf(
190
- 'cURL error %s: %s (%s) for %s',
191
- $ctx['errno'],
192
- $ctx['error'],
193
- 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html',
194
- $easy->request->getUri()
195
- );
196
  }
197
 
198
  // Create a connection exception if it was a specific error code.
@@ -200,37 +210,40 @@ class CurlFactory implements CurlFactoryInterface
200
  ? new ConnectException($message, $easy->request, null, $ctx)
201
  : new RequestException($message, $easy->request, $easy->response, null, $ctx);
202
 
203
- return \GuzzleHttp\Promise\rejection_for($error);
204
  }
205
 
206
- private function getDefaultConf(EasyHandle $easy)
 
 
 
207
  {
208
  $conf = [
209
- '_headers' => $easy->request->getHeaders(),
210
- CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(),
211
- CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''),
212
- CURLOPT_RETURNTRANSFER => false,
213
- CURLOPT_HEADER => false,
214
- CURLOPT_CONNECTTIMEOUT => 150,
215
  ];
216
 
217
- if (defined('CURLOPT_PROTOCOLS')) {
218
- $conf[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS;
219
  }
220
 
221
  $version = $easy->request->getProtocolVersion();
222
  if ($version == 1.1) {
223
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_1;
224
  } elseif ($version == 2.0) {
225
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_2_0;
226
  } else {
227
- $conf[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
228
  }
229
 
230
  return $conf;
231
  }
232
 
233
- private function applyMethod(EasyHandle $easy, array &$conf)
234
  {
235
  $body = $easy->request->getBody();
236
  $size = $body->getSize();
@@ -242,22 +255,22 @@ class CurlFactory implements CurlFactoryInterface
242
 
243
  $method = $easy->request->getMethod();
244
  if ($method === 'PUT' || $method === 'POST') {
245
- // See http://tools.ietf.org/html/rfc7230#section-3.3.2
246
  if (!$easy->request->hasHeader('Content-Length')) {
247
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
248
  }
249
  } elseif ($method === 'HEAD') {
250
- $conf[CURLOPT_NOBODY] = true;
251
  unset(
252
- $conf[CURLOPT_WRITEFUNCTION],
253
- $conf[CURLOPT_READFUNCTION],
254
- $conf[CURLOPT_FILE],
255
- $conf[CURLOPT_INFILE]
256
  );
257
  }
258
  }
259
 
260
- private function applyBody(RequestInterface $request, array $options, array &$conf)
261
  {
262
  $size = $request->hasHeader('Content-Length')
263
  ? (int) $request->getHeaderLine('Content-Length')
@@ -265,40 +278,38 @@ class CurlFactory implements CurlFactoryInterface
265
 
266
  // Send the body as a string if the size is less than 1MB OR if the
267
  // [curl][body_as_string] request value is set.
268
- if (($size !== null && $size < 1000000) ||
269
- !empty($options['_body_as_string'])
270
- ) {
271
- $conf[CURLOPT_POSTFIELDS] = (string) $request->getBody();
272
  // Don't duplicate the Content-Length header
273
  $this->removeHeader('Content-Length', $conf);
274
  $this->removeHeader('Transfer-Encoding', $conf);
275
  } else {
276
- $conf[CURLOPT_UPLOAD] = true;
277
  if ($size !== null) {
278
- $conf[CURLOPT_INFILESIZE] = $size;
279
  $this->removeHeader('Content-Length', $conf);
280
  }
281
  $body = $request->getBody();
282
  if ($body->isSeekable()) {
283
  $body->rewind();
284
  }
285
- $conf[CURLOPT_READFUNCTION] = function ($ch, $fd, $length) use ($body) {
286
  return $body->read($length);
287
  };
288
  }
289
 
290
  // If the Expect header is not present, prevent curl from adding it
291
  if (!$request->hasHeader('Expect')) {
292
- $conf[CURLOPT_HTTPHEADER][] = 'Expect:';
293
  }
294
 
295
  // cURL sometimes adds a content-type by default. Prevent this.
296
  if (!$request->hasHeader('Content-Type')) {
297
- $conf[CURLOPT_HTTPHEADER][] = 'Content-Type:';
298
  }
299
  }
300
 
301
- private function applyHeaders(EasyHandle $easy, array &$conf)
302
  {
303
  foreach ($conf['_headers'] as $name => $values) {
304
  foreach ($values as $value) {
@@ -306,16 +317,16 @@ class CurlFactory implements CurlFactoryInterface
306
  if ($value === '') {
307
  // cURL requires a special format for empty headers.
308
  // See https://github.com/guzzle/guzzle/issues/1882 for more details.
309
- $conf[CURLOPT_HTTPHEADER][] = "$name;";
310
  } else {
311
- $conf[CURLOPT_HTTPHEADER][] = "$name: $value";
312
  }
313
  }
314
  }
315
 
316
  // Remove the Accept header if one was not set
317
  if (!$easy->request->hasHeader('Accept')) {
318
- $conf[CURLOPT_HTTPHEADER][] = 'Accept:';
319
  }
320
  }
321
 
@@ -325,115 +336,115 @@ class CurlFactory implements CurlFactoryInterface
325
  * @param string $name Case-insensitive header to remove
326
  * @param array $options Array of options to modify
327
  */
328
- private function removeHeader($name, array &$options)
329
  {
330
- foreach (array_keys($options['_headers']) as $key) {
331
- if (!strcasecmp($key, $name)) {
332
  unset($options['_headers'][$key]);
333
  return;
334
  }
335
  }
336
  }
337
 
338
- private function applyHandlerOptions(EasyHandle $easy, array &$conf)
339
  {
340
  $options = $easy->options;
341
  if (isset($options['verify'])) {
342
  if ($options['verify'] === false) {
343
- unset($conf[CURLOPT_CAINFO]);
344
- $conf[CURLOPT_SSL_VERIFYHOST] = 0;
345
- $conf[CURLOPT_SSL_VERIFYPEER] = false;
346
  } else {
347
- $conf[CURLOPT_SSL_VERIFYHOST] = 2;
348
- $conf[CURLOPT_SSL_VERIFYPEER] = true;
349
- if (is_string($options['verify'])) {
350
  // Throw an error if the file/folder/link path is not valid or doesn't exist.
351
- if (!file_exists($options['verify'])) {
352
- throw new \InvalidArgumentException(
353
- "SSL CA bundle not found: {$options['verify']}"
354
- );
355
  }
356
  // If it's a directory or a link to a directory use CURLOPT_CAPATH.
357
  // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
358
- if (is_dir($options['verify']) ||
359
- (is_link($options['verify']) && is_dir(readlink($options['verify'])))) {
360
- $conf[CURLOPT_CAPATH] = $options['verify'];
 
 
 
 
 
 
361
  } else {
362
- $conf[CURLOPT_CAINFO] = $options['verify'];
363
  }
364
  }
365
  }
366
  }
367
 
368
- if (!empty($options['decode_content'])) {
369
  $accept = $easy->request->getHeaderLine('Accept-Encoding');
370
  if ($accept) {
371
- $conf[CURLOPT_ENCODING] = $accept;
372
  } else {
373
- $conf[CURLOPT_ENCODING] = '';
374
- // Don't let curl send the header over the wire
375
- $conf[CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
 
 
 
376
  }
377
  }
378
 
379
- if (isset($options['sink'])) {
380
- $sink = $options['sink'];
381
- if (!is_string($sink)) {
382
- $sink = \GuzzleHttp\Psr7\stream_for($sink);
383
- } elseif (!is_dir(dirname($sink))) {
384
- // Ensure that the directory exists before failing in curl.
385
- throw new \RuntimeException(sprintf(
386
- 'Directory %s does not exist for sink value of %s',
387
- dirname($sink),
388
- $sink
389
- ));
390
- } else {
391
- $sink = new LazyOpenStream($sink, 'w+');
392
- }
393
- $easy->sink = $sink;
394
- $conf[CURLOPT_WRITEFUNCTION] = function ($ch, $write) use ($sink) {
395
- return $sink->write($write);
396
- };
397
- } else {
398
  // Use a default temp stream if no sink was set.
399
- $conf[CURLOPT_FILE] = fopen('php://temp', 'w+');
400
- $easy->sink = Psr7\stream_for($conf[CURLOPT_FILE]);
 
 
 
 
 
 
 
 
401
  }
 
 
 
 
 
402
  $timeoutRequiresNoSignal = false;
403
  if (isset($options['timeout'])) {
404
  $timeoutRequiresNoSignal |= $options['timeout'] < 1;
405
- $conf[CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
406
  }
407
 
408
  // CURL default value is CURL_IPRESOLVE_WHATEVER
409
  if (isset($options['force_ip_resolve'])) {
410
  if ('v4' === $options['force_ip_resolve']) {
411
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4;
412
  } elseif ('v6' === $options['force_ip_resolve']) {
413
- $conf[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V6;
414
  }
415
  }
416
 
417
  if (isset($options['connect_timeout'])) {
418
  $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
419
- $conf[CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
420
  }
421
 
422
- if ($timeoutRequiresNoSignal && strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
423
- $conf[CURLOPT_NOSIGNAL] = true;
424
  }
425
 
426
  if (isset($options['proxy'])) {
427
- if (!is_array($options['proxy'])) {
428
- $conf[CURLOPT_PROXY] = $options['proxy'];
429
  } else {
430
  $scheme = $easy->request->getUri()->getScheme();
431
  if (isset($options['proxy'][$scheme])) {
432
  $host = $easy->request->getUri()->getHost();
433
- if (!isset($options['proxy']['no']) ||
434
- !\GuzzleHttp\is_host_in_noproxy($host, $options['proxy']['no'])
435
- ) {
436
- $conf[CURLOPT_PROXY] = $options['proxy'][$scheme];
437
  }
438
  }
439
  }
@@ -441,58 +452,53 @@ class CurlFactory implements CurlFactoryInterface
441
 
442
  if (isset($options['cert'])) {
443
  $cert = $options['cert'];
444
- if (is_array($cert)) {
445
- $conf[CURLOPT_SSLCERTPASSWD] = $cert[1];
446
  $cert = $cert[0];
447
  }
448
- if (!file_exists($cert)) {
449
- throw new \InvalidArgumentException(
450
- "SSL certificate not found: {$cert}"
451
- );
452
  }
453
- $conf[CURLOPT_SSLCERT] = $cert;
 
 
 
 
 
 
454
  }
455
 
456
  if (isset($options['ssl_key'])) {
457
- if (is_array($options['ssl_key'])) {
458
- if (count($options['ssl_key']) === 2) {
459
- list($sslKey, $conf[CURLOPT_SSLKEYPASSWD]) = $options['ssl_key'];
460
  } else {
461
- list($sslKey) = $options['ssl_key'];
462
  }
463
  }
464
 
465
- $sslKey = isset($sslKey) ? $sslKey: $options['ssl_key'];
466
 
467
- if (!file_exists($sslKey)) {
468
- throw new \InvalidArgumentException(
469
- "SSL private key not found: {$sslKey}"
470
- );
471
  }
472
- $conf[CURLOPT_SSLKEY] = $sslKey;
473
  }
474
 
475
  if (isset($options['progress'])) {
476
  $progress = $options['progress'];
477
- if (!is_callable($progress)) {
478
- throw new \InvalidArgumentException(
479
- 'progress client option must be callable'
480
- );
481
  }
482
- $conf[CURLOPT_NOPROGRESS] = false;
483
- $conf[CURLOPT_PROGRESSFUNCTION] = function () use ($progress) {
484
- $args = func_get_args();
485
- // PHP 5.5 pushed the handle onto the start of the args
486
- if (is_resource($args[0])) {
487
- array_shift($args);
488
- }
489
- call_user_func_array($progress, $args);
490
  };
491
  }
492
 
493
  if (!empty($options['debug'])) {
494
- $conf[CURLOPT_STDERR] = \GuzzleHttp\debug_resource($options['debug']);
495
- $conf[CURLOPT_VERBOSE] = true;
496
  }
497
  }
498
 
@@ -504,12 +510,11 @@ class CurlFactory implements CurlFactoryInterface
504
  * stream, and then encountered a "necessary data rewind wasn't possible"
505
  * error, causing the request to be sent through curl_multi_info_read()
506
  * without an error status.
 
 
507
  */
508
- private static function retryFailedRewind(
509
- callable $handler,
510
- EasyHandle $easy,
511
- array $ctx
512
- ) {
513
  try {
514
  // Only rewind if the body has been read from.
515
  $body = $easy->request->getBody();
@@ -542,27 +547,32 @@ class CurlFactory implements CurlFactoryInterface
542
  return $handler($easy->request, $easy->options);
543
  }
544
 
545
- private function createHeaderFn(EasyHandle $easy)
546
  {
547
  if (isset($easy->options['on_headers'])) {
548
  $onHeaders = $easy->options['on_headers'];
549
 
550
- if (!is_callable($onHeaders)) {
551
  throw new \InvalidArgumentException('on_headers must be callable');
552
  }
553
  } else {
554
  $onHeaders = null;
555
  }
556
 
557
- return function ($ch, $h) use (
558
  $onHeaders,
559
  $easy,
560
  &$startingResponse
561
  ) {
562
- $value = trim($h);
563
  if ($value === '') {
564
  $startingResponse = true;
565
- $easy->createResponse();
 
 
 
 
 
566
  if ($onHeaders !== null) {
567
  try {
568
  $onHeaders($easy->response);
@@ -579,7 +589,7 @@ class CurlFactory implements CurlFactoryInterface
579
  } else {
580
  $easy->headers[] = $value;
581
  }
582
- return strlen($h);
583
  };
584
  }
585
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use GuzzleHttp\Exception\ConnectException;
6
  use GuzzleHttp\Exception\RequestException;
7
+ use GuzzleHttp\Promise as P;
8
  use GuzzleHttp\Promise\FulfilledPromise;
9
+ use GuzzleHttp\Promise\PromiseInterface;
10
  use GuzzleHttp\Psr7\LazyOpenStream;
11
  use GuzzleHttp\TransferStats;
12
+ use GuzzleHttp\Utils;
13
  use Psr\Http\Message\RequestInterface;
14
 
15
  /**
16
  * Creates curl resources from a request
17
+ *
18
+ * @final
19
  */
20
  class CurlFactory implements CurlFactoryInterface
21
  {
22
+ public const CURL_VERSION_STR = 'curl_version';
23
+
24
+ /**
25
+ * @deprecated
26
+ */
27
+ public const LOW_CURL_VERSION_NUMBER = '7.21.2';
28
 
29
+ /**
30
+ * @var resource[]|\CurlHandle[]
31
+ */
32
  private $handles = [];
33
 
34
+ /**
35
+ * @var int Total number of idle handles to keep in cache
36
+ */
37
  private $maxHandles;
38
 
39
  /**
40
  * @param int $maxHandles Maximum number of idle handles.
41
  */
42
+ public function __construct(int $maxHandles)
43
  {
44
  $this->maxHandles = $maxHandles;
45
  }
46
 
47
+ public function create(RequestInterface $request, array $options): EasyHandle
48
  {
49
  if (isset($options['curl']['body_as_string'])) {
50
  $options['_body_as_string'] = $options['curl']['body_as_string'];
62
 
63
  // Add handler options from the request configuration options
64
  if (isset($options['curl'])) {
65
+ $conf = \array_replace($conf, $options['curl']);
66
  }
67
 
68
+ $conf[\CURLOPT_HEADERFUNCTION] = $this->createHeaderFn($easy);
69
+ $easy->handle = $this->handles ? \array_pop($this->handles) : \curl_init();
 
 
70
  curl_setopt_array($easy->handle, $conf);
71
 
72
  return $easy;
73
  }
74
 
75
+ public function release(EasyHandle $easy): void
76
  {
77
  $resource = $easy->handle;
78
  unset($easy->handle);
79
 
80
+ if (\count($this->handles) >= $this->maxHandles) {
81
+ \curl_close($resource);
82
  } else {
83
  // Remove all callback functions as they can hold onto references
84
  // and are not cleaned up by curl_reset. Using curl_setopt_array
85
  // does not work for some reason, so removing each one
86
  // individually.
87
+ \curl_setopt($resource, \CURLOPT_HEADERFUNCTION, null);
88
+ \curl_setopt($resource, \CURLOPT_READFUNCTION, null);
89
+ \curl_setopt($resource, \CURLOPT_WRITEFUNCTION, null);
90
+ \curl_setopt($resource, \CURLOPT_PROGRESSFUNCTION, null);
91
+ \curl_reset($resource);
92
  $this->handles[] = $resource;
93
  }
94
  }
97
  * Completes a cURL transaction, either returning a response promise or a
98
  * rejected promise.
99
  *
100
+ * @param callable(RequestInterface, array): PromiseInterface $handler
101
+ * @param CurlFactoryInterface $factory Dictates how the handle is released
 
 
 
102
  */
103
+ public static function finish(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
104
+ {
 
 
 
105
  if (isset($easy->options['on_stats'])) {
106
  self::invokeStats($easy);
107
  }
122
  return new FulfilledPromise($easy->response);
123
  }
124
 
125
+ private static function invokeStats(EasyHandle $easy): void
126
  {
127
+ $curlStats = \curl_getinfo($easy->handle);
128
+ $curlStats['appconnect_time'] = \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME);
129
  $stats = new TransferStats(
130
  $easy->request,
131
  $easy->response,
133
  $easy->errno,
134
  $curlStats
135
  );
136
+ ($easy->options['on_stats'])($stats);
137
  }
138
 
139
+ /**
140
+ * @param callable(RequestInterface, array): PromiseInterface $handler
141
+ */
142
+ private static function finishError(callable $handler, EasyHandle $easy, CurlFactoryInterface $factory): PromiseInterface
143
+ {
144
  // Get error information and release the handle to the factory.
145
  $ctx = [
146
  'errno' => $easy->errno,
147
+ 'error' => \curl_error($easy->handle),
148
+ 'appconnect_time' => \curl_getinfo($easy->handle, \CURLINFO_APPCONNECT_TIME),
149
+ ] + \curl_getinfo($easy->handle);
150
+ $ctx[self::CURL_VERSION_STR] = \curl_version()['version'];
151
  $factory->release($easy);
152
 
153
  // Retry when nothing is present or when curl failed to rewind.
154
+ if (empty($easy->options['_err_message']) && (!$easy->errno || $easy->errno == 65)) {
 
 
155
  return self::retryFailedRewind($handler, $easy, $ctx);
156
  }
157
 
158
  return self::createRejection($easy, $ctx);
159
  }
160
 
161
+ private static function createRejection(EasyHandle $easy, array $ctx): PromiseInterface
162
  {
163
  static $connectionErrors = [
164
+ \CURLE_OPERATION_TIMEOUTED => true,
165
+ \CURLE_COULDNT_RESOLVE_HOST => true,
166
+ \CURLE_COULDNT_CONNECT => true,
167
+ \CURLE_SSL_CONNECT_ERROR => true,
168
+ \CURLE_GOT_NOTHING => true,
169
  ];
170
 
171
+ if ($easy->createResponseException) {
172
+ return P\Create::rejectionFor(
173
+ new RequestException(
174
+ 'An error was encountered while creating the response',
175
+ $easy->request,
176
+ $easy->response,
177
+ $easy->createResponseException,
178
+ $ctx
179
+ )
180
+ );
181
+ }
182
+
183
  // If an exception was encountered during the onHeaders event, then
184
  // return a rejected promise that wraps that exception.
185
  if ($easy->onHeadersException) {
186
+ return P\Create::rejectionFor(
187
  new RequestException(
188
  'An error was encountered during the on_headers event',
189
  $easy->request,
193
  )
194
  );
195
  }
196
+
197
+ $message = \sprintf(
198
+ 'cURL error %s: %s (%s)',
199
+ $ctx['errno'],
200
+ $ctx['error'],
201
+ 'see https://curl.haxx.se/libcurl/c/libcurl-errors.html'
202
+ );
203
+ $uriString = (string) $easy->request->getUri();
204
+ if ($uriString !== '' && false === \strpos($ctx['error'], $uriString)) {
205
+ $message .= \sprintf(' for %s', $uriString);
 
 
 
 
 
206
  }
207
 
208
  // Create a connection exception if it was a specific error code.
210
  ? new ConnectException($message, $easy->request, null, $ctx)
211
  : new RequestException($message, $easy->request, $easy->response, null, $ctx);
212
 
213
+ return P\Create::rejectionFor($error);
214
  }
215
 
216
+ /**
217
+ * @return array<int|string, mixed>
218
+ */
219
+ private function getDefaultConf(EasyHandle $easy): array
220
  {
221
  $conf = [
222
+ '_headers' => $easy->request->getHeaders(),
223
+ \CURLOPT_CUSTOMREQUEST => $easy->request->getMethod(),
224
+ \CURLOPT_URL => (string) $easy->request->getUri()->withFragment(''),
225
+ \CURLOPT_RETURNTRANSFER => false,
226
+ \CURLOPT_HEADER => false,
227
+ \CURLOPT_CONNECTTIMEOUT => 150,
228
  ];
229
 
230
+ if (\defined('CURLOPT_PROTOCOLS')) {
231
+ $conf[\CURLOPT_PROTOCOLS] = \CURLPROTO_HTTP | \CURLPROTO_HTTPS;
232
  }
233
 
234
  $version = $easy->request->getProtocolVersion();
235
  if ($version == 1.1) {
236
+ $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_1;
237
  } elseif ($version == 2.0) {
238
+ $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_2_0;
239
  } else {
240
+ $conf[\CURLOPT_HTTP_VERSION] = \CURL_HTTP_VERSION_1_0;
241
  }
242
 
243
  return $conf;
244
  }
245
 
246
+ private function applyMethod(EasyHandle $easy, array &$conf): void
247
  {
248
  $body = $easy->request->getBody();
249
  $size = $body->getSize();
255
 
256
  $method = $easy->request->getMethod();
257
  if ($method === 'PUT' || $method === 'POST') {
258
+ // See https://tools.ietf.org/html/rfc7230#section-3.3.2
259
  if (!$easy->request->hasHeader('Content-Length')) {
260
+ $conf[\CURLOPT_HTTPHEADER][] = 'Content-Length: 0';
261
  }
262
  } elseif ($method === 'HEAD') {
263
+ $conf[\CURLOPT_NOBODY] = true;
264
  unset(
265
+ $conf[\CURLOPT_WRITEFUNCTION],
266
+ $conf[\CURLOPT_READFUNCTION],
267
+ $conf[\CURLOPT_FILE],
268
+ $conf[\CURLOPT_INFILE]
269
  );
270
  }
271
  }
272
 
273
+ private function applyBody(RequestInterface $request, array $options, array &$conf): void
274
  {
275
  $size = $request->hasHeader('Content-Length')
276
  ? (int) $request->getHeaderLine('Content-Length')
278
 
279
  // Send the body as a string if the size is less than 1MB OR if the
280
  // [curl][body_as_string] request value is set.
281
+ if (($size !== null && $size < 1000000) || !empty($options['_body_as_string'])) {
282
+ $conf[\CURLOPT_POSTFIELDS] = (string) $request->getBody();
 
 
283
  // Don't duplicate the Content-Length header
284
  $this->removeHeader('Content-Length', $conf);
285
  $this->removeHeader('Transfer-Encoding', $conf);
286
  } else {
287
+ $conf[\CURLOPT_UPLOAD] = true;
288
  if ($size !== null) {
289
+ $conf[\CURLOPT_INFILESIZE] = $size;
290
  $this->removeHeader('Content-Length', $conf);
291
  }
292
  $body = $request->getBody();
293
  if ($body->isSeekable()) {
294
  $body->rewind();
295
  }
296
+ $conf[\CURLOPT_READFUNCTION] = static function ($ch, $fd, $length) use ($body) {
297
  return $body->read($length);
298
  };
299
  }
300
 
301
  // If the Expect header is not present, prevent curl from adding it
302
  if (!$request->hasHeader('Expect')) {
303
+ $conf[\CURLOPT_HTTPHEADER][] = 'Expect:';
304
  }
305
 
306
  // cURL sometimes adds a content-type by default. Prevent this.
307
  if (!$request->hasHeader('Content-Type')) {
308
+ $conf[\CURLOPT_HTTPHEADER][] = 'Content-Type:';
309
  }
310
  }
311
 
312
+ private function applyHeaders(EasyHandle $easy, array &$conf): void
313
  {
314
  foreach ($conf['_headers'] as $name => $values) {
315
  foreach ($values as $value) {
317
  if ($value === '') {
318
  // cURL requires a special format for empty headers.
319
  // See https://github.com/guzzle/guzzle/issues/1882 for more details.
320
+ $conf[\CURLOPT_HTTPHEADER][] = "$name;";
321
  } else {
322
+ $conf[\CURLOPT_HTTPHEADER][] = "$name: $value";
323
  }
324
  }
325
  }
326
 
327
  // Remove the Accept header if one was not set
328
  if (!$easy->request->hasHeader('Accept')) {
329
+ $conf[\CURLOPT_HTTPHEADER][] = 'Accept:';
330
  }
331
  }
332
 
336
  * @param string $name Case-insensitive header to remove
337
  * @param array $options Array of options to modify
338
  */
339
+ private function removeHeader(string $name, array &$options): void
340
  {
341
+ foreach (\array_keys($options['_headers']) as $key) {
342
+ if (!\strcasecmp($key, $name)) {
343
  unset($options['_headers'][$key]);
344
  return;
345
  }
346
  }
347
  }
348
 
349
+ private function applyHandlerOptions(EasyHandle $easy, array &$conf): void
350
  {
351
  $options = $easy->options;
352
  if (isset($options['verify'])) {
353
  if ($options['verify'] === false) {
354
+ unset($conf[\CURLOPT_CAINFO]);
355
+ $conf[\CURLOPT_SSL_VERIFYHOST] = 0;
356
+ $conf[\CURLOPT_SSL_VERIFYPEER] = false;
357
  } else {
358
+ $conf[\CURLOPT_SSL_VERIFYHOST] = 2;
359
+ $conf[\CURLOPT_SSL_VERIFYPEER] = true;
360
+ if (\is_string($options['verify'])) {
361
  // Throw an error if the file/folder/link path is not valid or doesn't exist.
362
+ if (!\file_exists($options['verify'])) {
363
+ throw new \InvalidArgumentException("SSL CA bundle not found: {$options['verify']}");
 
 
364
  }
365
  // If it's a directory or a link to a directory use CURLOPT_CAPATH.
366
  // If not, it's probably a file, or a link to a file, so use CURLOPT_CAINFO.
367
+ if (
368
+ \is_dir($options['verify']) ||
369
+ (
370
+ \is_link($options['verify']) === true &&
371
+ ($verifyLink = \readlink($options['verify'])) !== false &&
372
+ \is_dir($verifyLink)
373
+ )
374
+ ) {
375
+ $conf[\CURLOPT_CAPATH] = $options['verify'];
376
  } else {
377
+ $conf[\CURLOPT_CAINFO] = $options['verify'];
378
  }
379
  }
380
  }
381
  }
382
 
383
+ if (!isset($options['curl'][\CURLOPT_ENCODING]) && !empty($options['decode_content'])) {
384
  $accept = $easy->request->getHeaderLine('Accept-Encoding');
385
  if ($accept) {
386
+ $conf[\CURLOPT_ENCODING] = $accept;
387
  } else {
388
+ // The empty string enables all available decoders and implicitly
389
+ // sets a matching 'Accept-Encoding' header.
390
+ $conf[\CURLOPT_ENCODING] = '';
391
+ // But as the user did not specify any acceptable encodings we need
392
+ // to overwrite this implicit header with an empty one.
393
+ $conf[\CURLOPT_HTTPHEADER][] = 'Accept-Encoding:';
394
  }
395
  }
396
 
397
+ if (!isset($options['sink'])) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
398
  // Use a default temp stream if no sink was set.
399
+ $options['sink'] = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+');
400
+ }
401
+ $sink = $options['sink'];
402
+ if (!\is_string($sink)) {
403
+ $sink = \GuzzleHttp\Psr7\Utils::streamFor($sink);
404
+ } elseif (!\is_dir(\dirname($sink))) {
405
+ // Ensure that the directory exists before failing in curl.
406
+ throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink));
407
+ } else {
408
+ $sink = new LazyOpenStream($sink, 'w+');
409
  }
410
+ $easy->sink = $sink;
411
+ $conf[\CURLOPT_WRITEFUNCTION] = static function ($ch, $write) use ($sink): int {
412
+ return $sink->write($write);
413
+ };
414
+
415
  $timeoutRequiresNoSignal = false;
416
  if (isset($options['timeout'])) {
417
  $timeoutRequiresNoSignal |= $options['timeout'] < 1;
418
+ $conf[\CURLOPT_TIMEOUT_MS] = $options['timeout'] * 1000;
419
  }
420
 
421
  // CURL default value is CURL_IPRESOLVE_WHATEVER
422
  if (isset($options['force_ip_resolve'])) {
423
  if ('v4' === $options['force_ip_resolve']) {
424
+ $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V4;
425
  } elseif ('v6' === $options['force_ip_resolve']) {
426
+ $conf[\CURLOPT_IPRESOLVE] = \CURL_IPRESOLVE_V6;
427
  }
428
  }
429
 
430
  if (isset($options['connect_timeout'])) {
431
  $timeoutRequiresNoSignal |= $options['connect_timeout'] < 1;
432
+ $conf[\CURLOPT_CONNECTTIMEOUT_MS] = $options['connect_timeout'] * 1000;
433
  }
434
 
435
+ if ($timeoutRequiresNoSignal && \strtoupper(\substr(\PHP_OS, 0, 3)) !== 'WIN') {
436
+ $conf[\CURLOPT_NOSIGNAL] = true;
437
  }
438
 
439
  if (isset($options['proxy'])) {
440
+ if (!\is_array($options['proxy'])) {
441
+ $conf[\CURLOPT_PROXY] = $options['proxy'];
442
  } else {
443
  $scheme = $easy->request->getUri()->getScheme();
444
  if (isset($options['proxy'][$scheme])) {
445
  $host = $easy->request->getUri()->getHost();
446
+ if (!isset($options['proxy']['no']) || !Utils::isHostInNoProxy($host, $options['proxy']['no'])) {
447
+ $conf[\CURLOPT_PROXY] = $options['proxy'][$scheme];
 
 
448
  }
449
  }
450
  }
452
 
453
  if (isset($options['cert'])) {
454
  $cert = $options['cert'];
455
+ if (\is_array($cert)) {
456
+ $conf[\CURLOPT_SSLCERTPASSWD] = $cert[1];
457
  $cert = $cert[0];
458
  }
459
+ if (!\file_exists($cert)) {
460
+ throw new \InvalidArgumentException("SSL certificate not found: {$cert}");
 
 
461
  }
462
+ # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files.
463
+ # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html
464
+ $ext = pathinfo($cert, \PATHINFO_EXTENSION);
465
+ if (preg_match('#^(der|p12)$#i', $ext)) {
466
+ $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext);
467
+ }
468
+ $conf[\CURLOPT_SSLCERT] = $cert;
469
  }
470
 
471
  if (isset($options['ssl_key'])) {
472
+ if (\is_array($options['ssl_key'])) {
473
+ if (\count($options['ssl_key']) === 2) {
474
+ [$sslKey, $conf[\CURLOPT_SSLKEYPASSWD]] = $options['ssl_key'];
475
  } else {
476
+ [$sslKey] = $options['ssl_key'];
477
  }
478
  }
479
 
480
+ $sslKey = $sslKey ?? $options['ssl_key'];
481
 
482
+ if (!\file_exists($sslKey)) {
483
+ throw new \InvalidArgumentException("SSL private key not found: {$sslKey}");
 
 
484
  }
485
+ $conf[\CURLOPT_SSLKEY] = $sslKey;
486
  }
487
 
488
  if (isset($options['progress'])) {
489
  $progress = $options['progress'];
490
+ if (!\is_callable($progress)) {
491
+ throw new \InvalidArgumentException('progress client option must be callable');
 
 
492
  }
493
+ $conf[\CURLOPT_NOPROGRESS] = false;
494
+ $conf[\CURLOPT_PROGRESSFUNCTION] = static function ($resource, int $downloadSize, int $downloaded, int $uploadSize, int $uploaded) use ($progress) {
495
+ $progress($downloadSize, $downloaded, $uploadSize, $uploaded);
 
 
 
 
 
496
  };
497
  }
498
 
499
  if (!empty($options['debug'])) {
500
+ $conf[\CURLOPT_STDERR] = Utils::debugResource($options['debug']);
501
+ $conf[\CURLOPT_VERBOSE] = true;
502
  }
503
  }
504
 
510
  * stream, and then encountered a "necessary data rewind wasn't possible"
511
  * error, causing the request to be sent through curl_multi_info_read()
512
  * without an error status.
513
+ *
514
+ * @param callable(RequestInterface, array): PromiseInterface $handler
515
  */
516
+ private static function retryFailedRewind(callable $handler, EasyHandle $easy, array $ctx): PromiseInterface
517
+ {
 
 
 
518
  try {
519
  // Only rewind if the body has been read from.
520
  $body = $easy->request->getBody();
547
  return $handler($easy->request, $easy->options);
548
  }
549
 
550
+ private function createHeaderFn(EasyHandle $easy): callable
551
  {
552
  if (isset($easy->options['on_headers'])) {
553
  $onHeaders = $easy->options['on_headers'];
554
 
555
+ if (!\is_callable($onHeaders)) {
556
  throw new \InvalidArgumentException('on_headers must be callable');
557
  }
558
  } else {
559
  $onHeaders = null;
560
  }
561
 
562
+ return static function ($ch, $h) use (
563
  $onHeaders,
564
  $easy,
565
  &$startingResponse
566
  ) {
567
+ $value = \trim($h);
568
  if ($value === '') {
569
  $startingResponse = true;
570
+ try {
571
+ $easy->createResponse();
572
+ } catch (\Exception $e) {
573
+ $easy->createResponseException = $e;
574
+ return -1;
575
+ }
576
  if ($onHeaders !== null) {
577
  try {
578
  $onHeaders($easy->response);
589
  } else {
590
  $easy->headers[] = $value;
591
  }
592
+ return \strlen($h);
593
  };
594
  }
595
  }
vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use Psr\Http\Message\RequestInterface;
@@ -11,17 +12,14 @@ interface CurlFactoryInterface
11
  * @param RequestInterface $request Request
12
  * @param array $options Transfer options
13
  *
14
- * @return EasyHandle
15
  * @throws \RuntimeException when an option cannot be applied
16
  */
17
- public function create(RequestInterface $request, array $options);
18
 
19
  /**
20
  * Release an easy handle, allowing it to be reused or closed.
21
  *
22
  * This function must call unset on the easy handle's "handle" property.
23
- *
24
- * @param EasyHandle $easy
25
  */
26
- public function release(EasyHandle $easy);
27
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use Psr\Http\Message\RequestInterface;
12
  * @param RequestInterface $request Request
13
  * @param array $options Transfer options
14
  *
 
15
  * @throws \RuntimeException when an option cannot be applied
16
  */
17
+ public function create(RequestInterface $request, array $options): EasyHandle;
18
 
19
  /**
20
  * Release an easy handle, allowing it to be reused or closed.
21
  *
22
  * This function must call unset on the easy handle's "handle" property.
 
 
23
  */
24
+ public function release(EasyHandle $easy): void;
25
  }
vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php CHANGED
@@ -1,7 +1,8 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
- use GuzzleHttp\Psr7;
5
  use Psr\Http\Message\RequestInterface;
6
 
7
  /**
@@ -10,35 +11,38 @@ use Psr\Http\Message\RequestInterface;
10
  * When using the CurlHandler, custom curl options can be specified as an
11
  * associative array of curl option constants mapping to values in the
12
  * **curl** key of the "client" key of the request.
 
 
13
  */
14
  class CurlHandler
15
  {
16
- /** @var CurlFactoryInterface */
 
 
17
  private $factory;
18
 
19
  /**
20
  * Accepts an associative array of options:
21
  *
22
- * - factory: Optional curl factory used to create cURL handles.
23
  *
24
- * @param array $options Array of options to use with the handler
25
  */
26
  public function __construct(array $options = [])
27
  {
28
- $this->factory = isset($options['handle_factory'])
29
- ? $options['handle_factory']
30
- : new CurlFactory(3);
31
  }
32
 
33
- public function __invoke(RequestInterface $request, array $options)
34
  {
35
  if (isset($options['delay'])) {
36
- usleep($options['delay'] * 1000);
37
  }
38
 
39
  $easy = $this->factory->create($request, $options);
40
- curl_exec($easy->handle);
41
- $easy->errno = curl_errno($easy->handle);
42
 
43
  return CurlFactory::finish($this, $easy, $this->factory);
44
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
+ use GuzzleHttp\Promise\PromiseInterface;
6
  use Psr\Http\Message\RequestInterface;
7
 
8
  /**
11
  * When using the CurlHandler, custom curl options can be specified as an
12
  * associative array of curl option constants mapping to values in the
13
  * **curl** key of the "client" key of the request.
14
+ *
15
+ * @final
16
  */
17
  class CurlHandler
18
  {
19
+ /**
20
+ * @var CurlFactoryInterface
21
+ */
22
  private $factory;
23
 
24
  /**
25
  * Accepts an associative array of options:
26
  *
27
+ * - handle_factory: Optional curl factory used to create cURL handles.
28
  *
29
+ * @param array{handle_factory?: ?CurlFactoryInterface} $options Array of options to use with the handler
30
  */
31
  public function __construct(array $options = [])
32
  {
33
+ $this->factory = $options['handle_factory']
34
+ ?? new CurlFactory(3);
 
35
  }
36
 
37
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
38
  {
39
  if (isset($options['delay'])) {
40
+ \usleep($options['delay'] * 1000);
41
  }
42
 
43
  $easy = $this->factory->create($request, $options);
44
+ \curl_exec($easy->handle);
45
+ $easy->errno = \curl_errno($easy->handle);
46
 
47
  return CurlFactory::finish($this, $easy, $this->factory);
48
  }
vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php CHANGED
@@ -1,8 +1,10 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use GuzzleHttp\Promise as P;
5
  use GuzzleHttp\Promise\Promise;
 
6
  use GuzzleHttp\Utils;
7
  use Psr\Http\Message\RequestInterface;
8
 
@@ -13,16 +15,44 @@ use Psr\Http\Message\RequestInterface;
13
  * associative array of curl option constants mapping to values in the
14
  * **curl** key of the provided request options.
15
  *
16
- * @property resource $_mh Internal use only. Lazy loaded multi-handle.
 
 
17
  */
18
  class CurlMultiHandler
19
  {
20
- /** @var CurlFactoryInterface */
 
 
21
  private $factory;
 
 
 
 
22
  private $selectTimeout;
23
- private $active;
 
 
 
 
 
 
 
 
 
 
24
  private $handles = [];
 
 
 
 
 
 
25
  private $delays = [];
 
 
 
 
26
  private $options = [];
27
 
28
  /**
@@ -33,52 +63,62 @@ class CurlMultiHandler
33
  * out while selecting curl handles. Defaults to 1 second.
34
  * - options: An associative array of CURLMOPT_* options and
35
  * corresponding values for curl_multi_setopt()
36
- *
37
- * @param array $options
38
  */
39
  public function __construct(array $options = [])
40
  {
41
- $this->factory = isset($options['handle_factory'])
42
- ? $options['handle_factory'] : new CurlFactory(50);
43
 
44
  if (isset($options['select_timeout'])) {
45
  $this->selectTimeout = $options['select_timeout'];
46
- } elseif ($selectTimeout = getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
47
- $this->selectTimeout = $selectTimeout;
 
48
  } else {
49
  $this->selectTimeout = 1;
50
  }
51
 
52
- $this->options = isset($options['options']) ? $options['options'] : [];
53
  }
54
 
 
 
 
 
 
 
 
 
55
  public function __get($name)
56
  {
57
- if ($name === '_mh') {
58
- $this->_mh = curl_multi_init();
 
59
 
60
- foreach ($this->options as $option => $value) {
61
- // A warning is raised in case of a wrong option.
62
- curl_multi_setopt($this->_mh, $option, $value);
63
- }
 
 
 
64
 
65
- // Further calls to _mh will return the value directly, without entering the
66
- // __get() method at all.
67
- return $this->_mh;
68
  }
69
 
70
- throw new \BadMethodCallException();
71
  }
72
 
73
  public function __destruct()
74
  {
75
  if (isset($this->_mh)) {
76
- curl_multi_close($this->_mh);
77
  unset($this->_mh);
78
  }
79
  }
80
 
81
- public function __invoke(RequestInterface $request, array $options)
82
  {
83
  $easy = $this->factory->create($request, $options);
84
  $id = (int) $easy->handle;
@@ -98,7 +138,7 @@ class CurlMultiHandler
98
  /**
99
  * Ticks the curl event loop.
100
  */
101
- public function tick()
102
  {
103
  // Add any delayed handles if needed.
104
  if ($this->delays) {
@@ -106,7 +146,7 @@ class CurlMultiHandler
106
  foreach ($this->delays as $id => $delay) {
107
  if ($currentTime >= $delay) {
108
  unset($this->delays[$id]);
109
- curl_multi_add_handle(
110
  $this->_mh,
111
  $this->handles[$id]['easy']->handle
112
  );
@@ -115,17 +155,15 @@ class CurlMultiHandler
115
  }
116
 
117
  // Step through the task queue which may add additional requests.
118
- P\queue()->run();
119
 
120
- if ($this->active &&
121
- curl_multi_select($this->_mh, $this->selectTimeout) === -1
122
- ) {
123
  // Perform a usleep if a select returns -1.
124
  // See: https://bugs.php.net/bug.php?id=61141
125
- usleep(250);
126
  }
127
 
128
- while (curl_multi_exec($this->_mh, $this->active) === CURLM_CALL_MULTI_PERFORM);
129
 
130
  $this->processMessages();
131
  }
@@ -133,26 +171,26 @@ class CurlMultiHandler
133
  /**
134
  * Runs until all outstanding connections have completed.
135
  */
136
- public function execute()
137
  {
138
- $queue = P\queue();
139
 
140
  while ($this->handles || !$queue->isEmpty()) {
141
  // If there are no transfers, then sleep for the next delay
142
  if (!$this->active && $this->delays) {
143
- usleep($this->timeToNext());
144
  }
145
  $this->tick();
146
  }
147
  }
148
 
149
- private function addRequest(array $entry)
150
  {
151
  $easy = $entry['easy'];
152
  $id = (int) $easy->handle;
153
  $this->handles[$id] = $entry;
154
  if (empty($easy->options['delay'])) {
155
- curl_multi_add_handle($this->_mh, $easy->handle);
156
  } else {
157
  $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
158
  }
@@ -165,8 +203,12 @@ class CurlMultiHandler
165
  *
166
  * @return bool True on success, false on failure.
167
  */
168
- private function cancel($id)
169
  {
 
 
 
 
170
  // Cannot cancel if it has been processed.
171
  if (!isset($this->handles[$id])) {
172
  return false;
@@ -174,17 +216,21 @@ class CurlMultiHandler
174
 
175
  $handle = $this->handles[$id]['easy']->handle;
176
  unset($this->delays[$id], $this->handles[$id]);
177
- curl_multi_remove_handle($this->_mh, $handle);
178
- curl_close($handle);
179
 
180
  return true;
181
  }
182
 
183
- private function processMessages()
184
  {
185
- while ($done = curl_multi_info_read($this->_mh)) {
 
 
 
 
186
  $id = (int) $done['handle'];
187
- curl_multi_remove_handle($this->_mh, $done['handle']);
188
 
189
  if (!isset($this->handles[$id])) {
190
  // Probably was cancelled.
@@ -195,25 +241,21 @@ class CurlMultiHandler
195
  unset($this->handles[$id], $this->delays[$id]);
196
  $entry['easy']->errno = $done['result'];
197
  $entry['deferred']->resolve(
198
- CurlFactory::finish(
199
- $this,
200
- $entry['easy'],
201
- $this->factory
202
- )
203
  );
204
  }
205
  }
206
 
207
- private function timeToNext()
208
  {
209
  $currentTime = Utils::currentTime();
210
- $nextTime = PHP_INT_MAX;
211
  foreach ($this->delays as $time) {
212
  if ($time < $nextTime) {
213
  $nextTime = $time;
214
  }
215
  }
216
 
217
- return max(0, $nextTime - $currentTime) * 1000000;
218
  }
219
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use GuzzleHttp\Promise as P;
6
  use GuzzleHttp\Promise\Promise;
7
+ use GuzzleHttp\Promise\PromiseInterface;
8
  use GuzzleHttp\Utils;
9
  use Psr\Http\Message\RequestInterface;
10
 
15
  * associative array of curl option constants mapping to values in the
16
  * **curl** key of the provided request options.
17
  *
18
+ * @property resource|\CurlMultiHandle $_mh Internal use only. Lazy loaded multi-handle.
19
+ *
20
+ * @final
21
  */
22
  class CurlMultiHandler
23
  {
24
+ /**
25
+ * @var CurlFactoryInterface
26
+ */
27
  private $factory;
28
+
29
+ /**
30
+ * @var int
31
+ */
32
  private $selectTimeout;
33
+
34
+ /**
35
+ * @var int Will be higher than 0 when `curl_multi_exec` is still running.
36
+ */
37
+ private $active = 0;
38
+
39
+ /**
40
+ * @var array Request entry handles, indexed by handle id in `addRequest`.
41
+ *
42
+ * @see CurlMultiHandler::addRequest
43
+ */
44
  private $handles = [];
45
+
46
+ /**
47
+ * @var array<int, float> An array of delay times, indexed by handle id in `addRequest`.
48
+ *
49
+ * @see CurlMultiHandler::addRequest
50
+ */
51
  private $delays = [];
52
+
53
+ /**
54
+ * @var array<mixed> An associative array of CURLMOPT_* options and corresponding values for curl_multi_setopt()
55
+ */
56
  private $options = [];
57
 
58
  /**
63
  * out while selecting curl handles. Defaults to 1 second.
64
  * - options: An associative array of CURLMOPT_* options and
65
  * corresponding values for curl_multi_setopt()
 
 
66
  */
67
  public function __construct(array $options = [])
68
  {
69
+ $this->factory = $options['handle_factory'] ?? new CurlFactory(50);
 
70
 
71
  if (isset($options['select_timeout'])) {
72
  $this->selectTimeout = $options['select_timeout'];
73
+ } elseif ($selectTimeout = Utils::getenv('GUZZLE_CURL_SELECT_TIMEOUT')) {
74
+ @trigger_error('Since guzzlehttp/guzzle 7.2.0: Using environment variable GUZZLE_CURL_SELECT_TIMEOUT is deprecated. Use option "select_timeout" instead.', \E_USER_DEPRECATED);
75
+ $this->selectTimeout = (int) $selectTimeout;
76
  } else {
77
  $this->selectTimeout = 1;
78
  }
79
 
80
+ $this->options = $options['options'] ?? [];
81
  }
82
 
83
+ /**
84
+ * @param string $name
85
+ *
86
+ * @return resource|\CurlMultiHandle
87
+ *
88
+ * @throws \BadMethodCallException when another field as `_mh` will be gotten
89
+ * @throws \RuntimeException when curl can not initialize a multi handle
90
+ */
91
  public function __get($name)
92
  {
93
+ if ($name !== '_mh') {
94
+ throw new \BadMethodCallException("Can not get other property as '_mh'.");
95
+ }
96
 
97
+ $multiHandle = \curl_multi_init();
98
+
99
+ if (false === $multiHandle) {
100
+ throw new \RuntimeException('Can not initialize curl multi handle.');
101
+ }
102
+
103
+ $this->_mh = $multiHandle;
104
 
105
+ foreach ($this->options as $option => $value) {
106
+ // A warning is raised in case of a wrong option.
107
+ curl_multi_setopt($this->_mh, $option, $value);
108
  }
109
 
110
+ return $this->_mh;
111
  }
112
 
113
  public function __destruct()
114
  {
115
  if (isset($this->_mh)) {
116
+ \curl_multi_close($this->_mh);
117
  unset($this->_mh);
118
  }
119
  }
120
 
121
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
122
  {
123
  $easy = $this->factory->create($request, $options);
124
  $id = (int) $easy->handle;
138
  /**
139
  * Ticks the curl event loop.
140
  */
141
+ public function tick(): void
142
  {
143
  // Add any delayed handles if needed.
144
  if ($this->delays) {
146
  foreach ($this->delays as $id => $delay) {
147
  if ($currentTime >= $delay) {
148
  unset($this->delays[$id]);
149
+ \curl_multi_add_handle(
150
  $this->_mh,
151
  $this->handles[$id]['easy']->handle
152
  );
155
  }
156
 
157
  // Step through the task queue which may add additional requests.
158
+ P\Utils::queue()->run();
159
 
160
+ if ($this->active && \curl_multi_select($this->_mh, $this->selectTimeout) === -1) {
 
 
161
  // Perform a usleep if a select returns -1.
162
  // See: https://bugs.php.net/bug.php?id=61141
163
+ \usleep(250);
164
  }
165
 
166
+ while (\curl_multi_exec($this->_mh, $this->active) === \CURLM_CALL_MULTI_PERFORM);
167
 
168
  $this->processMessages();
169
  }
171
  /**
172
  * Runs until all outstanding connections have completed.
173
  */
174
+ public function execute(): void
175
  {
176
+ $queue = P\Utils::queue();
177
 
178
  while ($this->handles || !$queue->isEmpty()) {
179
  // If there are no transfers, then sleep for the next delay
180
  if (!$this->active && $this->delays) {
181
+ \usleep($this->timeToNext());
182
  }
183
  $this->tick();
184
  }
185
  }
186
 
187
+ private function addRequest(array $entry): void
188
  {
189
  $easy = $entry['easy'];
190
  $id = (int) $easy->handle;
191
  $this->handles[$id] = $entry;
192
  if (empty($easy->options['delay'])) {
193
+ \curl_multi_add_handle($this->_mh, $easy->handle);
194
  } else {
195
  $this->delays[$id] = Utils::currentTime() + ($easy->options['delay'] / 1000);
196
  }
203
  *
204
  * @return bool True on success, false on failure.
205
  */
206
+ private function cancel($id): bool
207
  {
208
+ if (!is_int($id)) {
209
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing an integer to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
210
+ }
211
+
212
  // Cannot cancel if it has been processed.
213
  if (!isset($this->handles[$id])) {
214
  return false;
216
 
217
  $handle = $this->handles[$id]['easy']->handle;
218
  unset($this->delays[$id], $this->handles[$id]);
219
+ \curl_multi_remove_handle($this->_mh, $handle);
220
+ \curl_close($handle);
221
 
222
  return true;
223
  }
224
 
225
+ private function processMessages(): void
226
  {
227
+ while ($done = \curl_multi_info_read($this->_mh)) {
228
+ if ($done['msg'] !== \CURLMSG_DONE) {
229
+ // if it's not done, then it would be premature to remove the handle. ref https://github.com/guzzle/guzzle/pull/2892#issuecomment-945150216
230
+ continue;
231
+ }
232
  $id = (int) $done['handle'];
233
+ \curl_multi_remove_handle($this->_mh, $done['handle']);
234
 
235
  if (!isset($this->handles[$id])) {
236
  // Probably was cancelled.
241
  unset($this->handles[$id], $this->delays[$id]);
242
  $entry['easy']->errno = $done['result'];
243
  $entry['deferred']->resolve(
244
+ CurlFactory::finish($this, $entry['easy'], $this->factory)
 
 
 
 
245
  );
246
  }
247
  }
248
 
249
+ private function timeToNext(): int
250
  {
251
  $currentTime = Utils::currentTime();
252
+ $nextTime = \PHP_INT_MAX;
253
  foreach ($this->delays as $time) {
254
  if ($time < $nextTime) {
255
  $nextTime = $time;
256
  }
257
  }
258
 
259
+ return ((int) \max(0, $nextTime - $currentTime)) * 1000000;
260
  }
261
  }
vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php CHANGED
@@ -1,7 +1,9 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use GuzzleHttp\Psr7\Response;
 
5
  use Psr\Http\Message\RequestInterface;
6
  use Psr\Http\Message\ResponseInterface;
7
  use Psr\Http\Message\StreamInterface;
@@ -13,55 +15,68 @@ use Psr\Http\Message\StreamInterface;
13
  */
14
  final class EasyHandle
15
  {
16
- /** @var resource cURL resource */
 
 
17
  public $handle;
18
 
19
- /** @var StreamInterface Where data is being written */
 
 
20
  public $sink;
21
 
22
- /** @var array Received HTTP headers so far */
 
 
23
  public $headers = [];
24
 
25
- /** @var ResponseInterface Received response (if any) */
 
 
26
  public $response;
27
 
28
- /** @var RequestInterface Request being sent */
 
 
29
  public $request;
30
 
31
- /** @var array Request options */
 
 
32
  public $options = [];
33
 
34
- /** @var int cURL error number (if any) */
 
 
35
  public $errno = 0;
36
 
37
- /** @var \Exception Exception during on_headers (if any) */
 
 
38
  public $onHeadersException;
39
 
 
 
 
 
 
40
  /**
41
  * Attach a response to the easy handle based on the received headers.
42
  *
43
- * @throws \RuntimeException if no headers have been received.
 
44
  */
45
- public function createResponse()
46
  {
47
- if (empty($this->headers)) {
48
- throw new \RuntimeException('No headers have been received');
49
- }
50
 
51
- // HTTP-version SP status-code SP reason-phrase
52
- $startLine = explode(' ', array_shift($this->headers), 3);
53
- $headers = \GuzzleHttp\headers_from_lines($this->headers);
54
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
55
 
56
- if (!empty($this->options['decode_content'])
57
- && isset($normalizedKeys['content-encoding'])
58
- ) {
59
- $headers['x-encoded-content-encoding']
60
- = $headers[$normalizedKeys['content-encoding']];
61
  unset($headers[$normalizedKeys['content-encoding']]);
62
  if (isset($normalizedKeys['content-length'])) {
63
- $headers['x-encoded-content-length']
64
- = $headers[$normalizedKeys['content-length']];
65
 
66
  $bodyLength = (int) $this->sink->getSize();
67
  if ($bodyLength) {
@@ -74,19 +89,24 @@ final class EasyHandle
74
 
75
  // Attach a response to the easy handle with the parsed headers.
76
  $this->response = new Response(
77
- $startLine[1],
78
  $headers,
79
  $this->sink,
80
- substr($startLine[0], 5),
81
- isset($startLine[2]) ? (string) $startLine[2] : null
82
  );
83
  }
84
 
 
 
 
 
 
 
 
85
  public function __get($name)
86
  {
87
- $msg = $name === 'handle'
88
- ? 'The EasyHandle has been released'
89
- : 'Invalid property: ' . $name;
90
  throw new \BadMethodCallException($msg);
91
  }
92
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use GuzzleHttp\Psr7\Response;
6
+ use GuzzleHttp\Utils;
7
  use Psr\Http\Message\RequestInterface;
8
  use Psr\Http\Message\ResponseInterface;
9
  use Psr\Http\Message\StreamInterface;
15
  */
16
  final class EasyHandle
17
  {
18
+ /**
19
+ * @var resource|\CurlHandle cURL resource
20
+ */
21
  public $handle;
22
 
23
+ /**
24
+ * @var StreamInterface Where data is being written
25
+ */
26
  public $sink;
27
 
28
+ /**
29
+ * @var array Received HTTP headers so far
30
+ */
31
  public $headers = [];
32
 
33
+ /**
34
+ * @var ResponseInterface|null Received response (if any)
35
+ */
36
  public $response;
37
 
38
+ /**
39
+ * @var RequestInterface Request being sent
40
+ */
41
  public $request;
42
 
43
+ /**
44
+ * @var array Request options
45
+ */
46
  public $options = [];
47
 
48
+ /**
49
+ * @var int cURL error number (if any)
50
+ */
51
  public $errno = 0;
52
 
53
+ /**
54
+ * @var \Throwable|null Exception during on_headers (if any)
55
+ */
56
  public $onHeadersException;
57
 
58
+ /**
59
+ * @var \Exception|null Exception during createResponse (if any)
60
+ */
61
+ public $createResponseException;
62
+
63
  /**
64
  * Attach a response to the easy handle based on the received headers.
65
  *
66
+ * @throws \RuntimeException if no headers have been received or the first
67
+ * header line is invalid.
68
  */
69
+ public function createResponse(): void
70
  {
71
+ [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers);
 
 
72
 
73
+ $normalizedKeys = Utils::normalizeHeaderKeys($headers);
 
 
 
74
 
75
+ if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) {
76
+ $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
 
 
 
77
  unset($headers[$normalizedKeys['content-encoding']]);
78
  if (isset($normalizedKeys['content-length'])) {
79
+ $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
 
80
 
81
  $bodyLength = (int) $this->sink->getSize();
82
  if ($bodyLength) {
89
 
90
  // Attach a response to the easy handle with the parsed headers.
91
  $this->response = new Response(
92
+ $status,
93
  $headers,
94
  $this->sink,
95
+ $ver,
96
+ $reason
97
  );
98
  }
99
 
100
+ /**
101
+ * @param string $name
102
+ *
103
+ * @return void
104
+ *
105
+ * @throws \BadMethodCallException
106
+ */
107
  public function __get($name)
108
  {
109
+ $msg = $name === 'handle' ? 'The EasyHandle has been released' : 'Invalid property: ' . $name;
 
 
110
  throw new \BadMethodCallException($msg);
111
  }
112
  }
vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp\Handler;
4
+
5
+ use GuzzleHttp\Utils;
6
+
7
+ /**
8
+ * @internal
9
+ */
10
+ final class HeaderProcessor
11
+ {
12
+ /**
13
+ * Returns the HTTP version, status code, reason phrase, and headers.
14
+ *
15
+ * @param string[] $headers
16
+ *
17
+ * @throws \RuntimeException
18
+ *
19
+ * @return array{0:string, 1:int, 2:?string, 3:array}
20
+ */
21
+ public static function parseHeaders(array $headers): array
22
+ {
23
+ if ($headers === []) {
24
+ throw new \RuntimeException('Expected a non-empty array of header data');
25
+ }
26
+
27
+ $parts = \explode(' ', \array_shift($headers), 3);
28
+ $version = \explode('/', $parts[0])[1] ?? null;
29
+
30
+ if ($version === null) {
31
+ throw new \RuntimeException('HTTP version missing from header data');
32
+ }
33
+
34
+ $status = $parts[1] ?? null;
35
+
36
+ if ($status === null) {
37
+ throw new \RuntimeException('HTTP status code missing from header data');
38
+ }
39
+
40
+ return [$version, (int) $status, $parts[2] ?? null, Utils::headersFromLines($headers)];
41
+ }
42
+ }
vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php CHANGED
@@ -1,81 +1,98 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use GuzzleHttp\Exception\RequestException;
5
  use GuzzleHttp\HandlerStack;
 
6
  use GuzzleHttp\Promise\PromiseInterface;
7
- use GuzzleHttp\Promise\RejectedPromise;
8
  use GuzzleHttp\TransferStats;
 
9
  use Psr\Http\Message\RequestInterface;
10
  use Psr\Http\Message\ResponseInterface;
 
11
 
12
  /**
13
  * Handler that returns responses or throw exceptions from a queue.
 
 
14
  */
15
  class MockHandler implements \Countable
16
  {
 
 
 
17
  private $queue = [];
 
 
 
 
18
  private $lastRequest;
19
- private $lastOptions;
 
 
 
 
 
 
 
 
20
  private $onFulfilled;
 
 
 
 
21
  private $onRejected;
22
 
23
  /**
24
  * Creates a new MockHandler that uses the default handler stack list of
25
  * middlewares.
26
  *
27
- * @param array $queue Array of responses, callables, or exceptions.
28
- * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
29
- * @param callable $onRejected Callback to invoke when the return value is rejected.
30
- *
31
- * @return HandlerStack
32
  */
33
- public static function createWithMiddleware(
34
- array $queue = null,
35
- callable $onFulfilled = null,
36
- callable $onRejected = null
37
- ) {
38
  return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
39
  }
40
 
41
  /**
42
  * The passed in value must be an array of
43
- * {@see Psr7\Http\Message\ResponseInterface} objects, Exceptions,
44
  * callables, or Promises.
45
  *
46
- * @param array $queue
47
- * @param callable $onFulfilled Callback to invoke when the return value is fulfilled.
48
- * @param callable $onRejected Callback to invoke when the return value is rejected.
49
  */
50
- public function __construct(
51
- array $queue = null,
52
- callable $onFulfilled = null,
53
- callable $onRejected = null
54
- ) {
55
  $this->onFulfilled = $onFulfilled;
56
  $this->onRejected = $onRejected;
57
 
58
  if ($queue) {
59
- call_user_func_array([$this, 'append'], $queue);
 
60
  }
61
  }
62
 
63
- public function __invoke(RequestInterface $request, array $options)
64
  {
65
  if (!$this->queue) {
66
  throw new \OutOfBoundsException('Mock queue is empty');
67
  }
68
 
69
- if (isset($options['delay']) && is_numeric($options['delay'])) {
70
- usleep($options['delay'] * 1000);
71
  }
72
 
73
  $this->lastRequest = $request;
74
  $this->lastOptions = $options;
75
- $response = array_shift($this->queue);
76
 
77
  if (isset($options['on_headers'])) {
78
- if (!is_callable($options['on_headers'])) {
79
  throw new \InvalidArgumentException('on_headers must be callable');
80
  }
81
  try {
@@ -86,29 +103,30 @@ class MockHandler implements \Countable
86
  }
87
  }
88
 
89
- if (is_callable($response)) {
90
- $response = call_user_func($response, $request, $options);
91
  }
92
 
93
- $response = $response instanceof \Exception
94
- ? \GuzzleHttp\Promise\rejection_for($response)
95
- : \GuzzleHttp\Promise\promise_for($response);
96
 
97
  return $response->then(
98
- function ($value) use ($request, $options) {
99
  $this->invokeStats($request, $options, $value);
100
  if ($this->onFulfilled) {
101
- call_user_func($this->onFulfilled, $value);
102
  }
103
- if (isset($options['sink'])) {
 
104
  $contents = (string) $value->getBody();
105
  $sink = $options['sink'];
106
 
107
- if (is_resource($sink)) {
108
- fwrite($sink, $contents);
109
- } elseif (is_string($sink)) {
110
- file_put_contents($sink, $contents);
111
- } elseif ($sink instanceof \Psr\Http\Message\StreamInterface) {
112
  $sink->write($contents);
113
  }
114
  }
@@ -118,9 +136,9 @@ class MockHandler implements \Countable
118
  function ($reason) use ($request, $options) {
119
  $this->invokeStats($request, $options, null, $reason);
120
  if ($this->onRejected) {
121
- call_user_func($this->onRejected, $reason);
122
  }
123
- return \GuzzleHttp\Promise\rejection_for($reason);
124
  }
125
  );
126
  }
@@ -128,68 +146,66 @@ class MockHandler implements \Countable
128
  /**
129
  * Adds one or more variadic requests, exceptions, callables, or promises
130
  * to the queue.
 
 
131
  */
132
- public function append()
133
  {
134
- foreach (func_get_args() as $value) {
135
  if ($value instanceof ResponseInterface
136
- || $value instanceof \Exception
137
  || $value instanceof PromiseInterface
138
- || is_callable($value)
139
  ) {
140
  $this->queue[] = $value;
141
  } else {
142
- throw new \InvalidArgumentException('Expected a response or '
143
- . 'exception. Found ' . \GuzzleHttp\describe_type($value));
144
  }
145
  }
146
  }
147
 
148
  /**
149
  * Get the last received request.
150
- *
151
- * @return RequestInterface
152
  */
153
- public function getLastRequest()
154
  {
155
  return $this->lastRequest;
156
  }
157
 
158
  /**
159
  * Get the last received request options.
160
- *
161
- * @return array
162
  */
163
- public function getLastOptions()
164
  {
165
  return $this->lastOptions;
166
  }
167
 
168
  /**
169
  * Returns the number of remaining items in the queue.
170
- *
171
- * @return int
172
  */
173
- public function count()
174
  {
175
- return count($this->queue);
176
  }
177
 
178
- public function reset()
179
  {
180
  $this->queue = [];
181
  }
182
 
 
 
 
183
  private function invokeStats(
184
  RequestInterface $request,
185
  array $options,
186
  ResponseInterface $response = null,
187
  $reason = null
188
- ) {
189
  if (isset($options['on_stats'])) {
190
- $transferTime = isset($options['transfer_time']) ? $options['transfer_time'] : 0;
191
  $stats = new TransferStats($request, $response, $transferTime, $reason);
192
- call_user_func($options['on_stats'], $stats);
193
  }
194
  }
195
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use GuzzleHttp\Exception\RequestException;
6
  use GuzzleHttp\HandlerStack;
7
+ use GuzzleHttp\Promise as P;
8
  use GuzzleHttp\Promise\PromiseInterface;
 
9
  use GuzzleHttp\TransferStats;
10
+ use GuzzleHttp\Utils;
11
  use Psr\Http\Message\RequestInterface;
12
  use Psr\Http\Message\ResponseInterface;
13
+ use Psr\Http\Message\StreamInterface;
14
 
15
  /**
16
  * Handler that returns responses or throw exceptions from a queue.
17
+ *
18
+ * @final
19
  */
20
  class MockHandler implements \Countable
21
  {
22
+ /**
23
+ * @var array
24
+ */
25
  private $queue = [];
26
+
27
+ /**
28
+ * @var RequestInterface|null
29
+ */
30
  private $lastRequest;
31
+
32
+ /**
33
+ * @var array
34
+ */
35
+ private $lastOptions = [];
36
+
37
+ /**
38
+ * @var callable|null
39
+ */
40
  private $onFulfilled;
41
+
42
+ /**
43
+ * @var callable|null
44
+ */
45
  private $onRejected;
46
 
47
  /**
48
  * Creates a new MockHandler that uses the default handler stack list of
49
  * middlewares.
50
  *
51
+ * @param array|null $queue Array of responses, callables, or exceptions.
52
+ * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled.
53
+ * @param callable|null $onRejected Callback to invoke when the return value is rejected.
 
 
54
  */
55
+ public static function createWithMiddleware(array $queue = null, callable $onFulfilled = null, callable $onRejected = null): HandlerStack
56
+ {
 
 
 
57
  return HandlerStack::create(new self($queue, $onFulfilled, $onRejected));
58
  }
59
 
60
  /**
61
  * The passed in value must be an array of
62
+ * {@see \Psr\Http\Message\ResponseInterface} objects, Exceptions,
63
  * callables, or Promises.
64
  *
65
+ * @param array<int, mixed>|null $queue The parameters to be passed to the append function, as an indexed array.
66
+ * @param callable|null $onFulfilled Callback to invoke when the return value is fulfilled.
67
+ * @param callable|null $onRejected Callback to invoke when the return value is rejected.
68
  */
69
+ public function __construct(array $queue = null, callable $onFulfilled = null, callable $onRejected = null)
70
+ {
 
 
 
71
  $this->onFulfilled = $onFulfilled;
72
  $this->onRejected = $onRejected;
73
 
74
  if ($queue) {
75
+ // array_values included for BC
76
+ $this->append(...array_values($queue));
77
  }
78
  }
79
 
80
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
81
  {
82
  if (!$this->queue) {
83
  throw new \OutOfBoundsException('Mock queue is empty');
84
  }
85
 
86
+ if (isset($options['delay']) && \is_numeric($options['delay'])) {
87
+ \usleep((int) $options['delay'] * 1000);
88
  }
89
 
90
  $this->lastRequest = $request;
91
  $this->lastOptions = $options;
92
+ $response = \array_shift($this->queue);
93
 
94
  if (isset($options['on_headers'])) {
95
+ if (!\is_callable($options['on_headers'])) {
96
  throw new \InvalidArgumentException('on_headers must be callable');
97
  }
98
  try {
103
  }
104
  }
105
 
106
+ if (\is_callable($response)) {
107
+ $response = $response($request, $options);
108
  }
109
 
110
+ $response = $response instanceof \Throwable
111
+ ? P\Create::rejectionFor($response)
112
+ : P\Create::promiseFor($response);
113
 
114
  return $response->then(
115
+ function (?ResponseInterface $value) use ($request, $options) {
116
  $this->invokeStats($request, $options, $value);
117
  if ($this->onFulfilled) {
118
+ ($this->onFulfilled)($value);
119
  }
120
+
121
+ if ($value !== null && isset($options['sink'])) {
122
  $contents = (string) $value->getBody();
123
  $sink = $options['sink'];
124
 
125
+ if (\is_resource($sink)) {
126
+ \fwrite($sink, $contents);
127
+ } elseif (\is_string($sink)) {
128
+ \file_put_contents($sink, $contents);
129
+ } elseif ($sink instanceof StreamInterface) {
130
  $sink->write($contents);
131
  }
132
  }
136
  function ($reason) use ($request, $options) {
137
  $this->invokeStats($request, $options, null, $reason);
138
  if ($this->onRejected) {
139
+ ($this->onRejected)($reason);
140
  }
141
+ return P\Create::rejectionFor($reason);
142
  }
143
  );
144
  }
146
  /**
147
  * Adds one or more variadic requests, exceptions, callables, or promises
148
  * to the queue.
149
+ *
150
+ * @param mixed ...$values
151
  */
152
+ public function append(...$values): void
153
  {
154
+ foreach ($values as $value) {
155
  if ($value instanceof ResponseInterface
156
+ || $value instanceof \Throwable
157
  || $value instanceof PromiseInterface
158
+ || \is_callable($value)
159
  ) {
160
  $this->queue[] = $value;
161
  } else {
162
+ throw new \TypeError('Expected a Response, Promise, Throwable or callable. Found ' . Utils::describeType($value));
 
163
  }
164
  }
165
  }
166
 
167
  /**
168
  * Get the last received request.
 
 
169
  */
170
+ public function getLastRequest(): ?RequestInterface
171
  {
172
  return $this->lastRequest;
173
  }
174
 
175
  /**
176
  * Get the last received request options.
 
 
177
  */
178
+ public function getLastOptions(): array
179
  {
180
  return $this->lastOptions;
181
  }
182
 
183
  /**
184
  * Returns the number of remaining items in the queue.
 
 
185
  */
186
+ public function count(): int
187
  {
188
+ return \count($this->queue);
189
  }
190
 
191
+ public function reset(): void
192
  {
193
  $this->queue = [];
194
  }
195
 
196
+ /**
197
+ * @param mixed $reason Promise or reason.
198
+ */
199
  private function invokeStats(
200
  RequestInterface $request,
201
  array $options,
202
  ResponseInterface $response = null,
203
  $reason = null
204
+ ): void {
205
  if (isset($options['on_stats'])) {
206
+ $transferTime = $options['transfer_time'] ?? 0;
207
  $stats = new TransferStats($request, $response, $transferTime, $reason);
208
+ ($options['on_stats'])($stats);
209
  }
210
  }
211
  }
vendor/guzzlehttp/guzzle/src/Handler/Proxy.php CHANGED
@@ -1,11 +1,15 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
 
4
  use GuzzleHttp\RequestOptions;
5
  use Psr\Http\Message\RequestInterface;
6
 
7
  /**
8
  * Provides basic proxies for handlers.
 
 
9
  */
10
  class Proxy
11
  {
@@ -13,19 +17,15 @@ class Proxy
13
  * Sends synchronous requests to a specific handler while sending all other
14
  * requests to another handler.
15
  *
16
- * @param callable $default Handler used for normal responses
17
- * @param callable $sync Handler used for synchronous responses.
18
  *
19
- * @return callable Returns the composed handler.
20
  */
21
- public static function wrapSync(
22
- callable $default,
23
- callable $sync
24
- ) {
25
- return function (RequestInterface $request, array $options) use ($default, $sync) {
26
- return empty($options[RequestOptions::SYNCHRONOUS])
27
- ? $default($request, $options)
28
- : $sync($request, $options);
29
  };
30
  }
31
 
@@ -37,19 +37,15 @@ class Proxy
37
  * performance benefits of curl while still supporting true streaming
38
  * through the StreamHandler.
39
  *
40
- * @param callable $default Handler used for non-streaming responses
41
- * @param callable $streaming Handler used for streaming responses
42
  *
43
- * @return callable Returns the composed handler.
44
  */
45
- public static function wrapStreaming(
46
- callable $default,
47
- callable $streaming
48
- ) {
49
- return function (RequestInterface $request, array $options) use ($default, $streaming) {
50
- return empty($options['stream'])
51
- ? $default($request, $options)
52
- : $streaming($request, $options);
53
  };
54
  }
55
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
+ use GuzzleHttp\Promise\PromiseInterface;
6
  use GuzzleHttp\RequestOptions;
7
  use Psr\Http\Message\RequestInterface;
8
 
9
  /**
10
  * Provides basic proxies for handlers.
11
+ *
12
+ * @final
13
  */
14
  class Proxy
15
  {
17
  * Sends synchronous requests to a specific handler while sending all other
18
  * requests to another handler.
19
  *
20
+ * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for normal responses
21
+ * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $sync Handler used for synchronous responses.
22
  *
23
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
24
  */
25
+ public static function wrapSync(callable $default, callable $sync): callable
26
+ {
27
+ return static function (RequestInterface $request, array $options) use ($default, $sync): PromiseInterface {
28
+ return empty($options[RequestOptions::SYNCHRONOUS]) ? $default($request, $options) : $sync($request, $options);
 
 
 
 
29
  };
30
  }
31
 
37
  * performance benefits of curl while still supporting true streaming
38
  * through the StreamHandler.
39
  *
40
+ * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $default Handler used for non-streaming responses
41
+ * @param callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface $streaming Handler used for streaming responses
42
  *
43
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the composed handler.
44
  */
45
+ public static function wrapStreaming(callable $default, callable $streaming): callable
46
+ {
47
+ return static function (RequestInterface $request, array $options) use ($default, $streaming): PromiseInterface {
48
+ return empty($options['stream']) ? $default($request, $options) : $streaming($request, $options);
 
 
 
 
49
  };
50
  }
51
  }
vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php CHANGED
@@ -1,8 +1,10 @@
1
  <?php
 
2
  namespace GuzzleHttp\Handler;
3
 
4
  use GuzzleHttp\Exception\ConnectException;
5
  use GuzzleHttp\Exception\RequestException;
 
6
  use GuzzleHttp\Promise\FulfilledPromise;
7
  use GuzzleHttp\Promise\PromiseInterface;
8
  use GuzzleHttp\Psr7;
@@ -11,12 +13,18 @@ use GuzzleHttp\Utils;
11
  use Psr\Http\Message\RequestInterface;
12
  use Psr\Http\Message\ResponseInterface;
13
  use Psr\Http\Message\StreamInterface;
 
14
 
15
  /**
16
  * HTTP handler that uses PHP's HTTP stream wrapper.
 
 
17
  */
18
  class StreamHandler
19
  {
 
 
 
20
  private $lastHeaders = [];
21
 
22
  /**
@@ -24,14 +32,12 @@ class StreamHandler
24
  *
25
  * @param RequestInterface $request Request to send.
26
  * @param array $options Request transfer options.
27
- *
28
- * @return PromiseInterface
29
  */
30
- public function __invoke(RequestInterface $request, array $options)
31
  {
32
  // Sleep if there is a delay specified.
33
  if (isset($options['delay'])) {
34
- usleep($options['delay'] * 1000);
35
  }
36
 
37
  $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
@@ -58,80 +64,80 @@ class StreamHandler
58
  // Determine if the error was a networking error.
59
  $message = $e->getMessage();
60
  // This list can probably get more comprehensive.
61
- if (strpos($message, 'getaddrinfo') // DNS lookup failed
62
- || strpos($message, 'Connection refused')
63
- || strpos($message, "couldn't connect to host") // error on HHVM
64
- || strpos($message, "connection attempt failed")
65
  ) {
66
  $e = new ConnectException($e->getMessage(), $request, $e);
 
 
67
  }
68
- $e = RequestException::wrapException($request, $e);
69
  $this->invokeStats($options, $request, $startTime, null, $e);
70
 
71
- return \GuzzleHttp\Promise\rejection_for($e);
72
  }
73
  }
74
 
75
  private function invokeStats(
76
  array $options,
77
  RequestInterface $request,
78
- $startTime,
79
  ResponseInterface $response = null,
80
- $error = null
81
- ) {
82
  if (isset($options['on_stats'])) {
83
- $stats = new TransferStats(
84
- $request,
85
- $response,
86
- Utils::currentTime() - $startTime,
87
- $error,
88
- []
89
- );
90
- call_user_func($options['on_stats'], $stats);
91
  }
92
  }
93
 
94
- private function createResponse(
95
- RequestInterface $request,
96
- array $options,
97
- $stream,
98
- $startTime
99
- ) {
100
  $hdrs = $this->lastHeaders;
101
  $this->lastHeaders = [];
102
- $parts = explode(' ', array_shift($hdrs), 3);
103
- $ver = explode('/', $parts[0])[1];
104
- $status = $parts[1];
105
- $reason = isset($parts[2]) ? $parts[2] : null;
106
- $headers = \GuzzleHttp\headers_from_lines($hdrs);
107
- list($stream, $headers) = $this->checkDecode($options, $headers, $stream);
108
- $stream = Psr7\stream_for($stream);
 
 
 
 
109
  $sink = $stream;
110
 
111
- if (strcasecmp('HEAD', $request->getMethod())) {
112
  $sink = $this->createSink($stream, $options);
113
  }
114
 
115
- $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
 
 
 
 
 
 
116
 
117
  if (isset($options['on_headers'])) {
118
  try {
119
  $options['on_headers']($response);
120
  } catch (\Exception $e) {
121
- $msg = 'An error was encountered during the on_headers event';
122
- $ex = new RequestException($msg, $request, $response, $e);
123
- return \GuzzleHttp\Promise\rejection_for($ex);
124
  }
125
  }
126
 
127
  // Do not drain when the request is a HEAD request because they have
128
  // no body.
129
  if ($sink !== $stream) {
130
- $this->drain(
131
- $stream,
132
- $sink,
133
- $response->getHeaderLine('Content-Length')
134
- );
135
  }
136
 
137
  $this->invokeStats($options, $request, $startTime, $response, null);
@@ -139,41 +145,37 @@ class StreamHandler
139
  return new FulfilledPromise($response);
140
  }
141
 
142
- private function createSink(StreamInterface $stream, array $options)
143
  {
144
  if (!empty($options['stream'])) {
145
  return $stream;
146
  }
147
 
148
- $sink = isset($options['sink'])
149
- ? $options['sink']
150
- : fopen('php://temp', 'r+');
151
 
152
- return is_string($sink)
153
- ? new Psr7\LazyOpenStream($sink, 'w+')
154
- : Psr7\stream_for($sink);
155
  }
156
 
157
- private function checkDecode(array $options, array $headers, $stream)
 
 
 
158
  {
159
  // Automatically decode responses when instructed.
160
  if (!empty($options['decode_content'])) {
161
- $normalizedKeys = \GuzzleHttp\normalize_header_keys($headers);
162
  if (isset($normalizedKeys['content-encoding'])) {
163
  $encoding = $headers[$normalizedKeys['content-encoding']];
164
  if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
165
- $stream = new Psr7\InflateStream(
166
- Psr7\stream_for($stream)
167
- );
168
- $headers['x-encoded-content-encoding']
169
- = $headers[$normalizedKeys['content-encoding']];
170
  // Remove content-encoding header
171
  unset($headers[$normalizedKeys['content-encoding']]);
 
172
  // Fix content-length header
173
  if (isset($normalizedKeys['content-length'])) {
174
- $headers['x-encoded-content-length']
175
- = $headers[$normalizedKeys['content-length']];
176
-
177
  $length = (int) $stream->getSize();
178
  if ($length === 0) {
179
  unset($headers[$normalizedKeys['content-length']]);
@@ -191,27 +193,21 @@ class StreamHandler
191
  /**
192
  * Drains the source stream into the "sink" client option.
193
  *
194
- * @param StreamInterface $source
195
- * @param StreamInterface $sink
196
- * @param string $contentLength Header specifying the amount of
197
- * data to read.
198
  *
199
- * @return StreamInterface
200
  * @throws \RuntimeException when the sink option is invalid.
201
  */
202
- private function drain(
203
- StreamInterface $source,
204
- StreamInterface $sink,
205
- $contentLength
206
- ) {
207
  // If a content-length header is provided, then stop reading once
208
  // that number of bytes has been read. This can prevent infinitely
209
  // reading from a stream when dealing with servers that do not honor
210
  // Connection: Close headers.
211
- Psr7\copy_to_stream(
212
  $source,
213
  $sink,
214
- (strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
215
  );
216
 
217
  $sink->seek(0);
@@ -226,12 +222,13 @@ class StreamHandler
226
  * @param callable $callback Callable that returns stream resource
227
  *
228
  * @return resource
 
229
  * @throws \RuntimeException on error
230
  */
231
  private function createResource(callable $callback)
232
  {
233
- $errors = null;
234
- set_error_handler(function ($_, $msg, $file, $line) use (&$errors) {
235
  $errors[] = [
236
  'message' => $msg,
237
  'file' => $file,
@@ -240,27 +237,37 @@ class StreamHandler
240
  return true;
241
  });
242
 
243
- $resource = $callback();
244
- restore_error_handler();
 
 
 
245
 
246
  if (!$resource) {
247
  $message = 'Error creating resource: ';
248
  foreach ($errors as $err) {
249
  foreach ($err as $key => $value) {
250
- $message .= "[$key] $value" . PHP_EOL;
251
  }
252
  }
253
- throw new \RuntimeException(trim($message));
254
  }
255
 
256
  return $resource;
257
  }
258
 
 
 
 
259
  private function createStream(RequestInterface $request, array $options)
260
  {
261
  static $methods;
262
  if (!$methods) {
263
- $methods = array_flip(get_class_methods(__CLASS__));
 
 
 
 
264
  }
265
 
266
  // HTTP/1.1 streams using the PHP stream wrapper require a
@@ -279,7 +286,7 @@ class StreamHandler
279
  $params = [];
280
  $context = $this->getDefaultContext($request);
281
 
282
- if (isset($options['on_headers']) && !is_callable($options['on_headers'])) {
283
  throw new \InvalidArgumentException('on_headers must be callable');
284
  }
285
 
@@ -293,42 +300,39 @@ class StreamHandler
293
  }
294
 
295
  if (isset($options['stream_context'])) {
296
- if (!is_array($options['stream_context'])) {
297
  throw new \InvalidArgumentException('stream_context must be an array');
298
  }
299
- $context = array_replace_recursive(
300
- $context,
301
- $options['stream_context']
302
- );
303
  }
304
 
305
  // Microsoft NTLM authentication only supported with curl handler
306
- if (isset($options['auth'])
307
- && is_array($options['auth'])
308
- && isset($options['auth'][2])
309
- && 'ntlm' == $options['auth'][2]
310
- ) {
311
  throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
312
  }
313
 
314
  $uri = $this->resolveHost($request, $options);
315
 
316
- $context = $this->createResource(
317
- function () use ($context, $params) {
318
- return stream_context_create($context, $params);
319
  }
320
  );
321
 
322
  return $this->createResource(
323
- function () use ($uri, &$http_response_header, $context, $options) {
324
- $resource = fopen((string) $uri, 'r', null, $context);
325
- $this->lastHeaders = $http_response_header;
 
 
 
 
326
 
327
  if (isset($options['read_timeout'])) {
328
  $readTimeout = $options['read_timeout'];
329
  $sec = (int) $readTimeout;
330
  $usec = ($readTimeout - $sec) * 100000;
331
- stream_set_timeout($resource, $sec, $usec);
332
  }
333
 
334
  return $resource;
@@ -336,42 +340,31 @@ class StreamHandler
336
  );
337
  }
338
 
339
- private function resolveHost(RequestInterface $request, array $options)
340
  {
341
  $uri = $request->getUri();
342
 
343
- if (isset($options['force_ip_resolve']) && !filter_var($uri->getHost(), FILTER_VALIDATE_IP)) {
344
  if ('v4' === $options['force_ip_resolve']) {
345
- $records = dns_get_record($uri->getHost(), DNS_A);
346
- if (!isset($records[0]['ip'])) {
347
- throw new ConnectException(
348
- sprintf(
349
- "Could not resolve IPv4 address for host '%s'",
350
- $uri->getHost()
351
- ),
352
- $request
353
- );
354
  }
355
- $uri = $uri->withHost($records[0]['ip']);
356
- } elseif ('v6' === $options['force_ip_resolve']) {
357
- $records = dns_get_record($uri->getHost(), DNS_AAAA);
358
- if (!isset($records[0]['ipv6'])) {
359
- throw new ConnectException(
360
- sprintf(
361
- "Could not resolve IPv6 address for host '%s'",
362
- $uri->getHost()
363
- ),
364
- $request
365
- );
366
  }
367
- $uri = $uri->withHost('[' . $records[0]['ipv6'] . ']');
368
  }
369
  }
370
 
371
  return $uri;
372
  }
373
 
374
- private function getDefaultContext(RequestInterface $request)
375
  {
376
  $headers = '';
377
  foreach ($request->getHeaders() as $name => $value) {
@@ -388,6 +381,9 @@ class StreamHandler
388
  'ignore_errors' => true,
389
  'follow_location' => 0,
390
  ],
 
 
 
391
  ];
392
 
393
  $body = (string) $request->getBody();
@@ -400,55 +396,100 @@ class StreamHandler
400
  }
401
  }
402
 
403
- $context['http']['header'] = rtrim($context['http']['header']);
404
 
405
  return $context;
406
  }
407
 
408
- private function add_proxy(RequestInterface $request, &$options, $value, &$params)
 
 
 
409
  {
410
- if (!is_array($value)) {
411
- $options['http']['proxy'] = $value;
 
 
412
  } else {
413
  $scheme = $request->getUri()->getScheme();
414
  if (isset($value[$scheme])) {
415
- if (!isset($value['no'])
416
- || !\GuzzleHttp\is_host_in_noproxy(
417
- $request->getUri()->getHost(),
418
- $value['no']
419
- )
420
- ) {
421
- $options['http']['proxy'] = $value[$scheme];
422
  }
423
  }
424
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  }
426
 
427
- private function add_timeout(RequestInterface $request, &$options, $value, &$params)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
428
  {
429
  if ($value > 0) {
430
  $options['http']['timeout'] = $value;
431
  }
432
  }
433
 
434
- private function add_verify(RequestInterface $request, &$options, $value, &$params)
 
 
 
435
  {
436
- if ($value === true) {
437
- // PHP 5.6 or greater will find the system cert by default. When
438
- // < 5.6, use the Guzzle bundled cacert.
439
- if (PHP_VERSION_ID < 50600) {
440
- $options['ssl']['cafile'] = \GuzzleHttp\default_ca_bundle();
441
- }
442
- } elseif (is_string($value)) {
443
- $options['ssl']['cafile'] = $value;
444
- if (!file_exists($value)) {
445
- throw new \RuntimeException("SSL CA bundle not found: $value");
446
- }
447
- } elseif ($value === false) {
448
  $options['ssl']['verify_peer'] = false;
449
  $options['ssl']['verify_peer_name'] = false;
 
450
  return;
451
- } else {
 
 
 
 
 
 
 
452
  throw new \InvalidArgumentException('Invalid verify request option');
453
  }
454
 
@@ -457,88 +498,95 @@ class StreamHandler
457
  $options['ssl']['allow_self_signed'] = false;
458
  }
459
 
460
- private function add_cert(RequestInterface $request, &$options, $value, &$params)
 
 
 
461
  {
462
- if (is_array($value)) {
463
  $options['ssl']['passphrase'] = $value[1];
464
  $value = $value[0];
465
  }
466
 
467
- if (!file_exists($value)) {
468
  throw new \RuntimeException("SSL certificate not found: {$value}");
469
  }
470
 
471
  $options['ssl']['local_cert'] = $value;
472
  }
473
 
474
- private function add_progress(RequestInterface $request, &$options, $value, &$params)
 
 
 
475
  {
476
- $this->addNotification(
477
  $params,
478
- function ($code, $a, $b, $c, $transferred, $total) use ($value) {
479
- if ($code == STREAM_NOTIFY_PROGRESS) {
480
- $value($total, $transferred, null, null);
 
 
481
  }
482
  }
483
  );
484
  }
485
 
486
- private function add_debug(RequestInterface $request, &$options, $value, &$params)
 
 
 
487
  {
488
  if ($value === false) {
489
  return;
490
  }
491
 
492
  static $map = [
493
- STREAM_NOTIFY_CONNECT => 'CONNECT',
494
- STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
495
- STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT',
496
- STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS',
497
- STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS',
498
- STREAM_NOTIFY_REDIRECTED => 'REDIRECTED',
499
- STREAM_NOTIFY_PROGRESS => 'PROGRESS',
500
- STREAM_NOTIFY_FAILURE => 'FAILURE',
501
- STREAM_NOTIFY_COMPLETED => 'COMPLETED',
502
- STREAM_NOTIFY_RESOLVE => 'RESOLVE',
503
  ];
504
- static $args = ['severity', 'message', 'message_code',
505
- 'bytes_transferred', 'bytes_max'];
506
 
507
- $value = \GuzzleHttp\debug_resource($value);
508
  $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
509
- $this->addNotification(
510
  $params,
511
- function () use ($ident, $value, $map, $args) {
512
- $passed = func_get_args();
513
- $code = array_shift($passed);
514
- fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
515
- foreach (array_filter($passed) as $i => $v) {
516
- fwrite($value, $args[$i] . ': "' . $v . '" ');
517
  }
518
- fwrite($value, "\n");
519
  }
520
  );
521
  }
522
 
523
- private function addNotification(array &$params, callable $notify)
524
  {
525
  // Wrap the existing function if needed.
526
  if (!isset($params['notification'])) {
527
  $params['notification'] = $notify;
528
  } else {
529
- $params['notification'] = $this->callArray([
530
  $params['notification'],
531
  $notify
532
  ]);
533
  }
534
  }
535
 
536
- private function callArray(array $functions)
537
  {
538
- return function () use ($functions) {
539
- $args = func_get_args();
540
  foreach ($functions as $fn) {
541
- call_user_func_array($fn, $args);
542
  }
543
  };
544
  }
1
  <?php
2
+
3
  namespace GuzzleHttp\Handler;
4
 
5
  use GuzzleHttp\Exception\ConnectException;
6
  use GuzzleHttp\Exception\RequestException;
7
+ use GuzzleHttp\Promise as P;
8
  use GuzzleHttp\Promise\FulfilledPromise;
9
  use GuzzleHttp\Promise\PromiseInterface;
10
  use GuzzleHttp\Psr7;
13
  use Psr\Http\Message\RequestInterface;
14
  use Psr\Http\Message\ResponseInterface;
15
  use Psr\Http\Message\StreamInterface;
16
+ use Psr\Http\Message\UriInterface;
17
 
18
  /**
19
  * HTTP handler that uses PHP's HTTP stream wrapper.
20
+ *
21
+ * @final
22
  */
23
  class StreamHandler
24
  {
25
+ /**
26
+ * @var array
27
+ */
28
  private $lastHeaders = [];
29
 
30
  /**
32
  *
33
  * @param RequestInterface $request Request to send.
34
  * @param array $options Request transfer options.
 
 
35
  */
36
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
37
  {
38
  // Sleep if there is a delay specified.
39
  if (isset($options['delay'])) {
40
+ \usleep($options['delay'] * 1000);
41
  }
42
 
43
  $startTime = isset($options['on_stats']) ? Utils::currentTime() : null;
64
  // Determine if the error was a networking error.
65
  $message = $e->getMessage();
66
  // This list can probably get more comprehensive.
67
+ if (false !== \strpos($message, 'getaddrinfo') // DNS lookup failed
68
+ || false !== \strpos($message, 'Connection refused')
69
+ || false !== \strpos($message, "couldn't connect to host") // error on HHVM
70
+ || false !== \strpos($message, "connection attempt failed")
71
  ) {
72
  $e = new ConnectException($e->getMessage(), $request, $e);
73
+ } else {
74
+ $e = RequestException::wrapException($request, $e);
75
  }
 
76
  $this->invokeStats($options, $request, $startTime, null, $e);
77
 
78
+ return P\Create::rejectionFor($e);
79
  }
80
  }
81
 
82
  private function invokeStats(
83
  array $options,
84
  RequestInterface $request,
85
+ ?float $startTime,
86
  ResponseInterface $response = null,
87
+ \Throwable $error = null
88
+ ): void {
89
  if (isset($options['on_stats'])) {
90
+ $stats = new TransferStats($request, $response, Utils::currentTime() - $startTime, $error, []);
91
+ ($options['on_stats'])($stats);
 
 
 
 
 
 
92
  }
93
  }
94
 
95
+ /**
96
+ * @param resource $stream
97
+ */
98
+ private function createResponse(RequestInterface $request, array $options, $stream, ?float $startTime): PromiseInterface
99
+ {
 
100
  $hdrs = $this->lastHeaders;
101
  $this->lastHeaders = [];
102
+
103
+ try {
104
+ [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($hdrs);
105
+ } catch (\Exception $e) {
106
+ return P\Create::rejectionFor(
107
+ new RequestException('An error was encountered while creating the response', $request, null, $e)
108
+ );
109
+ }
110
+
111
+ [$stream, $headers] = $this->checkDecode($options, $headers, $stream);
112
+ $stream = Psr7\Utils::streamFor($stream);
113
  $sink = $stream;
114
 
115
+ if (\strcasecmp('HEAD', $request->getMethod())) {
116
  $sink = $this->createSink($stream, $options);
117
  }
118
 
119
+ try {
120
+ $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
121
+ } catch (\Exception $e) {
122
+ return P\Create::rejectionFor(
123
+ new RequestException('An error was encountered while creating the response', $request, null, $e)
124
+ );
125
+ }
126
 
127
  if (isset($options['on_headers'])) {
128
  try {
129
  $options['on_headers']($response);
130
  } catch (\Exception $e) {
131
+ return P\Create::rejectionFor(
132
+ new RequestException('An error was encountered during the on_headers event', $request, $response, $e)
133
+ );
134
  }
135
  }
136
 
137
  // Do not drain when the request is a HEAD request because they have
138
  // no body.
139
  if ($sink !== $stream) {
140
+ $this->drain($stream, $sink, $response->getHeaderLine('Content-Length'));
 
 
 
 
141
  }
142
 
143
  $this->invokeStats($options, $request, $startTime, $response, null);
145
  return new FulfilledPromise($response);
146
  }
147
 
148
+ private function createSink(StreamInterface $stream, array $options): StreamInterface
149
  {
150
  if (!empty($options['stream'])) {
151
  return $stream;
152
  }
153
 
154
+ $sink = $options['sink'] ?? Psr7\Utils::tryFopen('php://temp', 'r+');
 
 
155
 
156
+ return \is_string($sink) ? new Psr7\LazyOpenStream($sink, 'w+') : Psr7\Utils::streamFor($sink);
 
 
157
  }
158
 
159
+ /**
160
+ * @param resource $stream
161
+ */
162
+ private function checkDecode(array $options, array $headers, $stream): array
163
  {
164
  // Automatically decode responses when instructed.
165
  if (!empty($options['decode_content'])) {
166
+ $normalizedKeys = Utils::normalizeHeaderKeys($headers);
167
  if (isset($normalizedKeys['content-encoding'])) {
168
  $encoding = $headers[$normalizedKeys['content-encoding']];
169
  if ($encoding[0] === 'gzip' || $encoding[0] === 'deflate') {
170
+ $stream = new Psr7\InflateStream(Psr7\Utils::streamFor($stream));
171
+ $headers['x-encoded-content-encoding'] = $headers[$normalizedKeys['content-encoding']];
172
+
 
 
173
  // Remove content-encoding header
174
  unset($headers[$normalizedKeys['content-encoding']]);
175
+
176
  // Fix content-length header
177
  if (isset($normalizedKeys['content-length'])) {
178
+ $headers['x-encoded-content-length'] = $headers[$normalizedKeys['content-length']];
 
 
179
  $length = (int) $stream->getSize();
180
  if ($length === 0) {
181
  unset($headers[$normalizedKeys['content-length']]);
193
  /**
194
  * Drains the source stream into the "sink" client option.
195
  *
196
+ * @param string $contentLength Header specifying the amount of
197
+ * data to read.
 
 
198
  *
 
199
  * @throws \RuntimeException when the sink option is invalid.
200
  */
201
+ private function drain(StreamInterface $source, StreamInterface $sink, string $contentLength): StreamInterface
202
+ {
 
 
 
203
  // If a content-length header is provided, then stop reading once
204
  // that number of bytes has been read. This can prevent infinitely
205
  // reading from a stream when dealing with servers that do not honor
206
  // Connection: Close headers.
207
+ Psr7\Utils::copyToStream(
208
  $source,
209
  $sink,
210
+ (\strlen($contentLength) > 0 && (int) $contentLength > 0) ? (int) $contentLength : -1
211
  );
212
 
213
  $sink->seek(0);
222
  * @param callable $callback Callable that returns stream resource
223
  *
224
  * @return resource
225
+ *
226
  * @throws \RuntimeException on error
227
  */
228
  private function createResource(callable $callback)
229
  {
230
+ $errors = [];
231
+ \set_error_handler(static function ($_, $msg, $file, $line) use (&$errors): bool {
232
  $errors[] = [
233
  'message' => $msg,
234
  'file' => $file,
237
  return true;
238
  });
239
 
240
+ try {
241
+ $resource = $callback();
242
+ } finally {
243
+ \restore_error_handler();
244
+ }
245
 
246
  if (!$resource) {
247
  $message = 'Error creating resource: ';
248
  foreach ($errors as $err) {
249
  foreach ($err as $key => $value) {
250
+ $message .= "[$key] $value" . \PHP_EOL;
251
  }
252
  }
253
+ throw new \RuntimeException(\trim($message));
254
  }
255
 
256
  return $resource;
257
  }
258
 
259
+ /**
260
+ * @return resource
261
+ */
262
  private function createStream(RequestInterface $request, array $options)
263
  {
264
  static $methods;
265
  if (!$methods) {
266
+ $methods = \array_flip(\get_class_methods(__CLASS__));
267
+ }
268
+
269
+ if (!\in_array($request->getUri()->getScheme(), ['http', 'https'])) {
270
+ throw new RequestException(\sprintf("The scheme '%s' is not supported.", $request->getUri()->getScheme()), $request);
271
  }
272
 
273
  // HTTP/1.1 streams using the PHP stream wrapper require a
286
  $params = [];
287
  $context = $this->getDefaultContext($request);
288
 
289
+ if (isset($options['on_headers']) && !\is_callable($options['on_headers'])) {
290
  throw new \InvalidArgumentException('on_headers must be callable');
291
  }
292
 
300
  }
301
 
302
  if (isset($options['stream_context'])) {
303
+ if (!\is_array($options['stream_context'])) {
304
  throw new \InvalidArgumentException('stream_context must be an array');
305
  }
306
+ $context = \array_replace_recursive($context, $options['stream_context']);
 
 
 
307
  }
308
 
309
  // Microsoft NTLM authentication only supported with curl handler
310
+ if (isset($options['auth'][2]) && 'ntlm' === $options['auth'][2]) {
 
 
 
 
311
  throw new \InvalidArgumentException('Microsoft NTLM authentication only supported with curl handler');
312
  }
313
 
314
  $uri = $this->resolveHost($request, $options);
315
 
316
+ $contextResource = $this->createResource(
317
+ static function () use ($context, $params) {
318
+ return \stream_context_create($context, $params);
319
  }
320
  );
321
 
322
  return $this->createResource(
323
+ function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) {
324
+ $resource = @\fopen((string) $uri, 'r', false, $contextResource);
325
+ $this->lastHeaders = $http_response_header ?? [];
326
+
327
+ if (false === $resource) {
328
+ throw new ConnectException(sprintf('Connection refused for URI %s', $uri), $request, null, $context);
329
+ }
330
 
331
  if (isset($options['read_timeout'])) {
332
  $readTimeout = $options['read_timeout'];
333
  $sec = (int) $readTimeout;
334
  $usec = ($readTimeout - $sec) * 100000;
335
+ \stream_set_timeout($resource, $sec, $usec);
336
  }
337
 
338
  return $resource;
340
  );
341
  }
342
 
343
+ private function resolveHost(RequestInterface $request, array $options): UriInterface
344
  {
345
  $uri = $request->getUri();
346
 
347
+ if (isset($options['force_ip_resolve']) && !\filter_var($uri->getHost(), \FILTER_VALIDATE_IP)) {
348
  if ('v4' === $options['force_ip_resolve']) {
349
+ $records = \dns_get_record($uri->getHost(), \DNS_A);
350
+ if (false === $records || !isset($records[0]['ip'])) {
351
+ throw new ConnectException(\sprintf("Could not resolve IPv4 address for host '%s'", $uri->getHost()), $request);
 
 
 
 
 
 
352
  }
353
+ return $uri->withHost($records[0]['ip']);
354
+ }
355
+ if ('v6' === $options['force_ip_resolve']) {
356
+ $records = \dns_get_record($uri->getHost(), \DNS_AAAA);
357
+ if (false === $records || !isset($records[0]['ipv6'])) {
358
+ throw new ConnectException(\sprintf("Could not resolve IPv6 address for host '%s'", $uri->getHost()), $request);
 
 
 
 
 
359
  }
360
+ return $uri->withHost('[' . $records[0]['ipv6'] . ']');
361
  }
362
  }
363
 
364
  return $uri;
365
  }
366
 
367
+ private function getDefaultContext(RequestInterface $request): array
368
  {
369
  $headers = '';
370
  foreach ($request->getHeaders() as $name => $value) {
381
  'ignore_errors' => true,
382
  'follow_location' => 0,
383
  ],
384
+ 'ssl' => [
385
+ 'peer_name' => $request->getUri()->getHost(),
386
+ ],
387
  ];
388
 
389
  $body = (string) $request->getBody();
396
  }
397
  }
398
 
399
+ $context['http']['header'] = \rtrim($context['http']['header']);
400
 
401
  return $context;
402
  }
403
 
404
+ /**
405
+ * @param mixed $value as passed via Request transfer options.
406
+ */
407
+ private function add_proxy(RequestInterface $request, array &$options, $value, array &$params): void
408
  {
409
+ $uri = null;
410
+
411
+ if (!\is_array($value)) {
412
+ $uri = $value;
413
  } else {
414
  $scheme = $request->getUri()->getScheme();
415
  if (isset($value[$scheme])) {
416
+ if (!isset($value['no']) || !Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) {
417
+ $uri = $value[$scheme];
 
 
 
 
 
418
  }
419
  }
420
  }
421
+
422
+ if (!$uri) {
423
+ return;
424
+ }
425
+
426
+ $parsed = $this->parse_proxy($uri);
427
+ $options['http']['proxy'] = $parsed['proxy'];
428
+
429
+ if ($parsed['auth']) {
430
+ if (!isset($options['http']['header'])) {
431
+ $options['http']['header'] = [];
432
+ }
433
+ $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}";
434
+ }
435
  }
436
 
437
+ /**
438
+ * Parses the given proxy URL to make it compatible with the format PHP's stream context expects.
439
+ */
440
+ private function parse_proxy(string $url): array
441
+ {
442
+ $parsed = \parse_url($url);
443
+
444
+ if ($parsed !== false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') {
445
+ if (isset($parsed['host']) && isset($parsed['port'])) {
446
+ $auth = null;
447
+ if (isset($parsed['user']) && isset($parsed['pass'])) {
448
+ $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}");
449
+ }
450
+
451
+ return [
452
+ 'proxy' => "tcp://{$parsed['host']}:{$parsed['port']}",
453
+ 'auth' => $auth ? "Basic {$auth}" : null,
454
+ ];
455
+ }
456
+ }
457
+
458
+ // Return proxy as-is.
459
+ return [
460
+ 'proxy' => $url,
461
+ 'auth' => null,
462
+ ];
463
+ }
464
+
465
+ /**
466
+ * @param mixed $value as passed via Request transfer options.
467
+ */
468
+ private function add_timeout(RequestInterface $request, array &$options, $value, array &$params): void
469
  {
470
  if ($value > 0) {
471
  $options['http']['timeout'] = $value;
472
  }
473
  }
474
 
475
+ /**
476
+ * @param mixed $value as passed via Request transfer options.
477
+ */
478
+ private function add_verify(RequestInterface $request, array &$options, $value, array &$params): void
479
  {
480
+ if ($value === false) {
 
 
 
 
 
 
 
 
 
 
 
481
  $options['ssl']['verify_peer'] = false;
482
  $options['ssl']['verify_peer_name'] = false;
483
+
484
  return;
485
+ }
486
+
487
+ if (\is_string($value)) {
488
+ $options['ssl']['cafile'] = $value;
489
+ if (!\file_exists($value)) {
490
+ throw new \RuntimeException("SSL CA bundle not found: $value");
491
+ }
492
+ } elseif ($value !== true) {
493
  throw new \InvalidArgumentException('Invalid verify request option');
494
  }
495
 
498
  $options['ssl']['allow_self_signed'] = false;
499
  }
500
 
501
+ /**
502
+ * @param mixed $value as passed via Request transfer options.
503
+ */
504
+ private function add_cert(RequestInterface $request, array &$options, $value, array &$params): void
505
  {
506
+ if (\is_array($value)) {
507
  $options['ssl']['passphrase'] = $value[1];
508
  $value = $value[0];
509
  }
510
 
511
+ if (!\file_exists($value)) {
512
  throw new \RuntimeException("SSL certificate not found: {$value}");
513
  }
514
 
515
  $options['ssl']['local_cert'] = $value;
516
  }
517
 
518
+ /**
519
+ * @param mixed $value as passed via Request transfer options.
520
+ */
521
+ private function add_progress(RequestInterface $request, array &$options, $value, array &$params): void
522
  {
523
+ self::addNotification(
524
  $params,
525
+ static function ($code, $a, $b, $c, $transferred, $total) use ($value) {
526
+ if ($code == \STREAM_NOTIFY_PROGRESS) {
527
+ // The upload progress cannot be determined. Use 0 for cURL compatibility:
528
+ // https://curl.se/libcurl/c/CURLOPT_PROGRESSFUNCTION.html
529
+ $value($total, $transferred, 0, 0);
530
  }
531
  }
532
  );
533
  }
534
 
535
+ /**
536
+ * @param mixed $value as passed via Request transfer options.
537
+ */
538
+ private function add_debug(RequestInterface $request, array &$options, $value, array &$params): void
539
  {
540
  if ($value === false) {
541
  return;
542
  }
543
 
544
  static $map = [
545
+ \STREAM_NOTIFY_CONNECT => 'CONNECT',
546
+ \STREAM_NOTIFY_AUTH_REQUIRED => 'AUTH_REQUIRED',
547
+ \STREAM_NOTIFY_AUTH_RESULT => 'AUTH_RESULT',
548
+ \STREAM_NOTIFY_MIME_TYPE_IS => 'MIME_TYPE_IS',
549
+ \STREAM_NOTIFY_FILE_SIZE_IS => 'FILE_SIZE_IS',
550
+ \STREAM_NOTIFY_REDIRECTED => 'REDIRECTED',
551
+ \STREAM_NOTIFY_PROGRESS => 'PROGRESS',
552
+ \STREAM_NOTIFY_FAILURE => 'FAILURE',
553
+ \STREAM_NOTIFY_COMPLETED => 'COMPLETED',
554
+ \STREAM_NOTIFY_RESOLVE => 'RESOLVE',
555
  ];
556
+ static $args = ['severity', 'message', 'message_code', 'bytes_transferred', 'bytes_max'];
 
557
 
558
+ $value = Utils::debugResource($value);
559
  $ident = $request->getMethod() . ' ' . $request->getUri()->withFragment('');
560
+ self::addNotification(
561
  $params,
562
+ static function (int $code, ...$passed) use ($ident, $value, $map, $args): void {
563
+ \fprintf($value, '<%s> [%s] ', $ident, $map[$code]);
564
+ foreach (\array_filter($passed) as $i => $v) {
565
+ \fwrite($value, $args[$i] . ': "' . $v . '" ');
 
 
566
  }
567
+ \fwrite($value, "\n");
568
  }
569
  );
570
  }
571
 
572
+ private static function addNotification(array &$params, callable $notify): void
573
  {
574
  // Wrap the existing function if needed.
575
  if (!isset($params['notification'])) {
576
  $params['notification'] = $notify;
577
  } else {
578
+ $params['notification'] = self::callArray([
579
  $params['notification'],
580
  $notify
581
  ]);
582
  }
583
  }
584
 
585
+ private static function callArray(array $functions): callable
586
  {
587
+ return static function (...$args) use ($functions) {
 
588
  foreach ($functions as $fn) {
589
+ $fn(...$args);
590
  }
591
  };
592
  }
vendor/guzzlehttp/guzzle/src/HandlerStack.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Promise\PromiseInterface;
@@ -8,16 +9,24 @@ use Psr\Http\Message\ResponseInterface;
8
  /**
9
  * Creates a composed Guzzle handler function by stacking middlewares on top of
10
  * an HTTP handler function.
 
 
11
  */
12
  class HandlerStack
13
  {
14
- /** @var callable|null */
 
 
15
  private $handler;
16
 
17
- /** @var array */
 
 
18
  private $stack = [];
19
 
20
- /** @var callable|null */
 
 
21
  private $cached;
22
 
23
  /**
@@ -31,15 +40,13 @@ class HandlerStack
31
  * The returned handler stack can be passed to a client in the "handler"
32
  * option.
33
  *
34
- * @param callable $handler HTTP handler function to use with the stack. If no
35
- * handler is provided, the best handler for your
36
- * system will be utilized.
37
- *
38
- * @return HandlerStack
39
  */
40
- public static function create(callable $handler = null)
41
  {
42
- $stack = new self($handler ?: choose_handler());
43
  $stack->push(Middleware::httpErrors(), 'http_errors');
44
  $stack->push(Middleware::redirect(), 'allow_redirects');
45
  $stack->push(Middleware::cookies(), 'cookies');
@@ -49,7 +56,7 @@ class HandlerStack
49
  }
50
 
51
  /**
52
- * @param callable $handler Underlying HTTP handler.
53
  */
54
  public function __construct(callable $handler = null)
55
  {
@@ -59,9 +66,6 @@ class HandlerStack
59
  /**
60
  * Invokes the handler stack as a composed handler
61
  *
62
- * @param RequestInterface $request
63
- * @param array $options
64
- *
65
  * @return ResponseInterface|PromiseInterface
66
  */
67
  public function __invoke(RequestInterface $request, array $options)
@@ -80,12 +84,13 @@ class HandlerStack
80
  {
81
  $depth = 0;
82
  $stack = [];
83
- if ($this->handler) {
 
84
  $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
85
  }
86
 
87
  $result = '';
88
- foreach (array_reverse($this->stack) as $tuple) {
89
  $depth++;
90
  $str = "{$depth}) Name: '{$tuple[1]}', ";
91
  $str .= "Function: " . $this->debugCallable($tuple[0]);
@@ -93,7 +98,7 @@ class HandlerStack
93
  $stack[] = $str;
94
  }
95
 
96
- foreach (array_keys($stack) as $k) {
97
  $result .= "< {$stack[$k]}\n";
98
  }
99
 
@@ -103,10 +108,10 @@ class HandlerStack
103
  /**
104
  * Set the HTTP handler that actually returns a promise.
105
  *
106
- * @param callable $handler Accepts a request and array of options and
107
- * returns a Promise.
108
  */
109
- public function setHandler(callable $handler)
110
  {
111
  $this->handler = $handler;
112
  $this->cached = null;
@@ -114,33 +119,31 @@ class HandlerStack
114
 
115
  /**
116
  * Returns true if the builder has a handler.
117
- *
118
- * @return bool
119
  */
120
- public function hasHandler()
121
  {
122
- return (bool) $this->handler;
123
  }
124
 
125
  /**
126
  * Unshift a middleware to the bottom of the stack.
127
  *
128
- * @param callable $middleware Middleware function
129
- * @param string $name Name to register for this middleware.
130
  */
131
- public function unshift(callable $middleware, $name = null)
132
  {
133
- array_unshift($this->stack, [$middleware, $name]);
134
  $this->cached = null;
135
  }
136
 
137
  /**
138
  * Push a middleware to the top of the stack.
139
  *
140
- * @param callable $middleware Middleware function
141
- * @param string $name Name to register for this middleware.
142
  */
143
- public function push(callable $middleware, $name = '')
144
  {
145
  $this->stack[] = [$middleware, $name];
146
  $this->cached = null;
@@ -149,11 +152,11 @@ class HandlerStack
149
  /**
150
  * Add a middleware before another middleware by name.
151
  *
152
- * @param string $findName Middleware to find
153
- * @param callable $middleware Middleware function
154
- * @param string $withName Name to register for this middleware.
155
  */
156
- public function before($findName, callable $middleware, $withName = '')
157
  {
158
  $this->splice($findName, $withName, $middleware, true);
159
  }
@@ -161,11 +164,11 @@ class HandlerStack
161
  /**
162
  * Add a middleware after another middleware by name.
163
  *
164
- * @param string $findName Middleware to find
165
- * @param callable $middleware Middleware function
166
- * @param string $withName Name to register for this middleware.
167
  */
168
- public function after($findName, callable $middleware, $withName = '')
169
  {
170
  $this->splice($findName, $withName, $middleware, false);
171
  }
@@ -175,13 +178,17 @@ class HandlerStack
175
  *
176
  * @param callable|string $remove Middleware to remove by instance or name.
177
  */
178
- public function remove($remove)
179
  {
 
 
 
 
180
  $this->cached = null;
181
- $idx = is_callable($remove) ? 0 : 1;
182
- $this->stack = array_values(array_filter(
183
  $this->stack,
184
- function ($tuple) use ($idx, $remove) {
185
  return $tuple[$idx] !== $remove;
186
  }
187
  ));
@@ -190,16 +197,17 @@ class HandlerStack
190
  /**
191
  * Compose the middleware and handler into a single callable function.
192
  *
193
- * @return callable
194
  */
195
- public function resolve()
196
  {
197
- if (!$this->cached) {
198
- if (!($prev = $this->handler)) {
199
  throw new \LogicException('No handler has been specified');
200
  }
201
 
202
- foreach (array_reverse($this->stack) as $fn) {
 
203
  $prev = $fn[0]($prev);
204
  }
205
 
@@ -209,11 +217,7 @@ class HandlerStack
209
  return $this->cached;
210
  }
211
 
212
- /**
213
- * @param string $name
214
- * @return int
215
- */
216
- private function findByName($name)
217
  {
218
  foreach ($this->stack as $k => $v) {
219
  if ($v[1] === $name) {
@@ -226,13 +230,8 @@ class HandlerStack
226
 
227
  /**
228
  * Splices a function into the middleware list at a specific position.
229
- *
230
- * @param string $findName
231
- * @param string $withName
232
- * @param callable $middleware
233
- * @param bool $before
234
  */
235
- private function splice($findName, $withName, callable $middleware, $before)
236
  {
237
  $this->cached = null;
238
  $idx = $this->findByName($findName);
@@ -240,38 +239,37 @@ class HandlerStack
240
 
241
  if ($before) {
242
  if ($idx === 0) {
243
- array_unshift($this->stack, $tuple);
244
  } else {
245
  $replacement = [$tuple, $this->stack[$idx]];
246
- array_splice($this->stack, $idx, 1, $replacement);
247
  }
248
- } elseif ($idx === count($this->stack) - 1) {
249
  $this->stack[] = $tuple;
250
  } else {
251
  $replacement = [$this->stack[$idx], $tuple];
252
- array_splice($this->stack, $idx, 1, $replacement);
253
  }
254
  }
255
 
256
  /**
257
  * Provides a debug string for a given callable.
258
  *
259
- * @param array|callable $fn Function to write as a string.
260
- *
261
- * @return string
262
  */
263
- private function debugCallable($fn)
264
  {
265
- if (is_string($fn)) {
266
  return "callable({$fn})";
267
  }
268
 
269
- if (is_array($fn)) {
270
- return is_string($fn[0])
271
  ? "callable({$fn[0]}::{$fn[1]})"
272
- : "callable(['" . get_class($fn[0]) . "', '{$fn[1]}'])";
273
  }
274
 
275
- return 'callable(' . spl_object_hash($fn) . ')';
 
276
  }
277
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Promise\PromiseInterface;
9
  /**
10
  * Creates a composed Guzzle handler function by stacking middlewares on top of
11
  * an HTTP handler function.
12
+ *
13
+ * @final
14
  */
15
  class HandlerStack
16
  {
17
+ /**
18
+ * @var (callable(RequestInterface, array): PromiseInterface)|null
19
+ */
20
  private $handler;
21
 
22
+ /**
23
+ * @var array{(callable(callable(RequestInterface, array): PromiseInterface): callable), (string|null)}[]
24
+ */
25
  private $stack = [];
26
 
27
+ /**
28
+ * @var (callable(RequestInterface, array): PromiseInterface)|null
29
+ */
30
  private $cached;
31
 
32
  /**
40
  * The returned handler stack can be passed to a client in the "handler"
41
  * option.
42
  *
43
+ * @param (callable(RequestInterface, array): PromiseInterface)|null $handler HTTP handler function to use with the stack. If no
44
+ * handler is provided, the best handler for your
45
+ * system will be utilized.
 
 
46
  */
47
+ public static function create(?callable $handler = null): self
48
  {
49
+ $stack = new self($handler ?: Utils::chooseHandler());
50
  $stack->push(Middleware::httpErrors(), 'http_errors');
51
  $stack->push(Middleware::redirect(), 'allow_redirects');
52
  $stack->push(Middleware::cookies(), 'cookies');
56
  }
57
 
58
  /**
59
+ * @param (callable(RequestInterface, array): PromiseInterface)|null $handler Underlying HTTP handler.
60
  */
61
  public function __construct(callable $handler = null)
62
  {
66
  /**
67
  * Invokes the handler stack as a composed handler
68
  *
 
 
 
69
  * @return ResponseInterface|PromiseInterface
70
  */
71
  public function __invoke(RequestInterface $request, array $options)
84
  {
85
  $depth = 0;
86
  $stack = [];
87
+
88
+ if ($this->handler !== null) {
89
  $stack[] = "0) Handler: " . $this->debugCallable($this->handler);
90
  }
91
 
92
  $result = '';
93
+ foreach (\array_reverse($this->stack) as $tuple) {
94
  $depth++;
95
  $str = "{$depth}) Name: '{$tuple[1]}', ";
96
  $str .= "Function: " . $this->debugCallable($tuple[0]);
98
  $stack[] = $str;
99
  }
100
 
101
+ foreach (\array_keys($stack) as $k) {
102
  $result .= "< {$stack[$k]}\n";
103
  }
104
 
108
  /**
109
  * Set the HTTP handler that actually returns a promise.
110
  *
111
+ * @param callable(RequestInterface, array): PromiseInterface $handler Accepts a request and array of options and
112
+ * returns a Promise.
113
  */
114
+ public function setHandler(callable $handler): void
115
  {
116
  $this->handler = $handler;
117
  $this->cached = null;
119
 
120
  /**
121
  * Returns true if the builder has a handler.
 
 
122
  */
123
+ public function hasHandler(): bool
124
  {
125
+ return $this->handler !== null ;
126
  }
127
 
128
  /**
129
  * Unshift a middleware to the bottom of the stack.
130
  *
131
+ * @param callable(callable): callable $middleware Middleware function
132
+ * @param string $name Name to register for this middleware.
133
  */
134
+ public function unshift(callable $middleware, ?string $name = null): void
135
  {
136
+ \array_unshift($this->stack, [$middleware, $name]);
137
  $this->cached = null;
138
  }
139
 
140
  /**
141
  * Push a middleware to the top of the stack.
142
  *
143
+ * @param callable(callable): callable $middleware Middleware function
144
+ * @param string $name Name to register for this middleware.
145
  */
146
+ public function push(callable $middleware, string $name = ''): void
147
  {
148
  $this->stack[] = [$middleware, $name];
149
  $this->cached = null;
152
  /**
153
  * Add a middleware before another middleware by name.
154
  *
155
+ * @param string $findName Middleware to find
156
+ * @param callable(callable): callable $middleware Middleware function
157
+ * @param string $withName Name to register for this middleware.
158
  */
159
+ public function before(string $findName, callable $middleware, string $withName = ''): void
160
  {
161
  $this->splice($findName, $withName, $middleware, true);
162
  }
164
  /**
165
  * Add a middleware after another middleware by name.
166
  *
167
+ * @param string $findName Middleware to find
168
+ * @param callable(callable): callable $middleware Middleware function
169
+ * @param string $withName Name to register for this middleware.
170
  */
171
+ public function after(string $findName, callable $middleware, string $withName = ''): void
172
  {
173
  $this->splice($findName, $withName, $middleware, false);
174
  }
178
  *
179
  * @param callable|string $remove Middleware to remove by instance or name.
180
  */
181
+ public function remove($remove): void
182
  {
183
+ if (!is_string($remove) && !is_callable($remove)) {
184
+ trigger_deprecation('guzzlehttp/guzzle', '7.4', 'Not passing a callable or string to %s::%s() is deprecated and will cause an error in 8.0.', __CLASS__, __FUNCTION__);
185
+ }
186
+
187
  $this->cached = null;
188
+ $idx = \is_callable($remove) ? 0 : 1;
189
+ $this->stack = \array_values(\array_filter(
190
  $this->stack,
191
+ static function ($tuple) use ($idx, $remove) {
192
  return $tuple[$idx] !== $remove;
193
  }
194
  ));
197
  /**
198
  * Compose the middleware and handler into a single callable function.
199
  *
200
+ * @return callable(RequestInterface, array): PromiseInterface
201
  */
202
+ public function resolve(): callable
203
  {
204
+ if ($this->cached === null) {
205
+ if (($prev = $this->handler) === null) {
206
  throw new \LogicException('No handler has been specified');
207
  }
208
 
209
+ foreach (\array_reverse($this->stack) as $fn) {
210
+ /** @var callable(RequestInterface, array): PromiseInterface $prev */
211
  $prev = $fn[0]($prev);
212
  }
213
 
217
  return $this->cached;
218
  }
219
 
220
+ private function findByName(string $name): int
 
 
 
 
221
  {
222
  foreach ($this->stack as $k => $v) {
223
  if ($v[1] === $name) {
230
 
231
  /**
232
  * Splices a function into the middleware list at a specific position.
 
 
 
 
 
233
  */
234
+ private function splice(string $findName, string $withName, callable $middleware, bool $before): void
235
  {
236
  $this->cached = null;
237
  $idx = $this->findByName($findName);
239
 
240
  if ($before) {
241
  if ($idx === 0) {
242
+ \array_unshift($this->stack, $tuple);
243
  } else {
244
  $replacement = [$tuple, $this->stack[$idx]];
245
+ \array_splice($this->stack, $idx, 1, $replacement);
246
  }
247
+ } elseif ($idx === \count($this->stack) - 1) {
248
  $this->stack[] = $tuple;
249
  } else {
250
  $replacement = [$this->stack[$idx], $tuple];
251
+ \array_splice($this->stack, $idx, 1, $replacement);
252
  }
253
  }
254
 
255
  /**
256
  * Provides a debug string for a given callable.
257
  *
258
+ * @param callable|string $fn Function to write as a string.
 
 
259
  */
260
+ private function debugCallable($fn): string
261
  {
262
+ if (\is_string($fn)) {
263
  return "callable({$fn})";
264
  }
265
 
266
+ if (\is_array($fn)) {
267
+ return \is_string($fn[0])
268
  ? "callable({$fn[0]}::{$fn[1]})"
269
+ : "callable(['" . \get_class($fn[0]) . "', '{$fn[1]}'])";
270
  }
271
 
272
+ /** @var object $fn */
273
+ return 'callable(' . \spl_object_hash($fn) . ')';
274
  }
275
  }
vendor/guzzlehttp/guzzle/src/MessageFormatter.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use Psr\Http\Message\MessageInterface;
@@ -31,25 +32,31 @@ use Psr\Http\Message\ResponseInterface;
31
  * - {res_headers}: Response headers
32
  * - {req_body}: Request body
33
  * - {res_body}: Response body
 
 
34
  */
35
- class MessageFormatter
36
  {
37
  /**
38
  * Apache Common Log Format.
39
- * @link http://httpd.apache.org/docs/2.4/logs.html#common
 
 
40
  * @var string
41
  */
42
- const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
43
- const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
44
- const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
45
 
46
- /** @var string Template used to format log messages */
 
 
47
  private $template;
48
 
49
  /**
50
  * @param string $template Log message template
51
  */
52
- public function __construct($template = self::CLF)
53
  {
54
  $this->template = $template ?: self::CLF;
55
  }
@@ -57,20 +64,16 @@ class MessageFormatter
57
  /**
58
  * Returns a formatted message string.
59
  *
60
- * @param RequestInterface $request Request that was sent
61
- * @param ResponseInterface $response Response that was received
62
- * @param \Exception $error Exception that was received
63
- *
64
- * @return string
65
  */
66
- public function format(
67
- RequestInterface $request,
68
- ResponseInterface $response = null,
69
- \Exception $error = null
70
- ) {
71
  $cache = [];
72
 
73
- return preg_replace_callback(
 
74
  '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
75
  function (array $matches) use ($request, $response, $error, &$cache) {
76
  if (isset($cache[$matches[1]])) {
@@ -80,20 +83,20 @@ class MessageFormatter
80
  $result = '';
81
  switch ($matches[1]) {
82
  case 'request':
83
- $result = Psr7\str($request);
84
  break;
85
  case 'response':
86
- $result = $response ? Psr7\str($response) : '';
87
  break;
88
  case 'req_headers':
89
- $result = trim($request->getMethod()
90
  . ' ' . $request->getRequestTarget())
91
  . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
92
  . $this->headers($request);
93
  break;
94
  case 'res_headers':
95
  $result = $response ?
96
- sprintf(
97
  'HTTP/%s %d %s',
98
  $response->getProtocolVersion(),
99
  $response->getStatusCode(),
@@ -102,17 +105,29 @@ class MessageFormatter
102
  : 'NULL';
103
  break;
104
  case 'req_body':
105
- $result = $request->getBody();
106
  break;
107
  case 'res_body':
108
- $result = $response ? $response->getBody() : 'NULL';
 
 
 
 
 
 
 
 
 
 
 
 
109
  break;
110
  case 'ts':
111
  case 'date_iso_8601':
112
- $result = gmdate('c');
113
  break;
114
  case 'date_common_log':
115
- $result = date('d/M/Y:H:i:s O');
116
  break;
117
  case 'method':
118
  $result = $request->getMethod();
@@ -122,7 +137,7 @@ class MessageFormatter
122
  break;
123
  case 'uri':
124
  case 'url':
125
- $result = $request->getUri();
126
  break;
127
  case 'target':
128
  $result = $request->getRequestTarget();
@@ -139,7 +154,7 @@ class MessageFormatter
139
  $result = $request->getHeaderLine('Host');
140
  break;
141
  case 'hostname':
142
- $result = gethostname();
143
  break;
144
  case 'code':
145
  $result = $response ? $response->getStatusCode() : 'NULL';
@@ -152,11 +167,11 @@ class MessageFormatter
152
  break;
153
  default:
154
  // handle prefixed dynamic headers
155
- if (strpos($matches[1], 'req_header_') === 0) {
156
- $result = $request->getHeaderLine(substr($matches[1], 11));
157
- } elseif (strpos($matches[1], 'res_header_') === 0) {
158
  $result = $response
159
- ? $response->getHeaderLine(substr($matches[1], 11))
160
  : 'NULL';
161
  }
162
  }
@@ -170,16 +185,14 @@ class MessageFormatter
170
 
171
  /**
172
  * Get headers from message as string
173
- *
174
- * @return string
175
  */
176
- private function headers(MessageInterface $message)
177
  {
178
  $result = '';
179
  foreach ($message->getHeaders() as $name => $values) {
180
- $result .= $name . ': ' . implode(', ', $values) . "\r\n";
181
  }
182
 
183
- return trim($result);
184
  }
185
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use Psr\Http\Message\MessageInterface;
32
  * - {res_headers}: Response headers
33
  * - {req_body}: Request body
34
  * - {res_body}: Response body
35
+ *
36
+ * @final
37
  */
38
+ class MessageFormatter implements MessageFormatterInterface
39
  {
40
  /**
41
  * Apache Common Log Format.
42
+ *
43
+ * @link https://httpd.apache.org/docs/2.4/logs.html#common
44
+ *
45
  * @var string
46
  */
47
+ public const CLF = "{hostname} {req_header_User-Agent} - [{date_common_log}] \"{method} {target} HTTP/{version}\" {code} {res_header_Content-Length}";
48
+ public const DEBUG = ">>>>>>>>\n{request}\n<<<<<<<<\n{response}\n--------\n{error}";
49
+ public const SHORT = '[{ts}] "{method} {target} HTTP/{version}" {code}';
50
 
51
+ /**
52
+ * @var string Template used to format log messages
53
+ */
54
  private $template;
55
 
56
  /**
57
  * @param string $template Log message template
58
  */
59
+ public function __construct(?string $template = self::CLF)
60
  {
61
  $this->template = $template ?: self::CLF;
62
  }
64
  /**
65
  * Returns a formatted message string.
66
  *
67
+ * @param RequestInterface $request Request that was sent
68
+ * @param ResponseInterface|null $response Response that was received
69
+ * @param \Throwable|null $error Exception that was received
 
 
70
  */
71
+ public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string
72
+ {
 
 
 
73
  $cache = [];
74
 
75
+ /** @var string */
76
+ return \preg_replace_callback(
77
  '/{\s*([A-Za-z_\-\.0-9]+)\s*}/',
78
  function (array $matches) use ($request, $response, $error, &$cache) {
79
  if (isset($cache[$matches[1]])) {
83
  $result = '';
84
  switch ($matches[1]) {
85
  case 'request':
86
+ $result = Psr7\Message::toString($request);
87
  break;
88
  case 'response':
89
+ $result = $response ? Psr7\Message::toString($response) : '';
90
  break;
91
  case 'req_headers':
92
+ $result = \trim($request->getMethod()
93
  . ' ' . $request->getRequestTarget())
94
  . ' HTTP/' . $request->getProtocolVersion() . "\r\n"
95
  . $this->headers($request);
96
  break;
97
  case 'res_headers':
98
  $result = $response ?
99
+ \sprintf(
100
  'HTTP/%s %d %s',
101
  $response->getProtocolVersion(),
102
  $response->getStatusCode(),
105
  : 'NULL';
106
  break;
107
  case 'req_body':
108
+ $result = $request->getBody()->__toString();
109
  break;
110
  case 'res_body':
111
+ if (!$response instanceof ResponseInterface) {
112
+ $result = 'NULL';
113
+ break;
114
+ }
115
+
116
+ $body = $response->getBody();
117
+
118
+ if (!$body->isSeekable()) {
119
+ $result = 'RESPONSE_NOT_LOGGEABLE';
120
+ break;
121
+ }
122
+
123
+ $result = $response->getBody()->__toString();
124
  break;
125
  case 'ts':
126
  case 'date_iso_8601':
127
+ $result = \gmdate('c');
128
  break;
129
  case 'date_common_log':
130
+ $result = \date('d/M/Y:H:i:s O');
131
  break;
132
  case 'method':
133
  $result = $request->getMethod();
137
  break;
138
  case 'uri':
139
  case 'url':
140
+ $result = $request->getUri()->__toString();
141
  break;
142
  case 'target':
143
  $result = $request->getRequestTarget();
154
  $result = $request->getHeaderLine('Host');
155
  break;
156
  case 'hostname':
157
+ $result = \gethostname();
158
  break;
159
  case 'code':
160
  $result = $response ? $response->getStatusCode() : 'NULL';
167
  break;
168
  default:
169
  // handle prefixed dynamic headers
170
+ if (\strpos($matches[1], 'req_header_') === 0) {
171
+ $result = $request->getHeaderLine(\substr($matches[1], 11));
172
+ } elseif (\strpos($matches[1], 'res_header_') === 0) {
173
  $result = $response
174
+ ? $response->getHeaderLine(\substr($matches[1], 11))
175
  : 'NULL';
176
  }
177
  }
185
 
186
  /**
187
  * Get headers from message as string
 
 
188
  */
189
+ private function headers(MessageInterface $message): string
190
  {
191
  $result = '';
192
  foreach ($message->getHeaders() as $name => $values) {
193
+ $result .= $name . ': ' . \implode(', ', $values) . "\r\n";
194
  }
195
 
196
+ return \trim($result);
197
  }
198
  }
vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace GuzzleHttp;
4
+
5
+ use Psr\Http\Message\RequestInterface;
6
+ use Psr\Http\Message\ResponseInterface;
7
+
8
+ interface MessageFormatterInterface
9
+ {
10
+ /**
11
+ * Returns a formatted message string.
12
+ *
13
+ * @param RequestInterface $request Request that was sent
14
+ * @param ResponseInterface|null $response Response that was received
15
+ * @param \Throwable|null $error Exception that was received
16
+ */
17
+ public function format(RequestInterface $request, ?ResponseInterface $response = null, ?\Throwable $error = null): string;
18
+ }
vendor/guzzlehttp/guzzle/src/Middleware.php CHANGED
@@ -1,10 +1,12 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Cookie\CookieJarInterface;
5
  use GuzzleHttp\Exception\RequestException;
6
- use GuzzleHttp\Promise\RejectedPromise;
7
- use GuzzleHttp\Psr7;
 
8
  use Psr\Http\Message\ResponseInterface;
9
  use Psr\Log\LoggerInterface;
10
 
@@ -21,10 +23,10 @@ final class Middleware
21
  *
22
  * @return callable Returns a function that accepts the next handler.
23
  */
24
- public static function cookies()
25
  {
26
- return function (callable $handler) {
27
- return function ($request, array $options) use ($handler) {
28
  if (empty($options['cookies'])) {
29
  return $handler($request, $options);
30
  } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
@@ -34,7 +36,7 @@ final class Middleware
34
  $request = $cookieJar->withCookieHeader($request);
35
  return $handler($request, $options)
36
  ->then(
37
- function ($response) use ($cookieJar, $request) {
38
  $cookieJar->extractCookies($request, $response);
39
  return $response;
40
  }
@@ -45,24 +47,26 @@ final class Middleware
45
 
46
  /**
47
  * Middleware that throws exceptions for 4xx or 5xx responses when the
48
- * "http_error" request option is set to true.
49
  *
50
- * @return callable Returns a function that accepts the next handler.
 
 
51
  */
52
- public static function httpErrors()
53
  {
54
- return function (callable $handler) {
55
- return function ($request, array $options) use ($handler) {
56
  if (empty($options['http_errors'])) {
57
  return $handler($request, $options);
58
  }
59
  return $handler($request, $options)->then(
60
- function (ResponseInterface $response) use ($request) {
61
  $code = $response->getStatusCode();
62
  if ($code < 400) {
63
  return $response;
64
  }
65
- throw RequestException::create($request, $response);
66
  }
67
  );
68
  };
@@ -72,21 +76,22 @@ final class Middleware
72
  /**
73
  * Middleware that pushes history data to an ArrayAccess container.
74
  *
75
- * @param array|\ArrayAccess $container Container to hold the history (by reference).
 
 
76
  *
77
- * @return callable Returns a function that accepts the next handler.
78
  * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
79
  */
80
- public static function history(&$container)
81
  {
82
- if (!is_array($container) && !$container instanceof \ArrayAccess) {
83
  throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
84
  }
85
 
86
- return function (callable $handler) use (&$container) {
87
- return function ($request, array $options) use ($handler, &$container) {
88
  return $handler($request, $options)->then(
89
- function ($value) use ($request, &$container, $options) {
90
  $container[] = [
91
  'request' => $request,
92
  'response' => $value,
@@ -95,14 +100,14 @@ final class Middleware
95
  ];
96
  return $value;
97
  },
98
- function ($reason) use ($request, &$container, $options) {
99
  $container[] = [
100
  'request' => $request,
101
  'response' => null,
102
  'error' => $reason,
103
  'options' => $options
104
  ];
105
- return \GuzzleHttp\Promise\rejection_for($reason);
106
  }
107
  );
108
  };
@@ -122,10 +127,10 @@ final class Middleware
122
  *
123
  * @return callable Returns a function that accepts the next handler.
124
  */
125
- public static function tap(callable $before = null, callable $after = null)
126
  {
127
- return function (callable $handler) use ($before, $after) {
128
- return function ($request, array $options) use ($handler, $before, $after) {
129
  if ($before) {
130
  $before($request, $options);
131
  }
@@ -143,9 +148,9 @@ final class Middleware
143
  *
144
  * @return callable Returns a function that accepts the next handler.
145
  */
146
- public static function redirect()
147
  {
148
- return function (callable $handler) {
149
  return new RedirectMiddleware($handler);
150
  };
151
  }
@@ -165,9 +170,9 @@ final class Middleware
165
  *
166
  * @return callable Returns a function that accepts the next handler.
167
  */
168
- public static function retry(callable $decider, callable $delay = null)
169
  {
170
- return function (callable $handler) use ($decider, $delay) {
171
  return new RetryMiddleware($decider, $handler, $delay);
172
  };
173
  }
@@ -176,29 +181,34 @@ final class Middleware
176
  * Middleware that logs requests, responses, and errors using a message
177
  * formatter.
178
  *
179
- * @param LoggerInterface $logger Logs messages.
180
- * @param MessageFormatter $formatter Formatter used to create message strings.
181
- * @param string $logLevel Level at which to log requests.
 
 
182
  *
183
  * @return callable Returns a function that accepts the next handler.
184
  */
185
- public static function log(LoggerInterface $logger, MessageFormatter $formatter, $logLevel = 'info' /* \Psr\Log\LogLevel::INFO */)
186
  {
187
- return function (callable $handler) use ($logger, $formatter, $logLevel) {
188
- return function ($request, array $options) use ($handler, $logger, $formatter, $logLevel) {
 
 
 
 
 
189
  return $handler($request, $options)->then(
190
- function ($response) use ($logger, $request, $formatter, $logLevel) {
191
  $message = $formatter->format($request, $response);
192
  $logger->log($logLevel, $message);
193
  return $response;
194
  },
195
- function ($reason) use ($logger, $request, $formatter) {
196
- $response = $reason instanceof RequestException
197
- ? $reason->getResponse()
198
- : null;
199
- $message = $formatter->format($request, $response, $reason);
200
- $logger->notice($message);
201
- return \GuzzleHttp\Promise\rejection_for($reason);
202
  }
203
  );
204
  };
@@ -208,12 +218,10 @@ final class Middleware
208
  /**
209
  * This middleware adds a default content-type if possible, a default
210
  * content-length or transfer-encoding header, and the expect header.
211
- *
212
- * @return callable
213
  */
214
- public static function prepareBody()
215
  {
216
- return function (callable $handler) {
217
  return new PrepareBodyMiddleware($handler);
218
  };
219
  }
@@ -224,12 +232,11 @@ final class Middleware
224
  *
225
  * @param callable $fn Function that accepts a RequestInterface and returns
226
  * a RequestInterface.
227
- * @return callable
228
  */
229
- public static function mapRequest(callable $fn)
230
  {
231
- return function (callable $handler) use ($fn) {
232
- return function ($request, array $options) use ($handler, $fn) {
233
  return $handler($fn($request), $options);
234
  };
235
  };
@@ -241,12 +248,11 @@ final class Middleware
241
  *
242
  * @param callable $fn Function that accepts a ResponseInterface and
243
  * returns a ResponseInterface.
244
- * @return callable
245
  */
246
- public static function mapResponse(callable $fn)
247
  {
248
- return function (callable $handler) use ($fn) {
249
- return function ($request, array $options) use ($handler, $fn) {
250
  return $handler($request, $options)->then($fn);
251
  };
252
  };
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Cookie\CookieJarInterface;
6
  use GuzzleHttp\Exception\RequestException;
7
+ use GuzzleHttp\Promise as P;
8
+ use GuzzleHttp\Promise\PromiseInterface;
9
+ use Psr\Http\Message\RequestInterface;
10
  use Psr\Http\Message\ResponseInterface;
11
  use Psr\Log\LoggerInterface;
12
 
23
  *
24
  * @return callable Returns a function that accepts the next handler.
25
  */
26
+ public static function cookies(): callable
27
  {
28
+ return static function (callable $handler): callable {
29
+ return static function ($request, array $options) use ($handler) {
30
  if (empty($options['cookies'])) {
31
  return $handler($request, $options);
32
  } elseif (!($options['cookies'] instanceof CookieJarInterface)) {
36
  $request = $cookieJar->withCookieHeader($request);
37
  return $handler($request, $options)
38
  ->then(
39
+ static function (ResponseInterface $response) use ($cookieJar, $request): ResponseInterface {
40
  $cookieJar->extractCookies($request, $response);
41
  return $response;
42
  }
47
 
48
  /**
49
  * Middleware that throws exceptions for 4xx or 5xx responses when the
50
+ * "http_errors" request option is set to true.
51
  *
52
+ * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages.
53
+ *
54
+ * @return callable(callable): callable Returns a function that accepts the next handler.
55
  */
56
+ public static function httpErrors(BodySummarizerInterface $bodySummarizer = null): callable
57
  {
58
+ return static function (callable $handler) use ($bodySummarizer): callable {
59
+ return static function ($request, array $options) use ($handler, $bodySummarizer) {
60
  if (empty($options['http_errors'])) {
61
  return $handler($request, $options);
62
  }
63
  return $handler($request, $options)->then(
64
+ static function (ResponseInterface $response) use ($request, $bodySummarizer) {
65
  $code = $response->getStatusCode();
66
  if ($code < 400) {
67
  return $response;
68
  }
69
+ throw RequestException::create($request, $response, null, [], $bodySummarizer);
70
  }
71
  );
72
  };
76
  /**
77
  * Middleware that pushes history data to an ArrayAccess container.
78
  *
79
+ * @param array|\ArrayAccess<int, array> $container Container to hold the history (by reference).
80
+ *
81
+ * @return callable(callable): callable Returns a function that accepts the next handler.
82
  *
 
83
  * @throws \InvalidArgumentException if container is not an array or ArrayAccess.
84
  */
85
+ public static function history(&$container): callable
86
  {
87
+ if (!\is_array($container) && !$container instanceof \ArrayAccess) {
88
  throw new \InvalidArgumentException('history container must be an array or object implementing ArrayAccess');
89
  }
90
 
91
+ return static function (callable $handler) use (&$container): callable {
92
+ return static function (RequestInterface $request, array $options) use ($handler, &$container) {
93
  return $handler($request, $options)->then(
94
+ static function ($value) use ($request, &$container, $options) {
95
  $container[] = [
96
  'request' => $request,
97
  'response' => $value,
100
  ];
101
  return $value;
102
  },
103
+ static function ($reason) use ($request, &$container, $options) {
104
  $container[] = [
105
  'request' => $request,
106
  'response' => null,
107
  'error' => $reason,
108
  'options' => $options
109
  ];
110
+ return P\Create::rejectionFor($reason);
111
  }
112
  );
113
  };
127
  *
128
  * @return callable Returns a function that accepts the next handler.
129
  */
130
+ public static function tap(callable $before = null, callable $after = null): callable
131
  {
132
+ return static function (callable $handler) use ($before, $after): callable {
133
+ return static function (RequestInterface $request, array $options) use ($handler, $before, $after) {
134
  if ($before) {
135
  $before($request, $options);
136
  }
148
  *
149
  * @return callable Returns a function that accepts the next handler.
150
  */
151
+ public static function redirect(): callable
152
  {
153
+ return static function (callable $handler): RedirectMiddleware {
154
  return new RedirectMiddleware($handler);
155
  };
156
  }
170
  *
171
  * @return callable Returns a function that accepts the next handler.
172
  */
173
+ public static function retry(callable $decider, callable $delay = null): callable
174
  {
175
+ return static function (callable $handler) use ($decider, $delay): RetryMiddleware {
176
  return new RetryMiddleware($decider, $handler, $delay);
177
  };
178
  }
181
  * Middleware that logs requests, responses, and errors using a message
182
  * formatter.
183
  *
184
+ * @phpstan-param \Psr\Log\LogLevel::* $logLevel Level at which to log requests.
185
+ *
186
+ * @param LoggerInterface $logger Logs messages.
187
+ * @param MessageFormatterInterface|MessageFormatter $formatter Formatter used to create message strings.
188
+ * @param string $logLevel Level at which to log requests.
189
  *
190
  * @return callable Returns a function that accepts the next handler.
191
  */
192
+ public static function log(LoggerInterface $logger, $formatter, string $logLevel = 'info'): callable
193
  {
194
+ // To be compatible with Guzzle 7.1.x we need to allow users to pass a MessageFormatter
195
+ if (!$formatter instanceof MessageFormatter && !$formatter instanceof MessageFormatterInterface) {
196
+ throw new \LogicException(sprintf('Argument 2 to %s::log() must be of type %s', self::class, MessageFormatterInterface::class));
197
+ }
198
+
199
+ return static function (callable $handler) use ($logger, $formatter, $logLevel): callable {
200
+ return static function (RequestInterface $request, array $options = []) use ($handler, $logger, $formatter, $logLevel) {
201
  return $handler($request, $options)->then(
202
+ static function ($response) use ($logger, $request, $formatter, $logLevel): ResponseInterface {
203
  $message = $formatter->format($request, $response);
204
  $logger->log($logLevel, $message);
205
  return $response;
206
  },
207
+ static function ($reason) use ($logger, $request, $formatter): PromiseInterface {
208
+ $response = $reason instanceof RequestException ? $reason->getResponse() : null;
209
+ $message = $formatter->format($request, $response, P\Create::exceptionFor($reason));
210
+ $logger->error($message);
211
+ return P\Create::rejectionFor($reason);
 
 
212
  }
213
  );
214
  };
218
  /**
219
  * This middleware adds a default content-type if possible, a default
220
  * content-length or transfer-encoding header, and the expect header.
 
 
221
  */
222
+ public static function prepareBody(): callable
223
  {
224
+ return static function (callable $handler): PrepareBodyMiddleware {
225
  return new PrepareBodyMiddleware($handler);
226
  };
227
  }
232
  *
233
  * @param callable $fn Function that accepts a RequestInterface and returns
234
  * a RequestInterface.
 
235
  */
236
+ public static function mapRequest(callable $fn): callable
237
  {
238
+ return static function (callable $handler) use ($fn): callable {
239
+ return static function (RequestInterface $request, array $options) use ($handler, $fn) {
240
  return $handler($fn($request), $options);
241
  };
242
  };
248
  *
249
  * @param callable $fn Function that accepts a ResponseInterface and
250
  * returns a ResponseInterface.
 
251
  */
252
+ public static function mapResponse(callable $fn): callable
253
  {
254
+ return static function (callable $handler) use ($fn): callable {
255
+ return static function (RequestInterface $request, array $options) use ($handler, $fn) {
256
  return $handler($request, $options)->then($fn);
257
  };
258
  };
vendor/guzzlehttp/guzzle/src/Pool.php CHANGED
@@ -1,6 +1,8 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
 
4
  use GuzzleHttp\Promise\EachPromise;
5
  use GuzzleHttp\Promise\PromiseInterface;
6
  use GuzzleHttp\Promise\PromisorInterface;
@@ -16,10 +18,14 @@ use Psr\Http\Message\RequestInterface;
16
  * When a function is yielded by the iterator, the function is provided the
17
  * "request_options" array that should be merged on top of any existing
18
  * options, and the function MUST then return a wait-able promise.
 
 
19
  */
20
  class Pool implements PromisorInterface
21
  {
22
- /** @var EachPromise */
 
 
23
  private $each;
24
 
25
  /**
@@ -27,20 +33,14 @@ class Pool implements PromisorInterface
27
  * @param array|\Iterator $requests Requests or functions that return
28
  * requests to send concurrently.
29
  * @param array $config Associative array of options
30
- * - concurrency: (int) Maximum number of requests to send concurrently
31
- * - options: Array of request options to apply to each request.
32
- * - fulfilled: (callable) Function to invoke when a request completes.
33
- * - rejected: (callable) Function to invoke when a request is rejected.
34
  */
35
- public function __construct(
36
- ClientInterface $client,
37
- $requests,
38
- array $config = []
39
- ) {
40
- // Backwards compatibility.
41
- if (isset($config['pool_size'])) {
42
- $config['concurrency'] = $config['pool_size'];
43
- } elseif (!isset($config['concurrency'])) {
44
  $config['concurrency'] = 25;
45
  }
46
 
@@ -51,18 +51,15 @@ class Pool implements PromisorInterface
51
  $opts = [];
52
  }
53
 
54
- $iterable = \GuzzleHttp\Promise\iter_for($requests);
55
- $requests = function () use ($iterable, $client, $opts) {
56
  foreach ($iterable as $key => $rfn) {
57
  if ($rfn instanceof RequestInterface) {
58
  yield $key => $client->sendAsync($rfn, $opts);
59
- } elseif (is_callable($rfn)) {
60
  yield $key => $rfn($opts);
61
  } else {
62
- throw new \InvalidArgumentException('Each value yielded by '
63
- . 'the iterator must be a Psr7\Http\Message\RequestInterface '
64
- . 'or a callable that returns a promise that fulfills '
65
- . 'with a Psr7\Message\Http\ResponseInterface object.');
66
  }
67
  }
68
  };
@@ -72,10 +69,8 @@ class Pool implements PromisorInterface
72
 
73
  /**
74
  * Get promise
75
- *
76
- * @return PromiseInterface
77
  */
78
- public function promise()
79
  {
80
  return $this->each->promise();
81
  }
@@ -91,41 +86,37 @@ class Pool implements PromisorInterface
91
  * @param ClientInterface $client Client used to send the requests
92
  * @param array|\Iterator $requests Requests to send concurrently.
93
  * @param array $options Passes through the options available in
94
- * {@see GuzzleHttp\Pool::__construct}
95
  *
96
  * @return array Returns an array containing the response or an exception
97
  * in the same order that the requests were sent.
 
98
  * @throws \InvalidArgumentException if the event format is incorrect.
99
  */
100
- public static function batch(
101
- ClientInterface $client,
102
- $requests,
103
- array $options = []
104
- ) {
105
  $res = [];
106
  self::cmpCallback($options, 'fulfilled', $res);
107
  self::cmpCallback($options, 'rejected', $res);
108
  $pool = new static($client, $requests, $options);
109
  $pool->promise()->wait();
110
- ksort($res);
111
 
112
  return $res;
113
  }
114
 
115
  /**
116
  * Execute callback(s)
117
- *
118
- * @return void
119
  */
120
- private static function cmpCallback(array &$options, $name, array &$results)
121
  {
122
  if (!isset($options[$name])) {
123
- $options[$name] = function ($v, $k) use (&$results) {
124
  $results[$k] = $v;
125
  };
126
  } else {
127
  $currentFn = $options[$name];
128
- $options[$name] = function ($v, $k) use (&$results, $currentFn) {
129
  $currentFn($v, $k);
130
  $results[$k] = $v;
131
  };
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
+ use GuzzleHttp\Promise as P;
6
  use GuzzleHttp\Promise\EachPromise;
7
  use GuzzleHttp\Promise\PromiseInterface;
8
  use GuzzleHttp\Promise\PromisorInterface;
18
  * When a function is yielded by the iterator, the function is provided the
19
  * "request_options" array that should be merged on top of any existing
20
  * options, and the function MUST then return a wait-able promise.
21
+ *
22
+ * @final
23
  */
24
  class Pool implements PromisorInterface
25
  {
26
+ /**
27
+ * @var EachPromise
28
+ */
29
  private $each;
30
 
31
  /**
33
  * @param array|\Iterator $requests Requests or functions that return
34
  * requests to send concurrently.
35
  * @param array $config Associative array of options
36
+ * - concurrency: (int) Maximum number of requests to send concurrently
37
+ * - options: Array of request options to apply to each request.
38
+ * - fulfilled: (callable) Function to invoke when a request completes.
39
+ * - rejected: (callable) Function to invoke when a request is rejected.
40
  */
41
+ public function __construct(ClientInterface $client, $requests, array $config = [])
42
+ {
43
+ if (!isset($config['concurrency'])) {
 
 
 
 
 
 
44
  $config['concurrency'] = 25;
45
  }
46
 
51
  $opts = [];
52
  }
53
 
54
+ $iterable = P\Create::iterFor($requests);
55
+ $requests = static function () use ($iterable, $client, $opts) {
56
  foreach ($iterable as $key => $rfn) {
57
  if ($rfn instanceof RequestInterface) {
58
  yield $key => $client->sendAsync($rfn, $opts);
59
+ } elseif (\is_callable($rfn)) {
60
  yield $key => $rfn($opts);
61
  } else {
62
+ throw new \InvalidArgumentException('Each value yielded by the iterator must be a Psr7\Http\Message\RequestInterface or a callable that returns a promise that fulfills with a Psr7\Message\Http\ResponseInterface object.');
 
 
 
63
  }
64
  }
65
  };
69
 
70
  /**
71
  * Get promise
 
 
72
  */
73
+ public function promise(): PromiseInterface
74
  {
75
  return $this->each->promise();
76
  }
86
  * @param ClientInterface $client Client used to send the requests
87
  * @param array|\Iterator $requests Requests to send concurrently.
88
  * @param array $options Passes through the options available in
89
+ * {@see \GuzzleHttp\Pool::__construct}
90
  *
91
  * @return array Returns an array containing the response or an exception
92
  * in the same order that the requests were sent.
93
+ *
94
  * @throws \InvalidArgumentException if the event format is incorrect.
95
  */
96
+ public static function batch(ClientInterface $client, $requests, array $options = []): array
97
+ {
 
 
 
98
  $res = [];
99
  self::cmpCallback($options, 'fulfilled', $res);
100
  self::cmpCallback($options, 'rejected', $res);
101
  $pool = new static($client, $requests, $options);
102
  $pool->promise()->wait();
103
+ \ksort($res);
104
 
105
  return $res;
106
  }
107
 
108
  /**
109
  * Execute callback(s)
 
 
110
  */
111
+ private static function cmpCallback(array &$options, string $name, array &$results): void
112
  {
113
  if (!isset($options[$name])) {
114
+ $options[$name] = static function ($v, $k) use (&$results) {
115
  $results[$k] = $v;
116
  };
117
  } else {
118
  $currentFn = $options[$name];
119
+ $options[$name] = static function ($v, $k) use (&$results, $currentFn) {
120
  $currentFn($v, $k);
121
  $results[$k] = $v;
122
  };
vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php CHANGED
@@ -1,34 +1,32 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Promise\PromiseInterface;
5
- use GuzzleHttp\Psr7;
6
  use Psr\Http\Message\RequestInterface;
7
 
8
  /**
9
  * Prepares requests that contain a body, adding the Content-Length,
10
  * Content-Type, and Expect headers.
 
 
11
  */
12
  class PrepareBodyMiddleware
13
  {
14
- /** @var callable */
 
 
15
  private $nextHandler;
16
 
17
  /**
18
- * @param callable $nextHandler Next handler to invoke.
19
  */
20
  public function __construct(callable $nextHandler)
21
  {
22
  $this->nextHandler = $nextHandler;
23
  }
24
 
25
- /**
26
- * @param RequestInterface $request
27
- * @param array $options
28
- *
29
- * @return PromiseInterface
30
- */
31
- public function __invoke(RequestInterface $request, array $options)
32
  {
33
  $fn = $this->nextHandler;
34
 
@@ -42,7 +40,7 @@ class PrepareBodyMiddleware
42
  // Add a default content-type if possible.
43
  if (!$request->hasHeader('Content-Type')) {
44
  if ($uri = $request->getBody()->getMetadata('uri')) {
45
- if ($type = Psr7\mimetype_from_filename($uri)) {
46
  $modify['set_headers']['Content-Type'] = $type;
47
  }
48
  }
@@ -63,25 +61,20 @@ class PrepareBodyMiddleware
63
  // Add the expect header if needed.
64
  $this->addExpectHeader($request, $options, $modify);
65
 
66
- return $fn(Psr7\modify_request($request, $modify), $options);
67
  }
68
 
69
  /**
70
  * Add expect header
71
- *
72
- * @return void
73
  */
74
- private function addExpectHeader(
75
- RequestInterface $request,
76
- array $options,
77
- array &$modify
78
- ) {
79
  // Determine if the Expect header should be used
80
  if ($request->hasHeader('Expect')) {
81
  return;
82
  }
83
 
84
- $expect = isset($options['expect']) ? $options['expect'] : null;
85
 
86
  // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
87
  if ($expect === false || $request->getProtocolVersion() < 1.1) {
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Promise\PromiseInterface;
 
6
  use Psr\Http\Message\RequestInterface;
7
 
8
  /**
9
  * Prepares requests that contain a body, adding the Content-Length,
10
  * Content-Type, and Expect headers.
11
+ *
12
+ * @final
13
  */
14
  class PrepareBodyMiddleware
15
  {
16
+ /**
17
+ * @var callable(RequestInterface, array): PromiseInterface
18
+ */
19
  private $nextHandler;
20
 
21
  /**
22
+ * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
23
  */
24
  public function __construct(callable $nextHandler)
25
  {
26
  $this->nextHandler = $nextHandler;
27
  }
28
 
29
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
 
 
 
 
 
 
30
  {
31
  $fn = $this->nextHandler;
32
 
40
  // Add a default content-type if possible.
41
  if (!$request->hasHeader('Content-Type')) {
42
  if ($uri = $request->getBody()->getMetadata('uri')) {
43
+ if (is_string($uri) && $type = Psr7\MimeType::fromFilename($uri)) {
44
  $modify['set_headers']['Content-Type'] = $type;
45
  }
46
  }
61
  // Add the expect header if needed.
62
  $this->addExpectHeader($request, $options, $modify);
63
 
64
+ return $fn(Psr7\Utils::modifyRequest($request, $modify), $options);
65
  }
66
 
67
  /**
68
  * Add expect header
 
 
69
  */
70
+ private function addExpectHeader(RequestInterface $request, array $options, array &$modify): void
71
+ {
 
 
 
72
  // Determine if the Expect header should be used
73
  if ($request->hasHeader('Expect')) {
74
  return;
75
  }
76
 
77
+ $expect = $options['expect'] ?? null;
78
 
79
  // Return if disabled or if you're not using HTTP/1.1 or HTTP/2.0
80
  if ($expect === false || $request->getProtocolVersion() < 1.1) {
vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php CHANGED
@@ -1,10 +1,10 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Exception\BadResponseException;
5
  use GuzzleHttp\Exception\TooManyRedirectsException;
6
  use GuzzleHttp\Promise\PromiseInterface;
7
- use GuzzleHttp\Psr7;
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
10
  use Psr\Http\Message\UriInterface;
@@ -14,13 +14,18 @@ use Psr\Http\Message\UriInterface;
14
  *
15
  * Apply this middleware like other middleware using
16
  * {@see \GuzzleHttp\Middleware::redirect()}.
 
 
17
  */
18
  class RedirectMiddleware
19
  {
20
- const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
21
 
22
- const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
23
 
 
 
 
24
  public static $defaultSettings = [
25
  'max' => 5,
26
  'protocols' => ['http', 'https'],
@@ -29,24 +34,20 @@ class RedirectMiddleware
29
  'track_redirects' => false,
30
  ];
31
 
32
- /** @var callable */
 
 
33
  private $nextHandler;
34
 
35
  /**
36
- * @param callable $nextHandler Next handler to invoke.
37
  */
38
  public function __construct(callable $nextHandler)
39
  {
40
  $this->nextHandler = $nextHandler;
41
  }
42
 
43
- /**
44
- * @param RequestInterface $request
45
- * @param array $options
46
- *
47
- * @return PromiseInterface
48
- */
49
- public function __invoke(RequestInterface $request, array $options)
50
  {
51
  $fn = $this->nextHandler;
52
 
@@ -56,7 +57,7 @@ class RedirectMiddleware
56
 
57
  if ($options['allow_redirects'] === true) {
58
  $options['allow_redirects'] = self::$defaultSettings;
59
- } elseif (!is_array($options['allow_redirects'])) {
60
  throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
61
  } else {
62
  // Merge the default settings with the provided settings
@@ -74,36 +75,37 @@ class RedirectMiddleware
74
  }
75
 
76
  /**
77
- * @param RequestInterface $request
78
- * @param array $options
79
- * @param ResponseInterface $response
80
- *
81
  * @return ResponseInterface|PromiseInterface
82
  */
83
- public function checkRedirect(
84
- RequestInterface $request,
85
- array $options,
86
- ResponseInterface $response
87
- ) {
88
- if (substr($response->getStatusCode(), 0, 1) != '3'
89
  || !$response->hasHeader('Location')
90
  ) {
91
  return $response;
92
  }
93
 
94
- $this->guardMax($request, $options);
95
  $nextRequest = $this->modifyRequest($request, $options, $response);
96
 
 
 
 
 
 
 
 
 
 
 
97
  if (isset($options['allow_redirects']['on_redirect'])) {
98
- call_user_func(
99
- $options['allow_redirects']['on_redirect'],
100
  $request,
101
  $response,
102
  $nextRequest->getUri()
103
  );
104
  }
105
 
106
- /** @var PromiseInterface|ResponseInterface $promise */
107
  $promise = $this($nextRequest, $options);
108
 
109
  // Add headers to be able to track history of redirects.
@@ -120,20 +122,19 @@ class RedirectMiddleware
120
 
121
  /**
122
  * Enable tracking on promise.
123
- *
124
- * @return PromiseInterface
125
  */
126
- private function withTracking(PromiseInterface $promise, $uri, $statusCode)
127
  {
128
  return $promise->then(
129
- function (ResponseInterface $response) use ($uri, $statusCode) {
130
  // Note that we are pushing to the front of the list as this
131
  // would be an earlier response than what is currently present
132
  // in the history header.
133
  $historyHeader = $response->getHeader(self::HISTORY_HEADER);
134
  $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
135
- array_unshift($historyHeader, $uri);
136
- array_unshift($statusHeader, $statusCode);
 
137
  return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
138
  ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
139
  }
@@ -141,40 +142,24 @@ class RedirectMiddleware
141
  }
142
 
143
  /**
144
- * Check for too many redirects
145
- *
146
- * @return void
147
  *
148
  * @throws TooManyRedirectsException Too many redirects.
149
  */
150
- private function guardMax(RequestInterface $request, array &$options)
151
  {
152
- $current = isset($options['__redirect_count'])
153
- ? $options['__redirect_count']
154
- : 0;
155
  $options['__redirect_count'] = $current + 1;
156
  $max = $options['allow_redirects']['max'];
157
 
158
  if ($options['__redirect_count'] > $max) {
159
- throw new TooManyRedirectsException(
160
- "Will not follow more than {$max} redirects",
161
- $request
162
- );
163
  }
164
  }
165
 
166
- /**
167
- * @param RequestInterface $request
168
- * @param array $options
169
- * @param ResponseInterface $response
170
- *
171
- * @return RequestInterface
172
- */
173
- public function modifyRequest(
174
- RequestInterface $request,
175
- array $options,
176
- ResponseInterface $response
177
- ) {
178
  // Request modifications to apply.
179
  $modify = [];
180
  $protocols = $options['allow_redirects']['protocols'];
@@ -186,18 +171,21 @@ class RedirectMiddleware
186
  if ($statusCode == 303 ||
187
  ($statusCode <= 302 && !$options['allow_redirects']['strict'])
188
  ) {
189
- $modify['method'] = 'GET';
 
 
 
190
  $modify['body'] = '';
191
  }
192
 
193
- $uri = $this->redirectUri($request, $response, $protocols);
194
  if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
195
- $idnOptions = ($options['idn_conversion'] === true) ? IDNA_DEFAULT : $options['idn_conversion'];
196
  $uri = Utils::idnUriConvert($uri, $idnOptions);
197
  }
198
 
199
  $modify['uri'] = $uri;
200
- Psr7\rewind_body($request);
201
 
202
  // Add the Referer header if it is told to do so and only
203
  // add the header if we are not redirecting from https to http.
@@ -210,44 +198,54 @@ class RedirectMiddleware
210
  $modify['remove_headers'][] = 'Referer';
211
  }
212
 
213
- // Remove Authorization header if host is different.
214
- if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
215
  $modify['remove_headers'][] = 'Authorization';
 
216
  }
217
 
218
- return Psr7\modify_request($request, $modify);
219
  }
220
 
221
  /**
222
- * Set the appropriate URL on the request based on the location header
223
  *
224
- * @param RequestInterface $request
225
- * @param ResponseInterface $response
226
- * @param array $protocols
227
  *
228
- * @return UriInterface
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  */
230
- private function redirectUri(
231
  RequestInterface $request,
232
  ResponseInterface $response,
233
  array $protocols
234
- ) {
235
  $location = Psr7\UriResolver::resolve(
236
  $request->getUri(),
237
  new Psr7\Uri($response->getHeaderLine('Location'))
238
  );
239
 
240
  // Ensure that the redirect URI is allowed based on the protocols.
241
- if (!in_array($location->getScheme(), $protocols)) {
242
- throw new BadResponseException(
243
- sprintf(
244
- 'Redirect URI, %s, does not use one of the allowed redirect protocols: %s',
245
- $location,
246
- implode(', ', $protocols)
247
- ),
248
- $request,
249
- $response
250
- );
251
  }
252
 
253
  return $location;
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Exception\BadResponseException;
6
  use GuzzleHttp\Exception\TooManyRedirectsException;
7
  use GuzzleHttp\Promise\PromiseInterface;
 
8
  use Psr\Http\Message\RequestInterface;
9
  use Psr\Http\Message\ResponseInterface;
10
  use Psr\Http\Message\UriInterface;
14
  *
15
  * Apply this middleware like other middleware using
16
  * {@see \GuzzleHttp\Middleware::redirect()}.
17
+ *
18
+ * @final
19
  */
20
  class RedirectMiddleware
21
  {
22
+ public const HISTORY_HEADER = 'X-Guzzle-Redirect-History';
23
 
24
+ public const STATUS_HISTORY_HEADER = 'X-Guzzle-Redirect-Status-History';
25
 
26
+ /**
27
+ * @var array
28
+ */
29
  public static $defaultSettings = [
30
  'max' => 5,
31
  'protocols' => ['http', 'https'],
34
  'track_redirects' => false,
35
  ];
36
 
37
+ /**
38
+ * @var callable(RequestInterface, array): PromiseInterface
39
+ */
40
  private $nextHandler;
41
 
42
  /**
43
+ * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
44
  */
45
  public function __construct(callable $nextHandler)
46
  {
47
  $this->nextHandler = $nextHandler;
48
  }
49
 
50
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
 
 
 
 
 
 
51
  {
52
  $fn = $this->nextHandler;
53
 
57
 
58
  if ($options['allow_redirects'] === true) {
59
  $options['allow_redirects'] = self::$defaultSettings;
60
+ } elseif (!\is_array($options['allow_redirects'])) {
61
  throw new \InvalidArgumentException('allow_redirects must be true, false, or array');
62
  } else {
63
  // Merge the default settings with the provided settings
75
  }
76
 
77
  /**
 
 
 
 
78
  * @return ResponseInterface|PromiseInterface
79
  */
80
+ public function checkRedirect(RequestInterface $request, array $options, ResponseInterface $response)
81
+ {
82
+ if (\strpos((string) $response->getStatusCode(), '3') !== 0
 
 
 
83
  || !$response->hasHeader('Location')
84
  ) {
85
  return $response;
86
  }
87
 
88
+ $this->guardMax($request, $response, $options);
89
  $nextRequest = $this->modifyRequest($request, $options, $response);
90
 
91
+ // If authorization is handled by curl, unset it if host is different.
92
+ if ($request->getUri()->getHost() !== $nextRequest->getUri()->getHost()
93
+ && defined('\CURLOPT_HTTPAUTH')
94
+ ) {
95
+ unset(
96
+ $options['curl'][\CURLOPT_HTTPAUTH],
97
+ $options['curl'][\CURLOPT_USERPWD]
98
+ );
99
+ }
100
+
101
  if (isset($options['allow_redirects']['on_redirect'])) {
102
+ ($options['allow_redirects']['on_redirect'])(
 
103
  $request,
104
  $response,
105
  $nextRequest->getUri()
106
  );
107
  }
108
 
 
109
  $promise = $this($nextRequest, $options);
110
 
111
  // Add headers to be able to track history of redirects.
122
 
123
  /**
124
  * Enable tracking on promise.
 
 
125
  */
126
+ private function withTracking(PromiseInterface $promise, string $uri, int $statusCode): PromiseInterface
127
  {
128
  return $promise->then(
129
+ static function (ResponseInterface $response) use ($uri, $statusCode) {
130
  // Note that we are pushing to the front of the list as this
131
  // would be an earlier response than what is currently present
132
  // in the history header.
133
  $historyHeader = $response->getHeader(self::HISTORY_HEADER);
134
  $statusHeader = $response->getHeader(self::STATUS_HISTORY_HEADER);
135
+ \array_unshift($historyHeader, $uri);
136
+ \array_unshift($statusHeader, (string) $statusCode);
137
+
138
  return $response->withHeader(self::HISTORY_HEADER, $historyHeader)
139
  ->withHeader(self::STATUS_HISTORY_HEADER, $statusHeader);
140
  }
142
  }
143
 
144
  /**
145
+ * Check for too many redirects.
 
 
146
  *
147
  * @throws TooManyRedirectsException Too many redirects.
148
  */
149
+ private function guardMax(RequestInterface $request, ResponseInterface $response, array &$options): void
150
  {
151
+ $current = $options['__redirect_count']
152
+ ?? 0;
 
153
  $options['__redirect_count'] = $current + 1;
154
  $max = $options['allow_redirects']['max'];
155
 
156
  if ($options['__redirect_count'] > $max) {
157
+ throw new TooManyRedirectsException("Will not follow more than {$max} redirects", $request, $response);
 
 
 
158
  }
159
  }
160
 
161
+ public function modifyRequest(RequestInterface $request, array $options, ResponseInterface $response): RequestInterface
162
+ {
 
 
 
 
 
 
 
 
 
 
163
  // Request modifications to apply.
164
  $modify = [];
165
  $protocols = $options['allow_redirects']['protocols'];
171
  if ($statusCode == 303 ||
172
  ($statusCode <= 302 && !$options['allow_redirects']['strict'])
173
  ) {
174
+ $safeMethods = ['GET', 'HEAD', 'OPTIONS'];
175
+ $requestMethod = $request->getMethod();
176
+
177
+ $modify['method'] = in_array($requestMethod, $safeMethods) ? $requestMethod : 'GET';
178
  $modify['body'] = '';
179
  }
180
 
181
+ $uri = self::redirectUri($request, $response, $protocols);
182
  if (isset($options['idn_conversion']) && ($options['idn_conversion'] !== false)) {
183
+ $idnOptions = ($options['idn_conversion'] === true) ? \IDNA_DEFAULT : $options['idn_conversion'];
184
  $uri = Utils::idnUriConvert($uri, $idnOptions);
185
  }
186
 
187
  $modify['uri'] = $uri;
188
+ Psr7\Message::rewindBody($request);
189
 
190
  // Add the Referer header if it is told to do so and only
191
  // add the header if we are not redirecting from https to http.
198
  $modify['remove_headers'][] = 'Referer';
199
  }
200
 
201
+ // Remove Authorization and Cookie headers if required.
202
+ if (self::shouldStripSensitiveHeaders($request->getUri(), $modify['uri'])) {
203
  $modify['remove_headers'][] = 'Authorization';
204
+ $modify['remove_headers'][] = 'Cookie';
205
  }
206
 
207
+ return Psr7\Utils::modifyRequest($request, $modify);
208
  }
209
 
210
  /**
211
+ * Determine if we should strip sensitive headers from the request.
212
  *
213
+ * We return true if either of the following conditions are true:
 
 
214
  *
215
+ * 1. the host is different;
216
+ * 2. the scheme has changed, and now is non-https.
217
+ */
218
+ private static function shouldStripSensitiveHeaders(
219
+ UriInterface $originalUri,
220
+ UriInterface $modifiedUri
221
+ ): bool {
222
+ if (\strcasecmp($originalUri->getHost(), $modifiedUri->getHost()) !== 0) {
223
+ return true;
224
+ }
225
+
226
+ if ($originalUri->getScheme() !== $modifiedUri->getScheme() && 'https' !== $modifiedUri->getScheme()) {
227
+ return true;
228
+ }
229
+
230
+ return false;
231
+ }
232
+
233
+ /**
234
+ * Set the appropriate URL on the request based on the location header.
235
  */
236
+ private static function redirectUri(
237
  RequestInterface $request,
238
  ResponseInterface $response,
239
  array $protocols
240
+ ): UriInterface {
241
  $location = Psr7\UriResolver::resolve(
242
  $request->getUri(),
243
  new Psr7\Uri($response->getHeaderLine('Location'))
244
  );
245
 
246
  // Ensure that the redirect URI is allowed based on the protocols.
247
+ if (!\in_array($location->getScheme(), $protocols)) {
248
+ throw new BadResponseException(\sprintf('Redirect URI, %s, does not use one of the allowed redirect protocols: %s', $location, \implode(', ', $protocols)), $request, $response);
 
 
 
 
 
 
 
 
249
  }
250
 
251
  return $location;
vendor/guzzlehttp/guzzle/src/RequestOptions.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  /**
@@ -31,7 +32,7 @@ final class RequestOptions
31
  * response that was received, and the effective URI. Any return value
32
  * from the on_redirect function is ignored.
33
  */
34
- const ALLOW_REDIRECTS = 'allow_redirects';
35
 
36
  /**
37
  * auth: (array) Pass an array of HTTP authentication parameters to use
@@ -40,13 +41,13 @@ final class RequestOptions
40
  * authentication type in index [2]. Pass null to disable authentication
41
  * for a request.
42
  */
43
- const AUTH = 'auth';
44
 
45
  /**
46
  * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
47
  * Body to send in the request.
48
  */
49
- const BODY = 'body';
50
 
51
  /**
52
  * cert: (string|array) Set to a string to specify the path to a file
@@ -55,42 +56,42 @@ final class RequestOptions
55
  * file in the first array element followed by the certificate password
56
  * in the second array element.
57
  */
58
- const CERT = 'cert';
59
 
60
  /**
61
  * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
62
  * Specifies whether or not cookies are used in a request or what cookie
63
  * jar to use or what cookies to send. This option only works if your
64
  * handler has the `cookie` middleware. Valid values are `false` and
65
- * an instance of {@see GuzzleHttp\Cookie\CookieJarInterface}.
66
  */
67
- const COOKIES = 'cookies';
68
 
69
  /**
70
  * connect_timeout: (float, default=0) Float describing the number of
71
  * seconds to wait while trying to connect to a server. Use 0 to wait
72
  * indefinitely (the default behavior).
73
  */
74
- const CONNECT_TIMEOUT = 'connect_timeout';
75
 
76
  /**
77
  * debug: (bool|resource) Set to true or set to a PHP stream returned by
78
  * fopen() enable debug output with the HTTP handler used to send a
79
  * request.
80
  */
81
- const DEBUG = 'debug';
82
 
83
  /**
84
  * decode_content: (bool, default=true) Specify whether or not
85
  * Content-Encoding responses (gzip, deflate, etc.) are automatically
86
  * decoded.
87
  */
88
- const DECODE_CONTENT = 'decode_content';
89
 
90
  /**
91
  * delay: (int) The amount of time to delay before sending in milliseconds.
92
  */
93
- const DELAY = 'delay';
94
 
95
  /**
96
  * expect: (bool|integer) Controls the behavior of the
@@ -108,7 +109,7 @@ final class RequestOptions
108
  * size of the body of a request is greater than 1 MB and a request is
109
  * using HTTP/1.1.
110
  */
111
- const EXPECT = 'expect';
112
 
113
  /**
114
  * form_params: (array) Associative array of form field names to values
@@ -116,13 +117,13 @@ final class RequestOptions
116
  * header to application/x-www-form-urlencoded when no Content-Type header
117
  * is already present.
118
  */
119
- const FORM_PARAMS = 'form_params';
120
 
121
  /**
122
  * headers: (array) Associative array of HTTP headers. Each value MUST be
123
  * a string or array of strings.
124
  */
125
- const HEADERS = 'headers';
126
 
127
  /**
128
  * http_errors: (bool, default=true) Set to false to disable exceptions
@@ -130,7 +131,7 @@ final class RequestOptions
130
  * exceptions will be thrown for 4xx and 5xx responses. This option only
131
  * works if your handler has the `httpErrors` middleware.
132
  */
133
- const HTTP_ERRORS = 'http_errors';
134
 
135
  /**
136
  * idn: (bool|int, default=true) A combination of IDNA_* constants for
@@ -138,14 +139,14 @@ final class RequestOptions
138
  * disable IDN support completely, or to true to use the default
139
  * configuration (IDNA_DEFAULT constant).
140
  */
141
- const IDN_CONVERSION = 'idn_conversion';
142
 
143
  /**
144
  * json: (mixed) Adds JSON data to a request. The provided value is JSON
145
  * encoded and a Content-Type header of application/json will be added to
146
  * the request if no Content-Type header is already present.
147
  */
148
- const JSON = 'json';
149
 
150
  /**
151
  * multipart: (array) Array of associative arrays, each containing a
@@ -156,14 +157,14 @@ final class RequestOptions
156
  * the part. If no "filename" key is present, then no "filename" attribute
157
  * will be added to the part.
158
  */
159
- const MULTIPART = 'multipart';
160
 
161
  /**
162
  * on_headers: (callable) A callable that is invoked when the HTTP headers
163
  * of the response have been received but the body has not yet begun to
164
  * download.
165
  */
166
- const ON_HEADERS = 'on_headers';
167
 
168
  /**
169
  * on_stats: (callable) allows you to get access to transfer statistics of
@@ -174,7 +175,7 @@ final class RequestOptions
174
  * the error encountered. Included in the data is the total amount of time
175
  * taken to send the request.
176
  */
177
- const ON_STATS = 'on_stats';
178
 
179
  /**
180
  * progress: (callable) Defines a function to invoke when transfer
@@ -183,14 +184,14 @@ final class RequestOptions
183
  * number of bytes downloaded so far, the number of bytes expected to be
184
  * uploaded, the number of bytes uploaded so far.
185
  */
186
- const PROGRESS = 'progress';
187
 
188
  /**
189
  * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
190
  * array to specify different proxies for different protocols (where the
191
  * key is the protocol and the value is a proxy string).
192
  */
193
- const PROXY = 'proxy';
194
 
195
  /**
196
  * query: (array|string) Associative array of query string values to add
@@ -198,14 +199,14 @@ final class RequestOptions
198
  * the string representation. Pass a string value if you need more
199
  * control than what this method provides
200
  */
201
- const QUERY = 'query';
202
 
203
  /**
204
  * sink: (resource|string|StreamInterface) Where the data of the
205
  * response is written to. Defaults to a PHP temp stream. Providing a
206
  * string will write data to a file by the given name.
207
  */
208
- const SINK = 'sink';
209
 
210
  /**
211
  * synchronous: (bool) Set to true to inform HTTP handlers that you intend
@@ -213,7 +214,7 @@ final class RequestOptions
213
  * that a promise is still returned if you are using one of the async
214
  * client methods.
215
  */
216
- const SYNCHRONOUS = 'synchronous';
217
 
218
  /**
219
  * ssl_key: (array|string) Specify the path to a file containing a private
@@ -221,13 +222,13 @@ final class RequestOptions
221
  * containing the path to the SSL key in the first array element followed
222
  * by the password required for the certificate in the second element.
223
  */
224
- const SSL_KEY = 'ssl_key';
225
 
226
  /**
227
  * stream: Set to true to attempt to stream a response rather than
228
  * download it all up-front.
229
  */
230
- const STREAM = 'stream';
231
 
232
  /**
233
  * verify: (bool|string, default=true) Describes the SSL certificate
@@ -237,27 +238,27 @@ final class RequestOptions
237
  * is insecure!). Set to a string to provide the path to a CA bundle on
238
  * disk to enable verification using a custom certificate.
239
  */
240
- const VERIFY = 'verify';
241
 
242
  /**
243
  * timeout: (float, default=0) Float describing the timeout of the
244
  * request in seconds. Use 0 to wait indefinitely (the default behavior).
245
  */
246
- const TIMEOUT = 'timeout';
247
 
248
  /**
249
  * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
250
  * the body read timeout, for stream requests.
251
  */
252
- const READ_TIMEOUT = 'read_timeout';
253
 
254
  /**
255
  * version: (float) Specifies the HTTP protocol version to attempt to use.
256
  */
257
- const VERSION = 'version';
258
 
259
  /**
260
  * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
261
  */
262
- const FORCE_IP_RESOLVE = 'force_ip_resolve';
263
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  /**
32
  * response that was received, and the effective URI. Any return value
33
  * from the on_redirect function is ignored.
34
  */
35
+ public const ALLOW_REDIRECTS = 'allow_redirects';
36
 
37
  /**
38
  * auth: (array) Pass an array of HTTP authentication parameters to use
41
  * authentication type in index [2]. Pass null to disable authentication
42
  * for a request.
43
  */
44
+ public const AUTH = 'auth';
45
 
46
  /**
47
  * body: (resource|string|null|int|float|StreamInterface|callable|\Iterator)
48
  * Body to send in the request.
49
  */
50
+ public const BODY = 'body';
51
 
52
  /**
53
  * cert: (string|array) Set to a string to specify the path to a file
56
  * file in the first array element followed by the certificate password
57
  * in the second array element.
58
  */
59
+ public const CERT = 'cert';
60
 
61
  /**
62
  * cookies: (bool|GuzzleHttp\Cookie\CookieJarInterface, default=false)
63
  * Specifies whether or not cookies are used in a request or what cookie
64
  * jar to use or what cookies to send. This option only works if your
65
  * handler has the `cookie` middleware. Valid values are `false` and
66
+ * an instance of {@see \GuzzleHttp\Cookie\CookieJarInterface}.
67
  */
68
+ public const COOKIES = 'cookies';
69
 
70
  /**
71
  * connect_timeout: (float, default=0) Float describing the number of
72
  * seconds to wait while trying to connect to a server. Use 0 to wait
73
  * indefinitely (the default behavior).
74
  */
75
+ public const CONNECT_TIMEOUT = 'connect_timeout';
76
 
77
  /**
78
  * debug: (bool|resource) Set to true or set to a PHP stream returned by
79
  * fopen() enable debug output with the HTTP handler used to send a
80
  * request.
81
  */
82
+ public const DEBUG = 'debug';
83
 
84
  /**
85
  * decode_content: (bool, default=true) Specify whether or not
86
  * Content-Encoding responses (gzip, deflate, etc.) are automatically
87
  * decoded.
88
  */
89
+ public const DECODE_CONTENT = 'decode_content';
90
 
91
  /**
92
  * delay: (int) The amount of time to delay before sending in milliseconds.
93
  */
94
+ public const DELAY = 'delay';
95
 
96
  /**
97
  * expect: (bool|integer) Controls the behavior of the
109
  * size of the body of a request is greater than 1 MB and a request is
110
  * using HTTP/1.1.
111
  */
112
+ public const EXPECT = 'expect';
113
 
114
  /**
115
  * form_params: (array) Associative array of form field names to values
117
  * header to application/x-www-form-urlencoded when no Content-Type header
118
  * is already present.
119
  */
120
+ public const FORM_PARAMS = 'form_params';
121
 
122
  /**
123
  * headers: (array) Associative array of HTTP headers. Each value MUST be
124
  * a string or array of strings.
125
  */
126
+ public const HEADERS = 'headers';
127
 
128
  /**
129
  * http_errors: (bool, default=true) Set to false to disable exceptions
131
  * exceptions will be thrown for 4xx and 5xx responses. This option only
132
  * works if your handler has the `httpErrors` middleware.
133
  */
134
+ public const HTTP_ERRORS = 'http_errors';
135
 
136
  /**
137
  * idn: (bool|int, default=true) A combination of IDNA_* constants for
139
  * disable IDN support completely, or to true to use the default
140
  * configuration (IDNA_DEFAULT constant).
141
  */
142
+ public const IDN_CONVERSION = 'idn_conversion';
143
 
144
  /**
145
  * json: (mixed) Adds JSON data to a request. The provided value is JSON
146
  * encoded and a Content-Type header of application/json will be added to
147
  * the request if no Content-Type header is already present.
148
  */
149
+ public const JSON = 'json';
150
 
151
  /**
152
  * multipart: (array) Array of associative arrays, each containing a
157
  * the part. If no "filename" key is present, then no "filename" attribute
158
  * will be added to the part.
159
  */
160
+ public const MULTIPART = 'multipart';
161
 
162
  /**
163
  * on_headers: (callable) A callable that is invoked when the HTTP headers
164
  * of the response have been received but the body has not yet begun to
165
  * download.
166
  */
167
+ public const ON_HEADERS = 'on_headers';
168
 
169
  /**
170
  * on_stats: (callable) allows you to get access to transfer statistics of
175
  * the error encountered. Included in the data is the total amount of time
176
  * taken to send the request.
177
  */
178
+ public const ON_STATS = 'on_stats';
179
 
180
  /**
181
  * progress: (callable) Defines a function to invoke when transfer
184
  * number of bytes downloaded so far, the number of bytes expected to be
185
  * uploaded, the number of bytes uploaded so far.
186
  */
187
+ public const PROGRESS = 'progress';
188
 
189
  /**
190
  * proxy: (string|array) Pass a string to specify an HTTP proxy, or an
191
  * array to specify different proxies for different protocols (where the
192
  * key is the protocol and the value is a proxy string).
193
  */
194
+ public const PROXY = 'proxy';
195
 
196
  /**
197
  * query: (array|string) Associative array of query string values to add
199
  * the string representation. Pass a string value if you need more
200
  * control than what this method provides
201
  */
202
+ public const QUERY = 'query';
203
 
204
  /**
205
  * sink: (resource|string|StreamInterface) Where the data of the
206
  * response is written to. Defaults to a PHP temp stream. Providing a
207
  * string will write data to a file by the given name.
208
  */
209
+ public const SINK = 'sink';
210
 
211
  /**
212
  * synchronous: (bool) Set to true to inform HTTP handlers that you intend
214
  * that a promise is still returned if you are using one of the async
215
  * client methods.
216
  */
217
+ public const SYNCHRONOUS = 'synchronous';
218
 
219
  /**
220
  * ssl_key: (array|string) Specify the path to a file containing a private
222
  * containing the path to the SSL key in the first array element followed
223
  * by the password required for the certificate in the second element.
224
  */
225
+ public const SSL_KEY = 'ssl_key';
226
 
227
  /**
228
  * stream: Set to true to attempt to stream a response rather than
229
  * download it all up-front.
230
  */
231
+ public const STREAM = 'stream';
232
 
233
  /**
234
  * verify: (bool|string, default=true) Describes the SSL certificate
238
  * is insecure!). Set to a string to provide the path to a CA bundle on
239
  * disk to enable verification using a custom certificate.
240
  */
241
+ public const VERIFY = 'verify';
242
 
243
  /**
244
  * timeout: (float, default=0) Float describing the timeout of the
245
  * request in seconds. Use 0 to wait indefinitely (the default behavior).
246
  */
247
+ public const TIMEOUT = 'timeout';
248
 
249
  /**
250
  * read_timeout: (float, default=default_socket_timeout ini setting) Float describing
251
  * the body read timeout, for stream requests.
252
  */
253
+ public const READ_TIMEOUT = 'read_timeout';
254
 
255
  /**
256
  * version: (float) Specifies the HTTP protocol version to attempt to use.
257
  */
258
+ public const VERSION = 'version';
259
 
260
  /**
261
  * force_ip_resolve: (bool) Force client to use only ipv4 or ipv6 protocol
262
  */
263
+ public const FORCE_IP_RESOLVE = 'force_ip_resolve';
264
  }
vendor/guzzlehttp/guzzle/src/RetryMiddleware.php CHANGED
@@ -1,42 +1,47 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
 
4
  use GuzzleHttp\Promise\PromiseInterface;
5
- use GuzzleHttp\Promise\RejectedPromise;
6
- use GuzzleHttp\Psr7;
7
  use Psr\Http\Message\RequestInterface;
8
  use Psr\Http\Message\ResponseInterface;
9
 
10
  /**
11
  * Middleware that retries requests based on the boolean result of
12
  * invoking the provided "decider" function.
 
 
13
  */
14
  class RetryMiddleware
15
  {
16
- /** @var callable */
 
 
17
  private $nextHandler;
18
 
19
- /** @var callable */
 
 
20
  private $decider;
21
 
22
- /** @var callable */
 
 
23
  private $delay;
24
 
25
  /**
26
- * @param callable $decider Function that accepts the number of retries,
27
- * a request, [response], and [exception] and
28
- * returns true if the request is to be
29
- * retried.
30
- * @param callable $nextHandler Next handler to invoke.
31
- * @param callable $delay Function that accepts the number of retries
32
- * and [response] and returns the number of
33
- * milliseconds to delay.
34
  */
35
- public function __construct(
36
- callable $decider,
37
- callable $nextHandler,
38
- callable $delay = null
39
- ) {
40
  $this->decider = $decider;
41
  $this->nextHandler = $nextHandler;
42
  $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
@@ -45,22 +50,14 @@ class RetryMiddleware
45
  /**
46
  * Default exponential backoff delay function.
47
  *
48
- * @param int $retries
49
- *
50
  * @return int milliseconds.
51
  */
52
- public static function exponentialDelay($retries)
53
  {
54
- return (int) pow(2, $retries - 1) * 1000;
55
  }
56
 
57
- /**
58
- * @param RequestInterface $request
59
- * @param array $options
60
- *
61
- * @return PromiseInterface
62
- */
63
- public function __invoke(RequestInterface $request, array $options)
64
  {
65
  if (!isset($options['retries'])) {
66
  $options['retries'] = 0;
@@ -76,52 +73,43 @@ class RetryMiddleware
76
 
77
  /**
78
  * Execute fulfilled closure
79
- *
80
- * @return mixed
81
  */
82
- private function onFulfilled(RequestInterface $req, array $options)
83
  {
84
- return function ($value) use ($req, $options) {
85
- if (!call_user_func(
86
- $this->decider,
87
  $options['retries'],
88
- $req,
89
  $value,
90
  null
91
  )) {
92
  return $value;
93
  }
94
- return $this->doRetry($req, $options, $value);
95
  };
96
  }
97
 
98
  /**
99
  * Execute rejected closure
100
- *
101
- * @return callable
102
  */
103
- private function onRejected(RequestInterface $req, array $options)
104
  {
105
  return function ($reason) use ($req, $options) {
106
- if (!call_user_func(
107
- $this->decider,
108
  $options['retries'],
109
  $req,
110
  null,
111
  $reason
112
  )) {
113
- return \GuzzleHttp\Promise\rejection_for($reason);
114
  }
115
  return $this->doRetry($req, $options);
116
  };
117
  }
118
 
119
- /**
120
- * @return self
121
- */
122
- private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null)
123
  {
124
- $options['delay'] = call_user_func($this->delay, ++$options['retries'], $response);
125
 
126
  return $this($request, $options);
127
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
+ use GuzzleHttp\Promise as P;
6
  use GuzzleHttp\Promise\PromiseInterface;
 
 
7
  use Psr\Http\Message\RequestInterface;
8
  use Psr\Http\Message\ResponseInterface;
9
 
10
  /**
11
  * Middleware that retries requests based on the boolean result of
12
  * invoking the provided "decider" function.
13
+ *
14
+ * @final
15
  */
16
  class RetryMiddleware
17
  {
18
+ /**
19
+ * @var callable(RequestInterface, array): PromiseInterface
20
+ */
21
  private $nextHandler;
22
 
23
+ /**
24
+ * @var callable
25
+ */
26
  private $decider;
27
 
28
+ /**
29
+ * @var callable(int)
30
+ */
31
  private $delay;
32
 
33
  /**
34
+ * @param callable $decider Function that accepts the number of retries,
35
+ * a request, [response], and [exception] and
36
+ * returns true if the request is to be
37
+ * retried.
38
+ * @param callable(RequestInterface, array): PromiseInterface $nextHandler Next handler to invoke.
39
+ * @param (callable(int): int)|null $delay Function that accepts the number of retries
40
+ * and returns the number of
41
+ * milliseconds to delay.
42
  */
43
+ public function __construct(callable $decider, callable $nextHandler, callable $delay = null)
44
+ {
 
 
 
45
  $this->decider = $decider;
46
  $this->nextHandler = $nextHandler;
47
  $this->delay = $delay ?: __CLASS__ . '::exponentialDelay';
50
  /**
51
  * Default exponential backoff delay function.
52
  *
 
 
53
  * @return int milliseconds.
54
  */
55
+ public static function exponentialDelay(int $retries): int
56
  {
57
+ return (int) \pow(2, $retries - 1) * 1000;
58
  }
59
 
60
+ public function __invoke(RequestInterface $request, array $options): PromiseInterface
 
 
 
 
 
 
61
  {
62
  if (!isset($options['retries'])) {
63
  $options['retries'] = 0;
73
 
74
  /**
75
  * Execute fulfilled closure
 
 
76
  */
77
+ private function onFulfilled(RequestInterface $request, array $options): callable
78
  {
79
+ return function ($value) use ($request, $options) {
80
+ if (!($this->decider)(
 
81
  $options['retries'],
82
+ $request,
83
  $value,
84
  null
85
  )) {
86
  return $value;
87
  }
88
+ return $this->doRetry($request, $options, $value);
89
  };
90
  }
91
 
92
  /**
93
  * Execute rejected closure
 
 
94
  */
95
+ private function onRejected(RequestInterface $req, array $options): callable
96
  {
97
  return function ($reason) use ($req, $options) {
98
+ if (!($this->decider)(
 
99
  $options['retries'],
100
  $req,
101
  null,
102
  $reason
103
  )) {
104
+ return P\Create::rejectionFor($reason);
105
  }
106
  return $this->doRetry($req, $options);
107
  };
108
  }
109
 
110
+ private function doRetry(RequestInterface $request, array $options, ResponseInterface $response = null): PromiseInterface
 
 
 
111
  {
112
+ $options['delay'] = ($this->delay)(++$options['retries'], $response);
113
 
114
  return $this($request, $options);
115
  }
vendor/guzzlehttp/guzzle/src/TransferStats.php CHANGED
@@ -1,4 +1,5 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use Psr\Http\Message\RequestInterface;
@@ -11,10 +12,29 @@ use Psr\Http\Message\UriInterface;
11
  */
12
  final class TransferStats
13
  {
 
 
 
14
  private $request;
 
 
 
 
15
  private $response;
 
 
 
 
16
  private $transferTime;
 
 
 
 
17
  private $handlerStats;
 
 
 
 
18
  private $handlerErrorData;
19
 
20
  /**
@@ -26,10 +46,10 @@ final class TransferStats
26
  */
27
  public function __construct(
28
  RequestInterface $request,
29
- ResponseInterface $response = null,
30
- $transferTime = null,
31
  $handlerErrorData = null,
32
- $handlerStats = []
33
  ) {
34
  $this->request = $request;
35
  $this->response = $response;
@@ -38,30 +58,23 @@ final class TransferStats
38
  $this->handlerStats = $handlerStats;
39
  }
40
 
41
- /**
42
- * @return RequestInterface
43
- */
44
- public function getRequest()
45
  {
46
  return $this->request;
47
  }
48
 
49
  /**
50
  * Returns the response that was received (if any).
51
- *
52
- * @return ResponseInterface|null
53
  */
54
- public function getResponse()
55
  {
56
  return $this->response;
57
  }
58
 
59
  /**
60
  * Returns true if a response was received.
61
- *
62
- * @return bool
63
  */
64
- public function hasResponse()
65
  {
66
  return $this->response !== null;
67
  }
@@ -82,10 +95,8 @@ final class TransferStats
82
 
83
  /**
84
  * Get the effective URI the request was sent to.
85
- *
86
- * @return UriInterface
87
  */
88
- public function getEffectiveUri()
89
  {
90
  return $this->request->getUri();
91
  }
@@ -95,17 +106,15 @@ final class TransferStats
95
  *
96
  * @return float|null Time in seconds.
97
  */
98
- public function getTransferTime()
99
  {
100
  return $this->transferTime;
101
  }
102
 
103
  /**
104
  * Gets an array of all of the handler specific transfer data.
105
- *
106
- * @return array
107
  */
108
- public function getHandlerStats()
109
  {
110
  return $this->handlerStats;
111
  }
@@ -117,10 +126,8 @@ final class TransferStats
117
  *
118
  * @return mixed|null
119
  */
120
- public function getHandlerStat($stat)
121
  {
122
- return isset($this->handlerStats[$stat])
123
- ? $this->handlerStats[$stat]
124
- : null;
125
  }
126
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use Psr\Http\Message\RequestInterface;
12
  */
13
  final class TransferStats
14
  {
15
+ /**
16
+ * @var RequestInterface
17
+ */
18
  private $request;
19
+
20
+ /**
21
+ * @var ResponseInterface|null
22
+ */
23
  private $response;
24
+
25
+ /**
26
+ * @var float|null
27
+ */
28
  private $transferTime;
29
+
30
+ /**
31
+ * @var array
32
+ */
33
  private $handlerStats;
34
+
35
+ /**
36
+ * @var mixed|null
37
+ */
38
  private $handlerErrorData;
39
 
40
  /**
46
  */
47
  public function __construct(
48
  RequestInterface $request,
49
+ ?ResponseInterface $response = null,
50
+ ?float $transferTime = null,
51
  $handlerErrorData = null,
52
+ array $handlerStats = []
53
  ) {
54
  $this->request = $request;
55
  $this->response = $response;
58
  $this->handlerStats = $handlerStats;
59
  }
60
 
61
+ public function getRequest(): RequestInterface
 
 
 
62
  {
63
  return $this->request;
64
  }
65
 
66
  /**
67
  * Returns the response that was received (if any).
 
 
68
  */
69
+ public function getResponse(): ?ResponseInterface
70
  {
71
  return $this->response;
72
  }
73
 
74
  /**
75
  * Returns true if a response was received.
 
 
76
  */
77
+ public function hasResponse(): bool
78
  {
79
  return $this->response !== null;
80
  }
95
 
96
  /**
97
  * Get the effective URI the request was sent to.
 
 
98
  */
99
+ public function getEffectiveUri(): UriInterface
100
  {
101
  return $this->request->getUri();
102
  }
106
  *
107
  * @return float|null Time in seconds.
108
  */
109
+ public function getTransferTime(): ?float
110
  {
111
  return $this->transferTime;
112
  }
113
 
114
  /**
115
  * Gets an array of all of the handler specific transfer data.
 
 
116
  */
117
+ public function getHandlerStats(): array
118
  {
119
  return $this->handlerStats;
120
  }
126
  *
127
  * @return mixed|null
128
  */
129
+ public function getHandlerStat(string $stat)
130
  {
131
+ return $this->handlerStats[$stat] ?? null;
 
 
132
  }
133
  }
vendor/guzzlehttp/guzzle/src/UriTemplate.php DELETED
@@ -1,237 +0,0 @@
1
- <?php
2
- namespace GuzzleHttp;
3
-
4
- /**
5
- * Expands URI templates. Userland implementation of PECL uri_template.
6
- *
7
- * @link http://tools.ietf.org/html/rfc6570
8
- */
9
- class UriTemplate
10
- {
11
- /** @var string URI template */
12
- private $template;
13
-
14
- /** @var array Variables to use in the template expansion */
15
- private $variables;
16
-
17
- /** @var array Hash for quick operator lookups */
18
- private static $operatorHash = [
19
- '' => ['prefix' => '', 'joiner' => ',', 'query' => false],
20
- '+' => ['prefix' => '', 'joiner' => ',', 'query' => false],
21
- '#' => ['prefix' => '#', 'joiner' => ',', 'query' => false],
22
- '.' => ['prefix' => '.', 'joiner' => '.', 'query' => false],
23
- '/' => ['prefix' => '/', 'joiner' => '/', 'query' => false],
24
- ';' => ['prefix' => ';', 'joiner' => ';', 'query' => true],
25
- '?' => ['prefix' => '?', 'joiner' => '&', 'query' => true],
26
- '&' => ['prefix' => '&', 'joiner' => '&', 'query' => true]
27
- ];
28
-
29
- /** @var array Delimiters */
30
- private static $delims = [':', '/', '?', '#', '[', ']', '@', '!', '$',
31
- '&', '\'', '(', ')', '*', '+', ',', ';', '='];
32
-
33
- /** @var array Percent encoded delimiters */
34
- private static $delimsPct = ['%3A', '%2F', '%3F', '%23', '%5B', '%5D',
35
- '%40', '%21', '%24', '%26', '%27', '%28', '%29', '%2A', '%2B', '%2C',
36
- '%3B', '%3D'];
37
-
38
- public function expand($template, array $variables)
39
- {
40
- if (false === strpos($template, '{')) {
41
- return $template;
42
- }
43
-
44
- $this->template = $template;
45
- $this->variables = $variables;
46
-
47
- return preg_replace_callback(
48
- '/\{([^\}]+)\}/',
49
- [$this, 'expandMatch'],
50
- $this->template
51
- );
52
- }
53
-
54
- /**
55
- * Parse an expression into parts
56
- *
57
- * @param string $expression Expression to parse
58
- *
59
- * @return array Returns an associative array of parts
60
- */
61
- private function parseExpression($expression)
62
- {
63
- $result = [];
64
-
65
- if (isset(self::$operatorHash[$expression[0]])) {
66
- $result['operator'] = $expression[0];
67
- $expression = substr($expression, 1);
68
- } else {
69
- $result['operator'] = '';
70
- }
71
-
72
- foreach (explode(',', $expression) as $value) {
73
- $value = trim($value);
74
- $varspec = [];
75
- if ($colonPos = strpos($value, ':')) {
76
- $varspec['value'] = substr($value, 0, $colonPos);
77
- $varspec['modifier'] = ':';
78
- $varspec['position'] = (int) substr($value, $colonPos + 1);
79
- } elseif (substr($value, -1) === '*') {
80
- $varspec['modifier'] = '*';
81
- $varspec['value'] = substr($value, 0, -1);
82
- } else {
83
- $varspec['value'] = (string) $value;
84
- $varspec['modifier'] = '';
85
- }
86
- $result['values'][] = $varspec;
87
- }
88
-
89
- return $result;
90
- }
91
-
92
- /**
93
- * Process an expansion
94
- *
95
- * @param array $matches Matches met in the preg_replace_callback
96
- *
97
- * @return string Returns the replacement string
98
- */
99
- private function expandMatch(array $matches)
100
- {
101
- static $rfc1738to3986 = ['+' => '%20', '%7e' => '~'];
102
-
103
- $replacements = [];
104
- $parsed = self::parseExpression($matches[1]);
105
- $prefix = self::$operatorHash[$parsed['operator']]['prefix'];
106
- $joiner = self::$operatorHash[$parsed['operator']]['joiner'];
107
- $useQuery = self::$operatorHash[$parsed['operator']]['query'];
108
-
109
- foreach ($parsed['values'] as $value) {
110
- if (!isset($this->variables[$value['value']])) {
111
- continue;
112
- }
113
-
114
- $variable = $this->variables[$value['value']];
115
- $actuallyUseQuery = $useQuery;
116
- $expanded = '';
117
-
118
- if (is_array($variable)) {
119
- $isAssoc = $this->isAssoc($variable);
120
- $kvp = [];
121
- foreach ($variable as $key => $var) {
122
- if ($isAssoc) {
123
- $key = rawurlencode($key);
124
- $isNestedArray = is_array($var);
125
- } else {
126
- $isNestedArray = false;
127
- }
128
-
129
- if (!$isNestedArray) {
130
- $var = rawurlencode($var);
131
- if ($parsed['operator'] === '+' ||
132
- $parsed['operator'] === '#'
133
- ) {
134
- $var = $this->decodeReserved($var);
135
- }
136
- }
137
-
138
- if ($value['modifier'] === '*') {
139
- if ($isAssoc) {
140
- if ($isNestedArray) {
141
- // Nested arrays must allow for deeply nested
142
- // structures.
143
- $var = strtr(
144
- http_build_query([$key => $var]),
145
- $rfc1738to3986
146
- );
147
- } else {
148
- $var = $key . '=' . $var;
149
- }
150
- } elseif ($key > 0 && $actuallyUseQuery) {
151
- $var = $value['value'] . '=' . $var;
152
- }
153
- }
154
-
155
- $kvp[$key] = $var;
156
- }
157
-
158
- if (empty($variable)) {
159
- $actuallyUseQuery = false;
160
- } elseif ($value['modifier'] === '*') {
161
- $expanded = implode($joiner, $kvp);
162
- if ($isAssoc) {
163
- // Don't prepend the value name when using the explode
164
- // modifier with an associative array.
165
- $actuallyUseQuery = false;
166
- }
167
- } else {
168
- if ($isAssoc) {
169
- // When an associative array is encountered and the
170
- // explode modifier is not set, then the result must be
171
- // a comma separated list of keys followed by their
172
- // respective values.
173
- foreach ($kvp as $k => &$v) {
174
- $v = $k . ',' . $v;
175
- }
176
- }
177
- $expanded = implode(',', $kvp);
178
- }
179
- } else {
180
- if ($value['modifier'] === ':') {
181
- $variable = substr($variable, 0, $value['position']);
182
- }
183
- $expanded = rawurlencode($variable);
184
- if ($parsed['operator'] === '+' || $parsed['operator'] === '#') {
185
- $expanded = $this->decodeReserved($expanded);
186
- }
187
- }
188
-
189
- if ($actuallyUseQuery) {
190
- if (!$expanded && $joiner !== '&') {
191
- $expanded = $value['value'];
192
- } else {
193
- $expanded = $value['value'] . '=' . $expanded;
194
- }
195
- }
196
-
197
- $replacements[] = $expanded;
198
- }
199
-
200
- $ret = implode($joiner, $replacements);
201
- if ($ret && $prefix) {
202
- return $prefix . $ret;
203
- }
204
-
205
- return $ret;
206
- }
207
-
208
- /**
209
- * Determines if an array is associative.
210
- *
211
- * This makes the assumption that input arrays are sequences or hashes.
212
- * This assumption is a tradeoff for accuracy in favor of speed, but it
213
- * should work in almost every case where input is supplied for a URI
214
- * template.
215
- *
216
- * @param array $array Array to check
217
- *
218
- * @return bool
219
- */
220
- private function isAssoc(array $array)
221
- {
222
- return $array && array_keys($array)[0] !== 0;
223
- }
224
-
225
- /**
226
- * Removes percent encoding on reserved characters (used with + and #
227
- * modifiers).
228
- *
229
- * @param string $string String to fix
230
- *
231
- * @return string
232
- */
233
- private function decodeReserved($string)
234
- {
235
- return str_replace(self::$delimsPct, self::$delims, $string);
236
- }
237
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/guzzlehttp/guzzle/src/Utils.php CHANGED
@@ -1,41 +1,331 @@
1
  <?php
 
2
  namespace GuzzleHttp;
3
 
4
  use GuzzleHttp\Exception\InvalidArgumentException;
 
 
 
 
5
  use Psr\Http\Message\UriInterface;
6
- use Symfony\Polyfill\Intl\Idn\Idn;
7
 
8
  final class Utils
9
  {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  /**
11
  * Wrapper for the hrtime() or microtime() functions
12
  * (depending on the PHP version, one of the two is used)
13
  *
14
- * @return float|mixed UNIX timestamp
15
  *
16
  * @internal
17
  */
18
- public static function currentTime()
19
  {
20
- return function_exists('hrtime') ? hrtime(true) / 1e9 : microtime(true);
21
  }
22
 
23
  /**
24
- * @param int $options
25
- *
26
- * @return UriInterface
27
  * @throws InvalidArgumentException
28
  *
29
  * @internal
30
  */
31
- public static function idnUriConvert(UriInterface $uri, $options = 0)
32
  {
33
  if ($uri->getHost()) {
34
  $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
35
  if ($asciiHost === false) {
36
- $errorBitSet = isset($info['errors']) ? $info['errors'] : 0;
37
 
38
- $errorConstants = array_filter(array_keys(get_defined_constants()), function ($name) {
39
  return substr($name, 0, 11) === 'IDNA_ERROR_';
40
  });
41
 
@@ -52,11 +342,10 @@ final class Utils
52
  }
53
 
54
  throw new InvalidArgumentException($errorMessage);
55
- } else {
56
- if ($uri->getHost() !== $asciiHost) {
57
- // Replace URI only if the ASCII version is different
58
- $uri = $uri->withHost($asciiHost);
59
- }
60
  }
61
  }
62
 
@@ -64,29 +353,30 @@ final class Utils
64
  }
65
 
66
  /**
67
- * @param string $domain
68
- * @param int $options
69
- * @param array $info
70
- *
71
- * @return string|false
72
  */
73
- private static function idnToAsci($domain, $options, &$info = [])
74
  {
75
- if (\preg_match('%^[ -~]+$%', $domain) === 1) {
76
- return $domain;
77
  }
78
 
79
- if (\extension_loaded('intl') && defined('INTL_IDNA_VARIANT_UTS46')) {
80
- return \idn_to_ascii($domain, $options, INTL_IDNA_VARIANT_UTS46, $info);
81
  }
82
 
83
- /*
84
- * The Idn class is marked as @internal. Verify that class and method exists.
85
- */
86
- if (method_exists(Idn::class, 'idn_to_ascii')) {
87
- return Idn::idn_to_ascii($domain, $options, Idn::INTL_IDNA_VARIANT_UTS46, $info);
 
 
 
 
 
88
  }
89
 
90
- throw new \RuntimeException('ext-intl or symfony/polyfill-intl-idn not loaded or too old');
91
  }
92
  }
1
  <?php
2
+
3
  namespace GuzzleHttp;
4
 
5
  use GuzzleHttp\Exception\InvalidArgumentException;
6
+ use GuzzleHttp\Handler\CurlHandler;
7
+ use GuzzleHttp\Handler\CurlMultiHandler;
8
+ use GuzzleHttp\Handler\Proxy;
9
+ use GuzzleHttp\Handler\StreamHandler;
10
  use Psr\Http\Message\UriInterface;
 
11
 
12
  final class Utils
13
  {
14
+ /**
15
+ * Debug function used to describe the provided value type and class.
16
+ *
17
+ * @param mixed $input
18
+ *
19
+ * @return string Returns a string containing the type of the variable and
20
+ * if a class is provided, the class name.
21
+ */
22
+ public static function describeType($input): string
23
+ {
24
+ switch (\gettype($input)) {
25
+ case 'object':
26
+ return 'object(' . \get_class($input) . ')';
27
+ case 'array':
28
+ return 'array(' . \count($input) . ')';
29
+ default:
30
+ \ob_start();
31
+ \var_dump($input);
32
+ // normalize float vs double
33
+ /** @var string $varDumpContent */
34
+ $varDumpContent = \ob_get_clean();
35
+
36
+ return \str_replace('double(', 'float(', \rtrim($varDumpContent));
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Parses an array of header lines into an associative array of headers.
42
+ *
43
+ * @param iterable $lines Header lines array of strings in the following
44
+ * format: "Name: Value"
45
+ */
46
+ public static function headersFromLines(iterable $lines): array
47
+ {
48
+ $headers = [];
49
+
50
+ foreach ($lines as $line) {
51
+ $parts = \explode(':', $line, 2);
52
+ $headers[\trim($parts[0])][] = isset($parts[1]) ? \trim($parts[1]) : null;
53
+ }
54
+
55
+ return $headers;
56
+ }
57
+
58
+ /**
59
+ * Returns a debug stream based on the provided variable.
60
+ *
61
+ * @param mixed $value Optional value
62
+ *
63
+ * @return resource
64
+ */
65
+ public static function debugResource($value = null)
66
+ {
67
+ if (\is_resource($value)) {
68
+ return $value;
69
+ }
70
+ if (\defined('STDOUT')) {
71
+ return \STDOUT;
72
+ }
73
+
74
+ return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w');
75
+ }
76
+
77
+ /**
78
+ * Chooses and creates a default handler to use based on the environment.
79
+ *
80
+ * The returned handler is not wrapped by any default middlewares.
81
+ *
82
+ * @throws \RuntimeException if no viable Handler is available.
83
+ *
84
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
85
+ */
86
+ public static function chooseHandler(): callable
87
+ {
88
+ $handler = null;
89
+ if (\function_exists('curl_multi_exec') && \function_exists('curl_exec')) {
90
+ $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
91
+ } elseif (\function_exists('curl_exec')) {
92
+ $handler = new CurlHandler();
93
+ } elseif (\function_exists('curl_multi_exec')) {
94
+ $handler = new CurlMultiHandler();
95
+ }
96
+
97
+ if (\ini_get('allow_url_fopen')) {
98
+ $handler = $handler
99
+ ? Proxy::wrapStreaming($handler, new StreamHandler())
100
+ : new StreamHandler();
101
+ } elseif (!$handler) {
102
+ throw new \RuntimeException('GuzzleHttp requires cURL, the allow_url_fopen ini setting, or a custom HTTP handler.');
103
+ }
104
+
105
+ return $handler;
106
+ }
107
+
108
+ /**
109
+ * Get the default User-Agent string to use with Guzzle.
110
+ */
111
+ public static function defaultUserAgent(): string
112
+ {
113
+ return sprintf('GuzzleHttp/%d', ClientInterface::MAJOR_VERSION);
114
+ }
115
+
116
+ /**
117
+ * Returns the default cacert bundle for the current system.
118
+ *
119
+ * First, the openssl.cafile and curl.cainfo php.ini settings are checked.
120
+ * If those settings are not configured, then the common locations for
121
+ * bundles found on Red Hat, CentOS, Fedora, Ubuntu, Debian, FreeBSD, OS X
122
+ * and Windows are checked. If any of these file locations are found on
123
+ * disk, they will be utilized.
124
+ *
125
+ * Note: the result of this function is cached for subsequent calls.
126
+ *
127
+ * @throws \RuntimeException if no bundle can be found.
128
+ *
129
+ * @deprecated Utils::defaultCaBundle will be removed in guzzlehttp/guzzle:8.0. This method is not needed in PHP 5.6+.
130
+ */
131
+ public static function defaultCaBundle(): string
132
+ {
133
+ static $cached = null;
134
+ static $cafiles = [
135
+ // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
136
+ '/etc/pki/tls/certs/ca-bundle.crt',
137
+ // Ubuntu, Debian (provided by the ca-certificates package)
138
+ '/etc/ssl/certs/ca-certificates.crt',
139
+ // FreeBSD (provided by the ca_root_nss package)
140
+ '/usr/local/share/certs/ca-root-nss.crt',
141
+ // SLES 12 (provided by the ca-certificates package)
142
+ '/var/lib/ca-certificates/ca-bundle.pem',
143
+ // OS X provided by homebrew (using the default path)
144
+ '/usr/local/etc/openssl/cert.pem',
145
+ // Google app engine
146
+ '/etc/ca-certificates.crt',
147
+ // Windows?
148
+ 'C:\\windows\\system32\\curl-ca-bundle.crt',
149
+ 'C:\\windows\\curl-ca-bundle.crt',
150
+ ];
151
+
152
+ if ($cached) {
153
+ return $cached;
154
+ }
155
+
156
+ if ($ca = \ini_get('openssl.cafile')) {
157
+ return $cached = $ca;
158
+ }
159
+
160
+ if ($ca = \ini_get('curl.cainfo')) {
161
+ return $cached = $ca;
162
+ }
163
+
164
+ foreach ($cafiles as $filename) {
165
+ if (\file_exists($filename)) {
166
+ return $cached = $filename;
167
+ }
168
+ }
169
+
170
+ throw new \RuntimeException(
171
+ <<< EOT
172
+ No system CA bundle could be found in any of the the common system locations.
173
+ PHP versions earlier than 5.6 are not properly configured to use the system's
174
+ CA bundle by default. In order to verify peer certificates, you will need to
175
+ supply the path on disk to a certificate bundle to the 'verify' request
176
+ option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
177
+ need a specific certificate bundle, then Mozilla provides a commonly used CA
178
+ bundle which can be downloaded here (provided by the maintainer of cURL):
179
+ https://curl.haxx.se/ca/cacert.pem. Once
180
+ you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
181
+ ini setting to point to the path to the file, allowing you to omit the 'verify'
182
+ request option. See https://curl.haxx.se/docs/sslcerts.html for more
183
+ information.
184
+ EOT
185
+ );
186
+ }
187
+
188
+ /**
189
+ * Creates an associative array of lowercase header names to the actual
190
+ * header casing.
191
+ */
192
+ public static function normalizeHeaderKeys(array $headers): array
193
+ {
194
+ $result = [];
195
+ foreach (\array_keys($headers) as $key) {
196
+ $result[\strtolower($key)] = $key;
197
+ }
198
+
199
+ return $result;
200
+ }
201
+
202
+ /**
203
+ * Returns true if the provided host matches any of the no proxy areas.
204
+ *
205
+ * This method will strip a port from the host if it is present. Each pattern
206
+ * can be matched with an exact match (e.g., "foo.com" == "foo.com") or a
207
+ * partial match: (e.g., "foo.com" == "baz.foo.com" and ".foo.com" ==
208
+ * "baz.foo.com", but ".foo.com" != "foo.com").
209
+ *
210
+ * Areas are matched in the following cases:
211
+ * 1. "*" (without quotes) always matches any hosts.
212
+ * 2. An exact match.
213
+ * 3. The area starts with "." and the area is the last part of the host. e.g.
214
+ * '.mit.edu' will match any host that ends with '.mit.edu'.
215
+ *
216
+ * @param string $host Host to check against the patterns.
217
+ * @param string[] $noProxyArray An array of host patterns.
218
+ *
219
+ * @throws InvalidArgumentException
220
+ */
221
+ public static function isHostInNoProxy(string $host, array $noProxyArray): bool
222
+ {
223
+ if (\strlen($host) === 0) {
224
+ throw new InvalidArgumentException('Empty host provided');
225
+ }
226
+
227
+ // Strip port if present.
228
+ [$host] = \explode(':', $host, 2);
229
+
230
+ foreach ($noProxyArray as $area) {
231
+ // Always match on wildcards.
232
+ if ($area === '*') {
233
+ return true;
234
+ }
235
+
236
+ if (empty($area)) {
237
+ // Don't match on empty values.
238
+ continue;
239
+ }
240
+
241
+ if ($area === $host) {
242
+ // Exact matches.
243
+ return true;
244
+ }
245
+ // Special match if the area when prefixed with ".". Remove any
246
+ // existing leading "." and add a new leading ".".
247
+ $area = '.' . \ltrim($area, '.');
248
+ if (\substr($host, -(\strlen($area))) === $area) {
249
+ return true;
250
+ }
251
+ }
252
+
253
+ return false;
254
+ }
255
+
256
+ /**
257
+ * Wrapper for json_decode that throws when an error occurs.
258
+ *
259
+ * @param string $json JSON data to parse
260
+ * @param bool $assoc When true, returned objects will be converted
261
+ * into associative arrays.
262
+ * @param int $depth User specified recursion depth.
263
+ * @param int $options Bitmask of JSON decode options.
264
+ *
265
+ * @return object|array|string|int|float|bool|null
266
+ *
267
+ * @throws InvalidArgumentException if the JSON cannot be decoded.
268
+ *
269
+ * @link https://www.php.net/manual/en/function.json-decode.php
270
+ */
271
+ public static function jsonDecode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
272
+ {
273
+ $data = \json_decode($json, $assoc, $depth, $options);
274
+ if (\JSON_ERROR_NONE !== \json_last_error()) {
275
+ throw new InvalidArgumentException('json_decode error: ' . \json_last_error_msg());
276
+ }
277
+
278
+ return $data;
279
+ }
280
+
281
+ /**
282
+ * Wrapper for JSON encoding that throws when an error occurs.
283
+ *
284
+ * @param mixed $value The value being encoded
285
+ * @param int $options JSON encode option bitmask
286
+ * @param int $depth Set the maximum depth. Must be greater than zero.
287
+ *
288
+ * @throws InvalidArgumentException if the JSON cannot be encoded.
289
+ *
290
+ * @link https://www.php.net/manual/en/function.json-encode.php
291
+ */
292
+ public static function jsonEncode($value, int $options = 0, int $depth = 512): string
293
+ {
294
+ $json = \json_encode($value, $options, $depth);
295
+ if (\JSON_ERROR_NONE !== \json_last_error()) {
296
+ throw new InvalidArgumentException('json_encode error: ' . \json_last_error_msg());
297
+ }
298
+
299
+ /** @var string */
300
+ return $json;
301
+ }
302
+
303
  /**
304
  * Wrapper for the hrtime() or microtime() functions
305
  * (depending on the PHP version, one of the two is used)
306
  *
307
+ * @return float UNIX timestamp
308
  *
309
  * @internal
310
  */
311
+ public static function currentTime(): float
312
  {
313
+ return (float) \function_exists('hrtime') ? \hrtime(true) / 1e9 : \microtime(true);
314
  }
315
 
316
  /**
 
 
 
317
  * @throws InvalidArgumentException
318
  *
319
  * @internal
320
  */
321
+ public static function idnUriConvert(UriInterface $uri, int $options = 0): UriInterface
322
  {
323
  if ($uri->getHost()) {
324
  $asciiHost = self::idnToAsci($uri->getHost(), $options, $info);
325
  if ($asciiHost === false) {
326
+ $errorBitSet = $info['errors'] ?? 0;
327
 
328
+ $errorConstants = array_filter(array_keys(get_defined_constants()), static function (string $name): bool {
329
  return substr($name, 0, 11) === 'IDNA_ERROR_';
330
  });
331
 
342
  }
343
 
344
  throw new InvalidArgumentException($errorMessage);
345
+ }
346
+ if ($uri->getHost() !== $asciiHost) {
347
+ // Replace URI only if the ASCII version is different
348
+ $uri = $uri->withHost($asciiHost);
 
349
  }
350
  }
351
 
353
  }
354
 
355
  /**
356
+ * @internal
 
 
 
 
357
  */
358
+ public static function getenv(string $name): ?string
359
  {
360
+ if (isset($_SERVER[$name])) {
361
+ return (string) $_SERVER[$name];
362
  }
363
 
364
+ if (\PHP_SAPI === 'cli' && ($value = \getenv($name)) !== false && $value !== null) {
365
+ return (string) $value;
366
  }
367
 
368
+ return null;
369
+ }
370
+
371
+ /**
372
+ * @return string|false
373
+ */
374
+ private static function idnToAsci(string $domain, int $options, ?array &$info = [])
375
+ {
376
+ if (\function_exists('idn_to_ascii') && \defined('INTL_IDNA_VARIANT_UTS46')) {
377
+ return \idn_to_ascii($domain, $options, \INTL_IDNA_VARIANT_UTS46, $info);
378
  }
379
 
380
+ throw new \Error('ext-idn or symfony/polyfill-intl-idn not loaded or too old');
381
  }
382
  }
vendor/guzzlehttp/guzzle/src/functions.php CHANGED
@@ -1,77 +1,34 @@
1
  <?php
2
- namespace GuzzleHttp;
3
-
4
- use GuzzleHttp\Handler\CurlHandler;
5
- use GuzzleHttp\Handler\CurlMultiHandler;
6
- use GuzzleHttp\Handler\Proxy;
7
- use GuzzleHttp\Handler\StreamHandler;
8
-
9
- /**
10
- * Expands a URI template
11
- *
12
- * @param string $template URI template
13
- * @param array $variables Template variables
14
- *
15
- * @return string
16
- */
17
- function uri_template($template, array $variables)
18
- {
19
- if (extension_loaded('uri_template')) {
20
- // @codeCoverageIgnoreStart
21
- return \uri_template($template, $variables);
22
- // @codeCoverageIgnoreEnd
23
- }
24
 
25
- static $uriTemplate;
26
- if (!$uriTemplate) {
27
- $uriTemplate = new UriTemplate();
28
- }
29
-
30
- return $uriTemplate->expand($template, $variables);
31
- }
32
 
33
  /**
34
  * Debug function used to describe the provided value type and class.
35
  *
36
- * @param mixed $input
 
37
  *
38
  * @return string Returns a string containing the type of the variable and
39
  * if a class is provided, the class name.
 
 
40
  */
41
- function describe_type($input)
42
  {
43
- switch (gettype($input)) {
44
- case 'object':
45
- return 'object(' . get_class($input) . ')';
46
- case 'array':
47
- return 'array(' . count($input) . ')';
48
- default:
49
- ob_start();
50
- var_dump($input);
51
- // normalize float vs double
52
- return str_replace('double(', 'float(', rtrim(ob_get_clean()));
53
- }
54
  }
55
 
56
  /**
57
  * Parses an array of header lines into an associative array of headers.
58
  *
59
  * @param iterable $lines Header lines array of strings in the following
60
- * format: "Name: Value"
61
- * @return array
 
62
  */
63
- function headers_from_lines($lines)
64
  {
65
- $headers = [];
66
-
67
- foreach ($lines as $line) {
68
- $parts = explode(':', $line, 2);
69
- $headers[trim($parts[0])][] = isset($parts[1])
70
- ? trim($parts[1])
71
- : null;
72
- }
73
-
74
- return $headers;
75
  }
76
 
77
  /**
@@ -80,16 +37,12 @@ function headers_from_lines($lines)
80
  * @param mixed $value Optional value
81
  *
82
  * @return resource
 
 
83
  */
84
  function debug_resource($value = null)
85
  {
86
- if (is_resource($value)) {
87
- return $value;
88
- } elseif (defined('STDOUT')) {
89
- return STDOUT;
90
- }
91
-
92
- return fopen('php://output', 'w');
93
  }
94
 
95
  /**
@@ -97,50 +50,25 @@ function debug_resource($value = null)
97
  *
98
  * The returned handler is not wrapped by any default middlewares.
99
  *
100
- * @return callable Returns the best handler for the given system.
101
  * @throws \RuntimeException if no viable Handler is available.
 
 
 
 
102
  */
103
- function choose_handler()
104
  {
105
- $handler = null;
106
- if (function_exists('curl_multi_exec') && function_exists('curl_exec')) {
107
- $handler = Proxy::wrapSync(new CurlMultiHandler(), new CurlHandler());
108
- } elseif (function_exists('curl_exec')) {
109
- $handler = new CurlHandler();
110
- } elseif (function_exists('curl_multi_exec')) {
111
- $handler = new CurlMultiHandler();
112
- }
113
-
114
- if (ini_get('allow_url_fopen')) {
115
- $handler = $handler
116
- ? Proxy::wrapStreaming($handler, new StreamHandler())
117
- : new StreamHandler();
118
- } elseif (!$handler) {
119
- throw new \RuntimeException('GuzzleHttp requires cURL, the '
120
- . 'allow_url_fopen ini setting, or a custom HTTP handler.');
121
- }
122
-
123
- return $handler;
124
  }
125
 
126
  /**
127
- * Get the default User-Agent string to use with Guzzle
128
  *
129
- * @return string
130
  */
131
- function default_user_agent()
132
  {
133
- static $defaultAgent = '';
134
-
135
- if (!$defaultAgent) {
136
- $defaultAgent = 'GuzzleHttp/' . Client::VERSION;
137
- if (extension_loaded('curl') && function_exists('curl_version')) {
138
- $defaultAgent .= ' curl/' . \curl_version()['version'];
139
- }
140
- $defaultAgent .= ' PHP/' . PHP_VERSION;
141
- }
142
-
143
- return $defaultAgent;
144
  }
145
 
146
  /**
@@ -154,82 +82,24 @@ function default_user_agent()
154
  *
155
  * Note: the result of this function is cached for subsequent calls.
156
  *
157
- * @return string
158
  * @throws \RuntimeException if no bundle can be found.
 
 
159
  */
160
- function default_ca_bundle()
161
  {
162
- static $cached = null;
163
- static $cafiles = [
164
- // Red Hat, CentOS, Fedora (provided by the ca-certificates package)
165
- '/etc/pki/tls/certs/ca-bundle.crt',
166
- // Ubuntu, Debian (provided by the ca-certificates package)
167
- '/etc/ssl/certs/ca-certificates.crt',
168
- // FreeBSD (provided by the ca_root_nss package)
169
- '/usr/local/share/certs/ca-root-nss.crt',
170
- // SLES 12 (provided by the ca-certificates package)
171
- '/var/lib/ca-certificates/ca-bundle.pem',
172
- // OS X provided by homebrew (using the default path)
173
- '/usr/local/etc/openssl/cert.pem',
174
- // Google app engine
175
- '/etc/ca-certificates.crt',
176
- // Windows?
177
- 'C:\\windows\\system32\\curl-ca-bundle.crt',
178
- 'C:\\windows\\curl-ca-bundle.crt',
179
- ];
180
-
181
- if ($cached) {
182
- return $cached;
183
- }
184
-
185
- if ($ca = ini_get('openssl.cafile')) {
186
- return $cached = $ca;
187
- }
188
-
189
- if ($ca = ini_get('curl.cainfo')) {
190
- return $cached = $ca;
191
- }
192
-
193
- foreach ($cafiles as $filename) {
194
- if (file_exists($filename)) {
195
- return $cached = $filename;
196
- }
197
- }
198
-
199
- throw new \RuntimeException(
200
- <<< EOT
201
- No system CA bundle could be found in any of the the common system locations.
202
- PHP versions earlier than 5.6 are not properly configured to use the system's
203
- CA bundle by default. In order to verify peer certificates, you will need to
204
- supply the path on disk to a certificate bundle to the 'verify' request
205
- option: http://docs.guzzlephp.org/en/latest/clients.html#verify. If you do not
206
- need a specific certificate bundle, then Mozilla provides a commonly used CA
207
- bundle which can be downloaded here (provided by the maintainer of cURL):
208
- https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt. Once
209
- you have a CA bundle available on disk, you can set the 'openssl.cafile' PHP
210
- ini setting to point to the path to the file, allowing you to omit the 'verify'
211
- request option. See http://curl.haxx.se/docs/sslcerts.html for more
212
- information.
213
- EOT
214
- );
215
  }
216
 
217
  /**
218
  * Creates an associative array of lowercase header names to the actual
219
  * header casing.
220
  *
221
- * @param array $headers
222
- *
223
- * @return array
224
  */
225
- function normalize_header_keys(array $headers)
226
  {
227
- $result = [];
228
- foreach (array_keys($headers) as $key) {
229
- $result[strtolower($key)] = $key;
230
- }
231
-
232
- return $result;
233
  }
234
 
235
  /**
@@ -246,89 +116,52 @@ function normalize_header_keys(array $headers)
246
  * 3. The area starts with "." and the area is the last part of the host. e.g.
247
  * '.mit.edu' will match any host that ends with '.mit.edu'.
248
  *
249
- * @param string $host Host to check against the patterns.
250
- * @param array $noProxyArray An array of host patterns.
 
 
251
  *
252
- * @return bool
253
  */
254
- function is_host_in_noproxy($host, array $noProxyArray)
255
  {
256
- if (strlen($host) === 0) {
257
- throw new \InvalidArgumentException('Empty host provided');
258
- }
259
-
260
- // Strip port if present.
261
- if (strpos($host, ':')) {
262
- $host = explode($host, ':', 2)[0];
263
- }
264
-
265
- foreach ($noProxyArray as $area) {
266
- // Always match on wildcards.
267
- if ($area === '*') {
268
- return true;
269
- } elseif (empty($area)) {
270
- // Don't match on empty values.
271
- continue;
272
- } elseif ($area === $host) {
273
- // Exact matches.
274
- return true;
275
- } else {
276
- // Special match if the area when prefixed with ".". Remove any
277
- // existing leading "." and add a new leading ".".
278
- $area = '.' . ltrim($area, '.');
279
- if (substr($host, -(strlen($area))) === $area) {
280
- return true;
281
- }
282
- }
283
- }
284
-
285
- return false;
286
  }
287
 
288
  /**
289
  * Wrapper for json_decode that throws when an error occurs.
290
  *
291
  * @param string $json JSON data to parse
292
- * @param bool $assoc When true, returned objects will be converted
293
  * into associative arrays.
294
  * @param int $depth User specified recursion depth.
295
  * @param int $options Bitmask of JSON decode options.
296
  *
297
- * @return mixed
 
298
  * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
299
- * @link http://www.php.net/manual/en/function.json-decode.php
 
 
300
  */
301
- function json_decode($json, $assoc = false, $depth = 512, $options = 0)
302
  {
303
- $data = \json_decode($json, $assoc, $depth, $options);
304
- if (JSON_ERROR_NONE !== json_last_error()) {
305
- throw new Exception\InvalidArgumentException(
306
- 'json_decode error: ' . json_last_error_msg()
307
- );
308
- }
309
-
310
- return $data;
311
  }
312
 
313
  /**
314
  * Wrapper for JSON encoding that throws when an error occurs.
315
  *
316
  * @param mixed $value The value being encoded
317
- * @param int $options JSON encode option bitmask
318
- * @param int $depth Set the maximum depth. Must be greater than zero.
319
  *
320
- * @return string
321
  * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
322
- * @link http://www.php.net/manual/en/function.json-encode.php
 
 
323
  */
324
- function json_encode($value, $options = 0, $depth = 512)
325
  {
326
- $json = \json_encode($value, $options, $depth);
327
- if (JSON_ERROR_NONE !== json_last_error()) {
328
- throw new Exception\InvalidArgumentException(
329
- 'json_encode error: ' . json_last_error_msg()
330
- );
331
- }
332
-
333
- return $json;
334
  }
1
  <?php
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
+ namespace GuzzleHttp;
 
 
 
 
 
 
4
 
5
  /**
6
  * Debug function used to describe the provided value type and class.
7
  *
8
+ * @param mixed $input Any type of variable to describe the type of. This
9
+ * parameter misses a typehint because of that.
10
  *
11
  * @return string Returns a string containing the type of the variable and
12
  * if a class is provided, the class name.
13
+ *
14
+ * @deprecated describe_type will be removed in guzzlehttp/guzzle:8.0. Use Utils::describeType instead.
15
  */
16
+ function describe_type($input): string
17
  {
18
+ return Utils::describeType($input);
 
 
 
 
 
 
 
 
 
 
19
  }
20
 
21
  /**
22
  * Parses an array of header lines into an associative array of headers.
23
  *
24
  * @param iterable $lines Header lines array of strings in the following
25
+ * format: "Name: Value"
26
+ *
27
+ * @deprecated headers_from_lines will be removed in guzzlehttp/guzzle:8.0. Use Utils::headersFromLines instead.
28
  */
29
+ function headers_from_lines(iterable $lines): array
30
  {
31
+ return Utils::headersFromLines($lines);
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
  /**
37
  * @param mixed $value Optional value
38
  *
39
  * @return resource
40
+ *
41
+ * @deprecated debug_resource will be removed in guzzlehttp/guzzle:8.0. Use Utils::debugResource instead.
42
  */
43
  function debug_resource($value = null)
44
  {
45
+ return Utils::debugResource($value);
 
 
 
 
 
 
46
  }
47
 
48
  /**
50
  *
51
  * The returned handler is not wrapped by any default middlewares.
52
  *
 
53
  * @throws \RuntimeException if no viable Handler is available.
54
+ *
55
+ * @return callable(\Psr\Http\Message\RequestInterface, array): \GuzzleHttp\Promise\PromiseInterface Returns the best handler for the given system.
56
+ *
57
+ * @deprecated choose_handler will be removed in guzzlehttp/guzzle:8.0. Use Utils::chooseHandler instead.
58
  */
59
+ function choose_handler(): callable
60
  {
61
+ return Utils::chooseHandler();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
63
 
64
  /**
65
+ * Get the default User-Agent string to use with Guzzle.
66
  *
67
+ * @deprecated default_user_agent will be removed in guzzlehttp/guzzle:8.0. Use Utils::defaultUserAgent instead.
68
  */
69
+ function default_user_agent(): string
70
  {
71
+ return Utils::defaultUserAgent();
 
 
 
 
 
 
 
 
 
 
72
  }
73
 
74
  /**
82
  *
83
  * Note: the result of this function is cached for subsequent calls.
84
  *
 
85
  * @throws \RuntimeException if no bundle can be found.
86
+ *
87
+ * @deprecated default_ca_bundle will be removed in guzzlehttp/guzzle:8.0. This function is not needed in PHP 5.6+.
88
  */
89
+ function default_ca_bundle(): string
90
  {
91
+ return Utils::defaultCaBundle();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
93
 
94
  /**
95
  * Creates an associative array of lowercase header names to the actual
96
  * header casing.
97
  *
98
+ * @deprecated normalize_header_keys will be removed in guzzlehttp/guzzle:8.0. Use Utils::normalizeHeaderKeys instead.
 
 
99
  */
100
+ function normalize_header_keys(array $headers): array
101
  {
102
+ return Utils::normalizeHeaderKeys($headers);
 
 
 
 
 
103
  }
104
 
105
  /**
116
  * 3. The area starts with "." and the area is the last part of the host. e.g.
117
  * '.mit.edu' will match any host that ends with '.mit.edu'.
118
  *
119
+ * @param string $host Host to check against the patterns.
120
+ * @param string[] $noProxyArray An array of host patterns.
121
+ *
122
+ * @throws Exception\InvalidArgumentException
123
  *
124
+ * @deprecated is_host_in_noproxy will be removed in guzzlehttp/guzzle:8.0. Use Utils::isHostInNoProxy instead.
125
  */
126
+ function is_host_in_noproxy(string $host, array $noProxyArray): bool
127
  {
128
+ return Utils::isHostInNoProxy($host, $noProxyArray);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  }
130
 
131
  /**
132
  * Wrapper for json_decode that throws when an error occurs.
133
  *
134
  * @param string $json JSON data to parse
135
+ * @param bool $assoc When true, returned objects will be converted
136
  * into associative arrays.
137
  * @param int $depth User specified recursion depth.
138
  * @param int $options Bitmask of JSON decode options.
139
  *
140
+ * @return object|array|string|int|float|bool|null
141
+ *
142
  * @throws Exception\InvalidArgumentException if the JSON cannot be decoded.
143
+ *
144
+ * @link https://www.php.net/manual/en/function.json-decode.php
145
+ * @deprecated json_decode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonDecode instead.
146
  */
147
+ function json_decode(string $json, bool $assoc = false, int $depth = 512, int $options = 0)
148
  {
149
+ return Utils::jsonDecode($json, $assoc, $depth, $options);
 
 
 
 
 
 
 
150
  }
151
 
152
  /**
153
  * Wrapper for JSON encoding that throws when an error occurs.
154
  *
155
  * @param mixed $value The value being encoded
156
+ * @param int $options JSON encode option bitmask
157
+ * @param int $depth Set the maximum depth. Must be greater than zero.
158
  *
 
159
  * @throws Exception\InvalidArgumentException if the JSON cannot be encoded.
160
+ *
161
+ * @link https://www.php.net/manual/en/function.json-encode.php
162
+ * @deprecated json_encode will be removed in guzzlehttp/guzzle:8.0. Use Utils::jsonEncode instead.
163
  */
164
+ function json_encode($value, int $options = 0, int $depth = 512): string
165
  {
166
+ return Utils::jsonEncode($value, $options, $depth);
 
 
 
 
 
 
 
167
  }
vendor/guzzlehttp/guzzle/src/functions_include.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
  // Don't redefine the functions if included multiple times.
4
- if (!function_exists('GuzzleHttp\uri_template')) {
5
  require __DIR__ . '/functions.php';
6
  }
1
  <?php
2
 
3
  // Don't redefine the functions if included multiple times.
4
+ if (!\function_exists('GuzzleHttp\describe_type')) {
5
  require __DIR__ . '/functions.php';
6
  }
vendor/{symfony/polyfill-intl-normalizer → psr/http-client}/LICENSE RENAMED
@@ -1,14 +1,14 @@
1
- Copyright (c) 2015-2019 Fabien Potencier
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
 
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
 
13
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1
+ Copyright (c) 2017 PHP Framework Interoperability Group
2
 
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
 
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
 
13
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
vendor/psr/http-client/src/ClientExceptionInterface.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Http\Client;
4
+
5
+ /**
6
+ * Every HTTP client related exception MUST implement this interface.
7
+ */
8
+ interface ClientExceptionInterface extends \Throwable
9
+ {
10
+ }
vendor/psr/http-client/src/ClientInterface.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Http\Client;
4
+
5
+ use Psr\Http\Message\RequestInterface;
6
+ use Psr\Http\Message\ResponseInterface;
7
+
8
+ interface ClientInterface
9
+ {
10
+ /**
11
+ * Sends a PSR-7 request and returns a PSR-7 response.
12
+ *
13
+ * @param RequestInterface $request
14
+ *
15
+ * @return ResponseInterface
16
+ *
17
+ * @throws \Psr\Http\Client\ClientExceptionInterface If an error happens while processing the request.
18
+ */
19
+ public function sendRequest(RequestInterface $request): ResponseInterface;
20
+ }
vendor/psr/http-client/src/NetworkExceptionInterface.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Http\Client;
4
+
5
+ use Psr\Http\Message\RequestInterface;
6
+
7
+ /**
8
+ * Thrown when the request cannot be completed because of network issues.
9
+ *
10
+ * There is no response object as this exception is thrown when no response has been received.
11
+ *
12
+ * Example: the target host name can not be resolved or the connection failed.
13
+ */
14
+ interface NetworkExceptionInterface extends ClientExceptionInterface
15
+ {
16
+ /**
17
+ * Returns the request.
18
+ *
19
+ * The request object MAY be a different object from the one passed to ClientInterface::sendRequest()
20
+ *
21
+ * @return RequestInterface
22
+ */
23
+ public function getRequest(): RequestInterface;
24
+ }
vendor/psr/http-client/src/RequestExceptionInterface.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Http\Client;
4
+
5
+ use Psr\Http\Message\RequestInterface;
6
+
7
+ /**
8
+ * Exception for when a request failed.
9
+ *
10
+ * Examples:
11
+ * - Request is invalid (e.g. method is missing)
12
+ * - Runtime request errors (e.g. the body stream is not seekable)
13
+ */
14
+ interface RequestExceptionInterface extends ClientExceptionInterface
15
+ {
16
+ /**
17
+ * Returns the request.
18
+ *
19
+ * The request object MAY be a different object from the one passed to ClientInterface::sendRequest()
20
+ *
21
+ * @return RequestInterface
22
+ */
23
+ public function getRequest(): RequestInterface;
24
+ }
vendor/symfony/{polyfill-php72 → deprecation-contracts}/LICENSE RENAMED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015-2019 Fabien Potencier
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
1
+ Copyright (c) 2020-2022 Fabien Potencier
2
 
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
  of this software and associated documentation files (the "Software"), to deal
vendor/symfony/deprecation-contracts/function.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ if (!function_exists('trigger_deprecation')) {
13
+ /**
14
+ * Triggers a silenced deprecation notice.
15
+ *
16
+ * @param string $package The name of the Composer package that is triggering the deprecation
17
+ * @param string $version The version of the package that introduced the deprecation
18
+ * @param string $message The message of the deprecation
19
+ * @param mixed ...$args Values to insert in the message using printf() formatting
20
+ *
21
+ * @author Nicolas Grekas <p@tchwork.com>
22
+ */
23
+ function trigger_deprecation(string $package, string $version, string $message, ...$args): void
24
+ {
25
+ @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
26
+ }
27
+ }
vendor/symfony/polyfill-intl-idn/Idn.php DELETED
@@ -1,925 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Intl\Idn;
13
-
14
- use Exception;
15
- use Normalizer;
16
- use Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
17
- use Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
18
-
19
- /**
20
- * @see https://www.unicode.org/reports/tr46/
21
- *
22
- * @internal
23
- */
24
- final class Idn
25
- {
26
- public const ERROR_EMPTY_LABEL = 1;
27
- public const ERROR_LABEL_TOO_LONG = 2;
28
- public const ERROR_DOMAIN_NAME_TOO_LONG = 4;
29
- public const ERROR_LEADING_HYPHEN = 8;
30
- public const ERROR_TRAILING_HYPHEN = 0x10;
31
- public const ERROR_HYPHEN_3_4 = 0x20;
32
- public const ERROR_LEADING_COMBINING_MARK = 0x40;
33
- public const ERROR_DISALLOWED = 0x80;
34
- public const ERROR_PUNYCODE = 0x100;
35
- public const ERROR_LABEL_HAS_DOT = 0x200;
36
- public const ERROR_INVALID_ACE_LABEL = 0x400;
37
- public const ERROR_BIDI = 0x800;
38
- public const ERROR_CONTEXTJ = 0x1000;
39
- public const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
40
- public const ERROR_CONTEXTO_DIGITS = 0x4000;
41
-
42
- public const INTL_IDNA_VARIANT_2003 = 0;
43
- public const INTL_IDNA_VARIANT_UTS46 = 1;
44
-
45
- public const IDNA_DEFAULT = 0;
46
- public const IDNA_ALLOW_UNASSIGNED = 1;
47
- public const IDNA_USE_STD3_RULES = 2;
48
- public const IDNA_CHECK_BIDI = 4;
49
- public const IDNA_CHECK_CONTEXTJ = 8;
50
- public const IDNA_NONTRANSITIONAL_TO_ASCII = 16;
51
- public const IDNA_NONTRANSITIONAL_TO_UNICODE = 32;
52
-
53
- public const MAX_DOMAIN_SIZE = 253;
54
- public const MAX_LABEL_SIZE = 63;
55
-
56
- public const BASE = 36;
57
- public const TMIN = 1;
58
- public const TMAX = 26;
59
- public const SKEW = 38;
60
- public const DAMP = 700;
61
- public const INITIAL_BIAS = 72;
62
- public const INITIAL_N = 128;
63
- public const DELIMITER = '-';
64
- public const MAX_INT = 2147483647;
65
-
66
- /**
67
- * Contains the numeric value of a basic code point (for use in representing integers) in the
68
- * range 0 to BASE-1, or -1 if b is does not represent a value.
69
- *
70
- * @var array<int, int>
71
- */
72
- private static $basicToDigit = [
73
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
74
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
75
-
76
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
77
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1,
78
-
79
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
80
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
81
-
82
- -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
83
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
84
-
85
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
86
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
87
-
88
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
89
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
90
-
91
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
92
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
93
-
94
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
95
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
96
- ];
97
-
98
- /**
99
- * @var array<int, int>
100
- */
101
- private static $virama;
102
-
103
- /**
104
- * @var array<int, string>
105
- */
106
- private static $mapped;
107
-
108
- /**
109
- * @var array<int, bool>
110
- */
111
- private static $ignored;
112
-
113
- /**
114
- * @var array<int, string>
115
- */
116
- private static $deviation;
117
-
118
- /**
119
- * @var array<int, bool>
120
- */
121
- private static $disallowed;
122
-
123
- /**
124
- * @var array<int, string>
125
- */
126
- private static $disallowed_STD3_mapped;
127
-
128
- /**
129
- * @var array<int, bool>
130
- */
131
- private static $disallowed_STD3_valid;
132
-
133
- /**
134
- * @var bool
135
- */
136
- private static $mappingTableLoaded = false;
137
-
138
- /**
139
- * @see https://www.unicode.org/reports/tr46/#ToASCII
140
- *
141
- * @param string $domainName
142
- * @param int $options
143
- * @param int $variant
144
- * @param array $idna_info
145
- *
146
- * @return string|false
147
- */
148
- public static function idn_to_ascii($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
149
- {
150
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
151
- @trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
152
- }
153
-
154
- $options = [
155
- 'CheckHyphens' => true,
156
- 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
157
- 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
158
- 'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
159
- 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_ASCII),
160
- 'VerifyDnsLength' => true,
161
- ];
162
- $info = new Info();
163
- $labels = self::process((string) $domainName, $options, $info);
164
-
165
- foreach ($labels as $i => $label) {
166
- // Only convert labels to punycode that contain non-ASCII code points
167
- if (1 === preg_match('/[^\x00-\x7F]/', $label)) {
168
- try {
169
- $label = 'xn--'.self::punycodeEncode($label);
170
- } catch (Exception $e) {
171
- $info->errors |= self::ERROR_PUNYCODE;
172
- }
173
-
174
- $labels[$i] = $label;
175
- }
176
- }
177
-
178
- if ($options['VerifyDnsLength']) {
179
- self::validateDomainAndLabelLength($labels, $info);
180
- }
181
-
182
- $idna_info = [
183
- 'result' => implode('.', $labels),
184
- 'isTransitionalDifferent' => $info->transitionalDifferent,
185
- 'errors' => $info->errors,
186
- ];
187
-
188
- return 0 === $info->errors ? $idna_info['result'] : false;
189
- }
190
-
191
- /**
192
- * @see https://www.unicode.org/reports/tr46/#ToUnicode
193
- *
194
- * @param string $domainName
195
- * @param int $options
196
- * @param int $variant
197
- * @param array $idna_info
198
- *
199
- * @return string|false
200
- */
201
- public static function idn_to_utf8($domainName, $options = self::IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = [])
202
- {
203
- if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
204
- @trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
205
- }
206
-
207
- $info = new Info();
208
- $labels = self::process((string) $domainName, [
209
- 'CheckHyphens' => true,
210
- 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & self::IDNA_CHECK_BIDI),
211
- 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & self::IDNA_CHECK_CONTEXTJ),
212
- 'UseSTD3ASCIIRules' => 0 !== ($options & self::IDNA_USE_STD3_RULES),
213
- 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & self::IDNA_NONTRANSITIONAL_TO_UNICODE),
214
- ], $info);
215
- $idna_info = [
216
- 'result' => implode('.', $labels),
217
- 'isTransitionalDifferent' => $info->transitionalDifferent,
218
- 'errors' => $info->errors,
219
- ];
220
-
221
- return 0 === $info->errors ? $idna_info['result'] : false;
222
- }
223
-
224
- /**
225
- * @param string $label
226
- *
227
- * @return bool
228
- */
229
- private static function isValidContextJ(array $codePoints, $label)
230
- {
231
- if (!isset(self::$virama)) {
232
- self::$virama = require __DIR__.\DIRECTORY_SEPARATOR.'Resources'.\DIRECTORY_SEPARATOR.'unidata'.\DIRECTORY_SEPARATOR.'virama.php';
233
- }
234
-
235
- $offset = 0;
236
-
237
- foreach ($codePoints as $i => $codePoint) {
238
- if (0x200C !== $codePoint && 0x200D !== $codePoint) {
239
- continue;
240
- }
241
-
242
- if (!isset($codePoints[$i - 1])) {
243
- return false;
244
- }
245
-
246
- // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
247
- if (isset(self::$virama[$codePoints[$i - 1]])) {
248
- continue;
249
- }
250
-
251
- // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
252
- // True;
253
- // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
254
- if (0x200C === $codePoint && 1 === preg_match(Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) {
255
- $offset += \strlen($matches[1][0]);
256
-
257
- continue;
258
- }
259
-
260
- return false;
261
- }
262
-
263
- return true;
264
- }
265
-
266
- /**
267
- * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
268
- *
269
- * @param string $input
270
- * @param array<string, bool> $options
271
- *
272
- * @return string
273
- */
274
- private static function mapCodePoints($input, array $options, Info $info)
275
- {
276
- $str = '';
277
- $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
278
- $transitional = $options['Transitional_Processing'];
279
-
280
- foreach (self::utf8Decode($input) as $codePoint) {
281
- $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
282
-
283
- switch ($data['status']) {
284
- case 'disallowed':
285
- $info->errors |= self::ERROR_DISALLOWED;
286
-
287
- // no break.
288
-
289
- case 'valid':
290
- $str .= mb_chr($codePoint, 'utf-8');
291
-
292
- break;
293
-
294
- case 'ignored':
295
- // Do nothing.
296
- break;
297
-
298
- case 'mapped':
299
- $str .= $data['mapping'];
300
-
301
- break;
302
-
303
- case 'deviation':
304
- $info->transitionalDifferent = true;
305
- $str .= ($transitional ? $data['mapping'] : mb_chr($codePoint, 'utf-8'));
306
-
307
- break;
308
- }
309
- }
310
-
311
- return $str;
312
- }
313
-
314
- /**
315
- * @see https://www.unicode.org/reports/tr46/#Processing
316
- *
317
- * @param string $domain
318
- * @param array<string, bool> $options
319
- *
320
- * @return array<int, string>
321
- */
322
- private static function process($domain, array $options, Info $info)
323
- {
324
- // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
325
- // we need to respect the VerifyDnsLength option.
326
- $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
327
-
328
- if ($checkForEmptyLabels && '' === $domain) {
329
- $info->errors |= self::ERROR_EMPTY_LABEL;
330
-
331
- return [$domain];
332
- }
333
-
334
- // Step 1. Map each code point in the domain name string
335
- $domain = self::mapCodePoints($domain, $options, $info);
336
-
337
- // Step 2. Normalize the domain name string to Unicode Normalization Form C.
338
- if (!Normalizer::isNormalized($domain, Normalizer::FORM_C)) {
339
- $domain = Normalizer::normalize($domain, Normalizer::FORM_C);
340
- }
341
-
342
- // Step 3. Break the string into labels at U+002E (.) FULL STOP.
343
- $labels = explode('.', $domain);
344
- $lastLabelIndex = \count($labels) - 1;
345
-
346
- // Step 4. Convert and validate each label in the domain name string.
347
- foreach ($labels as $i => $label) {
348
- $validationOptions = $options;
349
-
350
- if ('xn--' === substr($label, 0, 4)) {
351
- try {
352
- $label = self::punycodeDecode(substr($label, 4));
353
- } catch (Exception $e) {
354
- $info->errors |= self::ERROR_PUNYCODE;
355
-
356
- continue;
357
- }
358
-
359
- $validationOptions['Transitional_Processing'] = false;
360
- $labels[$i] = $label;
361
- }
362
-
363
- self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
364
- }
365
-
366
- if ($info->bidiDomain && !$info->validBidiDomain) {
367
- $info->errors |= self::ERROR_BIDI;
368
- }
369
-
370
- // Any input domain name string that does not record an error has been successfully
371
- // processed according to this specification. Conversely, if an input domain_name string
372
- // causes an error, then the processing of the input domain_name string fails. Determining
373
- // what to do with error input is up to the caller, and not in the scope of this document.
374
- return $labels;
375
- }
376
-
377
- /**
378
- * @see https://tools.ietf.org/html/rfc5893#section-2
379
- *
380
- * @param string $label
381
- */
382
- private static function validateBidiLabel($label, Info $info)
383
- {
384
- if (1 === preg_match(Regex::RTL_LABEL, $label)) {
385
- $info->bidiDomain = true;
386
-
387
- // Step 1. The first character must be a character with Bidi property L, R, or AL.
388
- // If it has the R or AL property, it is an RTL label
389
- if (1 !== preg_match(Regex::BIDI_STEP_1_RTL, $label)) {
390
- $info->validBidiDomain = false;
391
-
392
- return;
393
- }
394
-
395
- // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
396
- // CS, ET, ON, BN, or NSM are allowed.
397
- if (1 === preg_match(Regex::BIDI_STEP_2, $label)) {
398
- $info->validBidiDomain = false;
399
-
400
- return;
401
- }
402
-
403
- // Step 3. In an RTL label, the end of the label must be a character with Bidi property
404
- // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
405
- if (1 !== preg_match(Regex::BIDI_STEP_3, $label)) {
406
- $info->validBidiDomain = false;
407
-
408
- return;
409
- }
410
-
411
- // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
412
- if (1 === preg_match(Regex::BIDI_STEP_4_AN, $label) && 1 === preg_match(Regex::BIDI_STEP_4_EN, $label)) {
413
- $info->validBidiDomain = false;
414
-
415
- return;
416
- }
417
-
418
- return;
419
- }
420
-
421
- // We are a LTR label
422
- // Step 1. The first character must be a character with Bidi property L, R, or AL.
423
- // If it has the L property, it is an LTR label.
424
- if (1 !== preg_match(Regex::BIDI_STEP_1_LTR, $label)) {
425
- $info->validBidiDomain = false;
426
-
427
- return;
428
- }
429
-
430
- // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
431
- // ES, CS, ET, ON, BN, or NSM are allowed.
432
- if (1 === preg_match(Regex::BIDI_STEP_5, $label)) {
433
- $info->validBidiDomain = false;
434
-
435
- return;
436
- }
437
-
438
- // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
439
- // EN, followed by zero or more characters with Bidi property NSM.
440
- if (1 !== preg_match(Regex::BIDI_STEP_6, $label)) {
441
- $info->validBidiDomain = false;
442
-
443
- return;
444
- }
445
- }
446
-
447
- /**
448
- * @param array<int, string> $labels
449
- */
450
- private static function validateDomainAndLabelLength(array $labels, Info $info)
451
- {
452
- $maxDomainSize = self::MAX_DOMAIN_SIZE;
453
- $length = \count($labels);
454
-
455
- // Number of "." delimiters.
456
- $domainLength = $length - 1;
457
-
458
- // If the last label is empty and it is not the first label, then it is the root label.
459
- // Increase the max size by 1, making it 254, to account for the root label's "."
460
- // delimiter. This also means we don't need to check the last label's length for being too
461
- // long.
462
- if ($length > 1 && '' === $labels[$length - 1]) {
463
- ++$maxDomainSize;
464
- --$length;
465
- }
466
-
467
- for ($i = 0; $i < $length; ++$i) {
468
- $bytes = \strlen($labels[$i]);
469
- $domainLength += $bytes;
470
-
471
- if ($bytes > self::MAX_LABEL_SIZE) {
472
- $info->errors |= self::ERROR_LABEL_TOO_LONG;
473
- }
474
- }
475
-
476
- if ($domainLength > $maxDomainSize) {
477
- $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
478
- }
479
- }
480
-
481
- /**
482
- * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
483
- *
484
- * @param string $label
485
- * @param array<string, bool> $options
486
- * @param bool $canBeEmpty
487
- */
488
- private static function validateLabel($label, Info $info, array $options, $canBeEmpty)
489
- {
490
- if ('' === $label) {
491
- if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
492
- $info->errors |= self::ERROR_EMPTY_LABEL;
493
- }
494
-
495
- return;
496
- }
497
-
498
- // Step 1. The label must be in Unicode Normalization Form C.
499
- if (!Normalizer::isNormalized($label, Normalizer::FORM_C)) {
500
- $info->errors |= self::ERROR_INVALID_ACE_LABEL;
501
- }
502
-
503
- $codePoints = self::utf8Decode($label);
504
-
505
- if ($options['CheckHyphens']) {
506
- // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
507
- // in both the thrid and fourth positions.
508
- if (isset($codePoints[2], $codePoints[3]) && 0x002D === $codePoints[2] && 0x002D === $codePoints[3]) {
509
- $info->errors |= self::ERROR_HYPHEN_3_4;
510
- }
511
-
512
- // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
513
- // HYPHEN-MINUS character.
514
- if ('-' === substr($label, 0, 1)) {
515
- $info->errors |= self::ERROR_LEADING_HYPHEN;
516
- }
517
-
518
- if ('-' === substr($label, -1, 1)) {
519
- $info->errors |= self::ERROR_TRAILING_HYPHEN;
520
- }
521
- }
522
-
523
- // Step 4. The label must not contain a U+002E (.) FULL STOP.
524
- if (false !== strpos($label, '.')) {
525
- $info->errors |= self::ERROR_LABEL_HAS_DOT;
526
- }
527
-
528
- // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
529
- if (1 === preg_match(Regex::COMBINING_MARK, $label)) {
530
- $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
531
- }
532
-
533
- // Step 6. Each code point in the label must only have certain status values according to
534
- // Section 5, IDNA Mapping Table:
535
- $transitional = $options['Transitional_Processing'];
536
- $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
537
-
538
- foreach ($codePoints as $codePoint) {
539
- $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
540
- $status = $data['status'];
541
-
542
- if ('valid' === $status || (!$transitional && 'deviation' === $status)) {
543
- continue;
544
- }
545
-
546
- $info->errors |= self::ERROR_DISALLOWED;
547
-
548
- break;
549
- }
550
-
551
- // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
552
- // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
553
- // [IDNA2008].
554
- if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
555
- $info->errors |= self::ERROR_CONTEXTJ;
556
- }
557
-
558
- // Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must
559
- // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
560
- if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
561
- self::validateBidiLabel($label, $info);
562
- }
563
- }
564
-
565
- /**
566
- * @see https://tools.ietf.org/html/rfc3492#section-6.2
567
- *
568
- * @param string $input
569
- *
570
- * @return string
571
- */
572
- private static function punycodeDecode($input)
573
- {
574
- $n = self::INITIAL_N;
575
- $out = 0;
576
- $i = 0;
577
- $bias = self::INITIAL_BIAS;
578
- $lastDelimIndex = strrpos($input, self::DELIMITER);
579
- $b = false === $lastDelimIndex ? 0 : $lastDelimIndex;
580
- $inputLength = \strlen($input);
581
- $output = [];
582
- $bytes = array_map('ord', str_split($input));
583
-
584
- for ($j = 0; $j < $b; ++$j) {
585
- if ($bytes[$j] > 0x7F) {
586
- throw new Exception('Invalid input');
587
- }
588
-
589
- $output[$out++] = $input[$j];
590
- }
591
-
592
- if ($b > 0) {
593
- ++$b;
594
- }
595
-
596
- for ($in = $b; $in < $inputLength; ++$out) {
597
- $oldi = $i;
598
- $w = 1;
599
-
600
- for ($k = self::BASE; /* no condition */; $k += self::BASE) {
601
- if ($in >= $inputLength) {
602
- throw new Exception('Invalid input');
603
- }
604
-
605
- $digit = self::$basicToDigit[$bytes[$in++] & 0xFF];
606
-
607
- if ($digit < 0) {
608
- throw new Exception('Invalid input');
609
- }
610
-
611
- if ($digit > intdiv(self::MAX_INT - $i, $w)) {
612
- throw new Exception('Integer overflow');
613
- }
614
-
615
- $i += $digit * $w;
616
-
617
- if ($k <= $bias) {
618
- $t = self::TMIN;
619
- } elseif ($k >= $bias + self::TMAX) {
620
- $t = self::TMAX;
621
- } else {
622
- $t = $k - $bias;
623
- }
624
-
625
- if ($digit < $t) {
626
- break;
627
- }
628
-
629
- $baseMinusT = self::BASE - $t;
630
-
631
- if ($w > intdiv(self::MAX_INT, $baseMinusT)) {
632
- throw new Exception('Integer overflow');
633
- }
634
-
635
- $w *= $baseMinusT;
636
- }
637
-
638
- $outPlusOne = $out + 1;
639
- $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
640
-
641
- if (intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
642
- throw new Exception('Integer overflow');
643
- }
644
-
645
- $n += intdiv($i, $outPlusOne);
646
- $i %= $outPlusOne;
647
- array_splice($output, $i++, 0, [mb_chr($n, 'utf-8')]);
648
- }
649
-
650
- return implode('', $output);
651
- }
652
-
653
- /**
654
- * @see https://tools.ietf.org/html/rfc3492#section-6.3
655
- *
656
- * @param string $input
657
- *
658
- * @return string
659
- */
660
- private static function punycodeEncode($input)
661
- {
662
- $n = self::INITIAL_N;
663
- $delta = 0;
664
- $out = 0;
665
- $bias = self::INITIAL_BIAS;
666
- $inputLength = 0;
667
- $output = '';
668
- $iter = self::utf8Decode($input);
669
-
670
- foreach ($iter as $codePoint) {
671
- ++$inputLength;
672
-
673
- if ($codePoint < 0x80) {
674
- $output .= \chr($codePoint);
675
- ++$out;
676
- }
677
- }
678
-
679
- $h = $out;
680
- $b = $out;
681
-
682
- if ($b > 0) {
683
- $output .= self::DELIMITER;
684
- ++$out;
685
- }
686
-
687
- while ($h < $inputLength) {
688
- $m = self::MAX_INT;
689
-
690
- foreach ($iter as $codePoint) {
691
- if ($codePoint >= $n && $codePoint < $m) {
692
- $m = $codePoint;
693
- }
694
- }
695
-
696
- if ($m - $n > intdiv(self::MAX_INT - $delta, $h + 1)) {
697
- throw new Exception('Integer overflow');
698
- }
699
-
700
- $delta += ($m - $n) * ($h + 1);
701
- $n = $m;
702
-
703
- foreach ($iter as $codePoint) {
704
- if ($codePoint < $n && 0 === ++$delta) {
705
- throw new Exception('Integer overflow');
706
- }
707
-
708
- if ($codePoint === $n) {
709
- $q = $delta;
710
-
711
- for ($k = self::BASE; /* no condition */; $k += self::BASE) {
712
- if ($k <= $bias) {
713
- $t = self::TMIN;
714
- } elseif ($k >= $bias + self::TMAX) {
715
- $t = self::TMAX;
716
- } else {
717
- $t = $k - $bias;
718
- }
719
-
720
- if ($q < $t) {
721
- break;
722
- }
723
-
724
- $qMinusT = $q - $t;
725
- $baseMinusT = self::BASE - $t;
726
- $output .= self::encodeDigit($t + ($qMinusT) % ($baseMinusT), false);
727
- ++$out;
728
- $q = intdiv($qMinusT, $baseMinusT);
729
- }
730
-
731
- $output .= self::encodeDigit($q, false);
732
- ++$out;
733
- $bias = self::adaptBias($delta, $h + 1, $h === $b);
734
- $delta = 0;
735
- ++$h;
736
- }
737
- }
738
-
739
- ++$delta;
740
- ++$n;
741
- }
742
-
743
- return $output;
744
- }
745
-
746
- /**
747
- * @see https://tools.ietf.org/html/rfc3492#section-6.1
748
- *
749
- * @param int $delta
750
- * @param int $numPoints
751
- * @param bool $firstTime
752
- *
753
- * @return int
754
- */
755
- private static function adaptBias($delta, $numPoints, $firstTime)
756
- {
757
- // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
758
- $delta = $firstTime ? intdiv($delta, self::DAMP) : $delta >> 1;
759
- $delta += intdiv($delta, $numPoints);
760
- $k = 0;
761
-
762
- while ($delta > ((self::BASE - self::TMIN) * self::TMAX) >> 1) {
763
- $delta = intdiv($delta, self::BASE - self::TMIN);
764
- $k += self::BASE;
765
- }
766
-
767
- return $k + intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
768
- }
769
-
770
- /**
771
- * @param int $d
772
- * @param bool $flag
773
- *
774
- * @return string
775
- */
776
- private static function encodeDigit($d, $flag)
777
- {
778
- return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
779
- }
780
-
781
- /**
782
- * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
783
- * invalid byte sequences will be replaced by a U+FFFD replacement code point.
784
- *
785
- * @see https://encoding.spec.whatwg.org/#utf-8-decoder
786
- *
787
- * @param string $input
788
- *
789
- * @return array<int, int>
790
- */
791
- private static function utf8Decode($input)
792
- {
793
- $bytesSeen = 0;
794
- $bytesNeeded = 0;
795
- $lowerBoundary = 0x80;
796
- $upperBoundary = 0xBF;
797
- $codePoint = 0;
798
- $codePoints = [];
799
- $length = \strlen($input);
800
-
801
- for ($i = 0; $i < $length; ++$i) {
802
- $byte = \ord($input[$i]);
803
-
804
- if (0 === $bytesNeeded) {
805
- if ($byte >= 0x00 && $byte <= 0x7F) {
806
- $codePoints[] = $byte;
807
-
808
- continue;
809
- }
810
-
811
- if ($byte >= 0xC2 && $byte <= 0xDF) {
812
- $bytesNeeded = 1;
813
- $codePoint = $byte & 0x1F;
814
- } elseif ($byte >= 0xE0 && $byte <= 0xEF) {
815
- if (0xE0 === $byte) {
816
- $lowerBoundary = 0xA0;
817
- } elseif (0xED === $byte) {
818
- $upperBoundary = 0x9F;
819
- }
820
-
821
- $bytesNeeded = 2;
822
- $codePoint = $byte & 0xF;
823
- } elseif ($byte >= 0xF0 && $byte <= 0xF4) {
824
- if (0xF0 === $byte) {
825
- $lowerBoundary = 0x90;
826
- } elseif (0xF4 === $byte) {
827
- $upperBoundary = 0x8F;
828
- }
829
-
830
- $bytesNeeded = 3;
831
- $codePoint = $byte & 0x7;
832
- } else {
833
- $codePoints[] = 0xFFFD;
834
- }
835
-
836
- continue;
837
- }
838
-
839
- if ($byte < $lowerBoundary || $byte > $upperBoundary) {
840
- $codePoint = 0;
841
- $bytesNeeded = 0;
842
- $bytesSeen = 0;
843
- $lowerBoundary = 0x80;
844
- $upperBoundary = 0xBF;
845
- --$i;
846
- $codePoints[] = 0xFFFD;
847
-
848
- continue;
849
- }
850
-
851
- $lowerBoundary = 0x80;
852
- $upperBoundary = 0xBF;
853
- $codePoint = ($codePoint << 6) | ($byte & 0x3F);
854
-
855
- if (++$bytesSeen !== $bytesNeeded) {
856
- continue;
857
- }
858
-
859
- $codePoints[] = $codePoint;
860
- $codePoint = 0;
861
- $bytesNeeded = 0;
862
- $bytesSeen = 0;
863
- }
864
-
865
- // String unexpectedly ended, so append a U+FFFD code point.
866
- if (0 !== $bytesNeeded) {
867
- $codePoints[] = 0xFFFD;
868
- }
869
-
870
- return $codePoints;
871
- }
872
-
873
- /**
874
- * @param int $codePoint
875
- * @param bool $useSTD3ASCIIRules
876
- *
877
- * @return array{status: string, mapping?: string}
878
- */
879
- private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
880
- {
881
- if (!self::$mappingTableLoaded) {
882
- self::$mappingTableLoaded = true;
883
- self::$mapped = require __DIR__.'/Resources/unidata/mapped.php';
884
- self::$ignored = require __DIR__.'/Resources/unidata/ignored.php';
885
- self::$deviation = require __DIR__.'/Resources/unidata/deviation.php';
886
- self::$disallowed = require __DIR__.'/Resources/unidata/disallowed.php';
887
- self::$disallowed_STD3_mapped = require __DIR__.'/Resources/unidata/disallowed_STD3_mapped.php';
888
- self::$disallowed_STD3_valid = require __DIR__.'/Resources/unidata/disallowed_STD3_valid.php';
889
- }
890
-
891
- if (isset(self::$mapped[$codePoint])) {
892
- return ['status' => 'mapped', 'mapping' => self::$mapped[$codePoint]];
893
- }
894
-
895
- if (isset(self::$ignored[$codePoint])) {
896
- return ['status' => 'ignored'];
897
- }
898
-
899
- if (isset(self::$deviation[$codePoint])) {
900
- return ['status' => 'deviation', 'mapping' => self::$deviation[$codePoint]];
901
- }
902
-
903
- if (isset(self::$disallowed[$codePoint]) || DisallowedRanges::inRange($codePoint)) {
904
- return ['status' => 'disallowed'];
905
- }
906
-
907
- $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
908
-
909
- if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
910
- $status = 'disallowed';
911
-
912
- if (!$useSTD3ASCIIRules) {
913
- $status = $isDisallowedMapped ? 'mapped' : 'valid';
914
- }
915
-
916
- if ($isDisallowedMapped) {
917
- return ['status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]];
918
- }
919
-
920
- return ['status' => $status];
921
- }
922
-
923
- return ['status' => 'valid'];
924
- }
925
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Info.php DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Intl\Idn;
13
-
14
- /**
15
- * @internal
16
- */
17
- class Info
18
- {
19
- public $bidiDomain = false;
20
- public $errors = 0;
21
- public $validBidiDomain = true;
22
- public $transitionalDifferent = false;
23
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/LICENSE DELETED
@@ -1,19 +0,0 @@
1
- Copyright (c) 2018-2019 Fabien Potencier and Trevor Rowbotham <trevor.rowbotham@pm.me>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining a copy
4
- of this software and associated documentation files (the "Software"), to deal
5
- in the Software without restriction, including without limitation the rights
6
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- copies of the Software, and to permit persons to whom the Software is furnished
8
- to do so, subject to the following conditions:
9
-
10
- The above copyright notice and this permission notice shall be included in all
11
- copies or substantial portions of the Software.
12
-
13
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- THE SOFTWARE.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/DisallowedRanges.php DELETED
@@ -1,375 +0,0 @@
1
- <?php
2
-
3
- namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
4
-
5
- /**
6
- * @internal
7
- */
8
- final class DisallowedRanges
9
- {
10
- /**
11
- * @param int $codePoint
12
- *
13
- * @return bool
14
- */
15
- public static function inRange($codePoint)
16
- {
17
- if ($codePoint >= 128 && $codePoint <= 159) {
18
- return true;
19
- }
20
-
21
- if ($codePoint >= 2155 && $codePoint <= 2207) {
22
- return true;
23
- }
24
-
25
- if ($codePoint >= 3676 && $codePoint <= 3712) {
26
- return true;
27
- }
28
-
29
- if ($codePoint >= 3808 && $codePoint <= 3839) {
30
- return true;
31
- }
32
-
33
- if ($codePoint >= 4059 && $codePoint <= 4095) {
34
- return true;
35
- }
36
-
37
- if ($codePoint >= 4256 && $codePoint <= 4293) {
38
- return true;
39
- }
40
-
41
- if ($codePoint >= 6849 && $codePoint <= 6911) {
42
- return true;
43
- }
44
-
45
- if ($codePoint >= 11859 && $codePoint <= 11903) {
46
- return true;
47
- }
48
-
49
- if ($codePoint >= 42955 && $codePoint <= 42996) {
50
- return true;
51
- }
52
-
53
- if ($codePoint >= 55296 && $codePoint <= 57343) {
54
- return true;
55
- }
56
-
57
- if ($codePoint >= 57344 && $codePoint <= 63743) {
58
- return true;
59
- }
60
-
61
- if ($codePoint >= 64218 && $codePoint <= 64255) {
62
- return true;
63
- }
64
-
65
- if ($codePoint >= 64976 && $codePoint <= 65007) {
66
- return true;
67
- }
68
-
69
- if ($codePoint >= 65630 && $codePoint <= 65663) {
70
- return true;
71
- }
72
-
73
- if ($codePoint >= 65953 && $codePoint <= 65999) {
74
- return true;
75
- }
76
-
77
- if ($codePoint >= 66046 && $codePoint <= 66175) {
78
- return true;
79
- }
80
-
81
- if ($codePoint >= 66518 && $codePoint <= 66559) {
82
- return true;
83
- }
84
-
85
- if ($codePoint >= 66928 && $codePoint <= 67071) {
86
- return true;
87
- }
88
-
89
- if ($codePoint >= 67432 && $codePoint <= 67583) {
90
- return true;
91
- }
92
-
93
- if ($codePoint >= 67760 && $codePoint <= 67807) {
94
- return true;
95
- }
96
-
97
- if ($codePoint >= 67904 && $codePoint <= 67967) {
98
- return true;
99
- }
100
-
101
- if ($codePoint >= 68256 && $codePoint <= 68287) {
102
- return true;
103
- }
104
-
105
- if ($codePoint >= 68528 && $codePoint <= 68607) {
106
- return true;
107
- }
108
-
109
- if ($codePoint >= 68681 && $codePoint <= 68735) {
110
- return true;
111
- }
112
-
113
- if ($codePoint >= 68922 && $codePoint <= 69215) {
114
- return true;
115
- }
116
-
117
- if ($codePoint >= 69298 && $codePoint <= 69375) {
118
- return true;
119
- }
120
-
121
- if ($codePoint >= 69466 && $codePoint <= 69551) {
122
- return true;
123
- }
124
-
125
- if ($codePoint >= 70207 && $codePoint <= 70271) {
126
- return true;
127
- }
128
-
129
- if ($codePoint >= 70517 && $codePoint <= 70655) {
130
- return true;
131
- }
132
-
133
- if ($codePoint >= 70874 && $codePoint <= 71039) {
134
- return true;
135
- }
136
-
137
- if ($codePoint >= 71134 && $codePoint <= 71167) {
138
- return true;
139
- }
140
-
141
- if ($codePoint >= 71370 && $codePoint <= 71423) {
142
- return true;
143
- }
144
-
145
- if ($codePoint >= 71488 && $codePoint <= 71679) {
146
- return true;
147
- }
148
-
149
- if ($codePoint >= 71740 && $codePoint <= 71839) {
150
- return true;
151
- }
152
-
153
- if ($codePoint >= 72026 && $codePoint <= 72095) {
154
- return true;
155
- }
156
-
157
- if ($codePoint >= 72441 && $codePoint <= 72703) {
158
- return true;
159
- }
160
-
161
- if ($codePoint >= 72887 && $codePoint <= 72959) {
162
- return true;
163
- }
164
-
165
- if ($codePoint >= 73130 && $codePoint <= 73439) {
166
- return true;
167
- }
168
-
169
- if ($codePoint >= 73465 && $codePoint <= 73647) {
170
- return true;
171
- }
172
-
173
- if ($codePoint >= 74650 && $codePoint <= 74751) {
174
- return true;
175
- }
176
-
177
- if ($codePoint >= 75076 && $codePoint <= 77823) {
178
- return true;
179
- }
180
-
181
- if ($codePoint >= 78905 && $codePoint <= 82943) {
182
- return true;
183
- }
184
-
185
- if ($codePoint >= 83527 && $codePoint <= 92159) {
186
- return true;
187
- }
188
-
189
- if ($codePoint >= 92784 && $codePoint <= 92879) {
190
- return true;
191
- }
192
-
193
- if ($codePoint >= 93072 && $codePoint <= 93759) {
194
- return true;
195
- }
196
-
197
- if ($codePoint >= 93851 && $codePoint <= 93951) {
198
- return true;
199
- }
200
-
201
- if ($codePoint >= 94112 && $codePoint <= 94175) {
202
- return true;
203
- }
204
-
205
- if ($codePoint >= 101590 && $codePoint <= 101631) {
206
- return true;
207
- }
208
-
209
- if ($codePoint >= 101641 && $codePoint <= 110591) {
210
- return true;
211
- }
212
-
213
- if ($codePoint >= 110879 && $codePoint <= 110927) {
214
- return true;
215
- }
216
-
217
- if ($codePoint >= 111356 && $codePoint <= 113663) {
218
- return true;
219
- }
220
-
221
- if ($codePoint >= 113828 && $codePoint <= 118783) {
222
- return true;
223
- }
224
-
225
- if ($codePoint >= 119366 && $codePoint <= 119519) {
226
- return true;
227
- }
228
-
229
- if ($codePoint >= 119673 && $codePoint <= 119807) {
230
- return true;
231
- }
232
-
233
- if ($codePoint >= 121520 && $codePoint <= 122879) {
234
- return true;
235
- }
236
-
237
- if ($codePoint >= 122923 && $codePoint <= 123135) {
238
- return true;
239
- }
240
-
241
- if ($codePoint >= 123216 && $codePoint <= 123583) {
242
- return true;
243
- }
244
-
245
- if ($codePoint >= 123648 && $codePoint <= 124927) {
246
- return true;
247
- }
248
-
249
- if ($codePoint >= 125143 && $codePoint <= 125183) {
250
- return true;
251
- }
252
-
253
- if ($codePoint >= 125280 && $codePoint <= 126064) {
254
- return true;
255
- }
256
-
257
- if ($codePoint >= 126133 && $codePoint <= 126208) {
258
- return true;
259
- }
260
-
261
- if ($codePoint >= 126270 && $codePoint <= 126463) {
262
- return true;
263
- }
264
-
265
- if ($codePoint >= 126652 && $codePoint <= 126703) {
266
- return true;
267
- }
268
-
269
- if ($codePoint >= 126706 && $codePoint <= 126975) {
270
- return true;
271
- }
272
-
273
- if ($codePoint >= 127406 && $codePoint <= 127461) {
274
- return true;
275
- }
276
-
277
- if ($codePoint >= 127590 && $codePoint <= 127743) {
278
- return true;
279
- }
280
-
281
- if ($codePoint >= 129202 && $codePoint <= 129279) {
282
- return true;
283
- }
284
-
285
- if ($codePoint >= 129751 && $codePoint <= 129791) {
286
- return true;
287
- }
288
-
289
- if ($codePoint >= 129995 && $codePoint <= 130031) {
290
- return true;
291
- }
292
-
293
- if ($codePoint >= 130042 && $codePoint <= 131069) {
294
- return true;
295
- }
296
-
297
- if ($codePoint >= 173790 && $codePoint <= 173823) {
298
- return true;
299
- }
300
-
301
- if ($codePoint >= 191457 && $codePoint <= 194559) {
302
- return true;
303
- }
304
-
305
- if ($codePoint >= 195102 && $codePoint <= 196605) {
306
- return true;
307
- }
308
-
309
- if ($codePoint >= 201547 && $codePoint <= 262141) {
310
- return true;
311
- }
312
-
313
- if ($codePoint >= 262144 && $codePoint <= 327677) {
314
- return true;
315
- }
316
-
317
- if ($codePoint >= 327680 && $codePoint <= 393213) {
318
- return true;
319
- }
320
-
321
- if ($codePoint >= 393216 && $codePoint <= 458749) {
322
- return true;
323
- }
324
-
325
- if ($codePoint >= 458752 && $codePoint <= 524285) {
326
- return true;
327
- }
328
-
329
- if ($codePoint >= 524288 && $codePoint <= 589821) {
330
- return true;
331
- }
332
-
333
- if ($codePoint >= 589824 && $codePoint <= 655357) {
334
- return true;
335
- }
336
-
337
- if ($codePoint >= 655360 && $codePoint <= 720893) {
338
- return true;
339
- }
340
-
341
- if ($codePoint >= 720896 && $codePoint <= 786429) {
342
- return true;
343
- }
344
-
345
- if ($codePoint >= 786432 && $codePoint <= 851965) {
346
- return true;
347
- }
348
-
349
- if ($codePoint >= 851968 && $codePoint <= 917501) {
350
- return true;
351
- }
352
-
353
- if ($codePoint >= 917536 && $codePoint <= 917631) {
354
- return true;
355
- }
356
-
357
- if ($codePoint >= 917632 && $codePoint <= 917759) {
358
- return true;
359
- }
360
-
361
- if ($codePoint >= 918000 && $codePoint <= 983037) {
362
- return true;
363
- }
364
-
365
- if ($codePoint >= 983040 && $codePoint <= 1048573) {
366
- return true;
367
- }
368
-
369
- if ($codePoint >= 1048576 && $codePoint <= 1114109) {
370
- return true;
371
- }
372
-
373
- return false;
374
- }
375
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/Regex.php DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
-
3
- namespace Symfony\Polyfill\Intl\Idn\Resources\unidata;
4
-
5
- /**
6
- * @internal
7
- */
8
- final class Regex
9
- {
10
- const COMBINING_MARK = '/^[\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{0903}\x{093A}\x{093B}\x{093C}\x{093E}-\x{0940}\x{0941}-\x{0948}\x{0949}-\x{094C}\x{094D}\x{094E}-\x{094F}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{0982}-\x{0983}\x{09BC}\x{09BE}-\x{09C0}\x{09C1}-\x{09C4}\x{09C7}-\x{09C8}\x{09CB}-\x{09CC}\x{09CD}\x{09D7}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A03}\x{0A3C}\x{0A3E}-\x{0A40}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0A83}\x{0ABC}\x{0ABE}-\x{0AC0}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0AC9}\x{0ACB}-\x{0ACC}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B02}-\x{0B03}\x{0B3C}\x{0B3E}\x{0B3F}\x{0B40}\x{0B41}-\x{0B44}\x{0B47}-\x{0B48}\x{0B4B}-\x{0B4C}\x{0B4D}\x{0B55}-\x{0B56}\x{0B57}\x{0B62}-\x{0B63}\x{0B82}\x{0BBE}-\x{0BBF}\x{0BC0}\x{0BC1}-\x{0BC2}\x{0BC6}-\x{0BC8}\x{0BCA}-\x{0BCC}\x{0BCD}\x{0BD7}\x{0C00}\x{0C01}-\x{0C03}\x{0C04}\x{0C3E}-\x{0C40}\x{0C41}-\x{0C44}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0C82}-\x{0C83}\x{0CBC}\x{0CBE}\x{0CBF}\x{0CC0}-\x{0CC4}\x{0CC6}\x{0CC7}-\x{0CC8}\x{0CCA}-\x{0CCB}\x{0CCC}-\x{0CCD}\x{0CD5}-\x{0CD6}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D02}-\x{0D03}\x{0D3B}-\x{0D3C}\x{0D3E}-\x{0D40}\x{0D41}-\x{0D44}\x{0D46}-\x{0D48}\x{0D4A}-\x{0D4C}\x{0D4D}\x{0D57}\x{0D62}-\x{0D63}\x{0D81}\x{0D82}-\x{0D83}\x{0DCA}\x{0DCF}-\x{0DD1}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0DD8}-\x{0DDF}\x{0DF2}-\x{0DF3}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3E}-\x{0F3F}\x{0F71}-\x{0F7E}\x{0F7F}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102B}-\x{102C}\x{102D}-\x{1030}\x{1031}\x{1032}-\x{1037}\x{1038}\x{1039}-\x{103A}\x{103B}-\x{103C}\x{103D}-\x{103E}\x{1056}-\x{1057}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1062}-\x{1064}\x{1067}-\x{106D}\x{1071}-\x{1074}\x{1082}\x{1083}-\x{1084}\x{1085}-\x{1086}\x{1087}-\x{108C}\x{108D}\x{108F}\x{109A}-\x{109C}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B6}\x{17B7}-\x{17BD}\x{17BE}-\x{17C5}\x{17C6}\x{17C7}-\x{17C8}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1923}-\x{1926}\x{1927}-\x{1928}\x{1929}-\x{192B}\x{1930}-\x{1931}\x{1932}\x{1933}-\x{1938}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A19}-\x{1A1A}\x{1A1B}\x{1A55}\x{1A56}\x{1A57}\x{1A58}-\x{1A5E}\x{1A60}\x{1A61}\x{1A62}\x{1A63}-\x{1A64}\x{1A65}-\x{1A6C}\x{1A6D}-\x{1A72}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B04}\x{1B34}\x{1B35}\x{1B36}-\x{1B3A}\x{1B3B}\x{1B3C}\x{1B3D}-\x{1B41}\x{1B42}\x{1B43}-\x{1B44}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1B82}\x{1BA1}\x{1BA2}-\x{1BA5}\x{1BA6}-\x{1BA7}\x{1BA8}-\x{1BA9}\x{1BAA}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE7}\x{1BE8}-\x{1BE9}\x{1BEA}-\x{1BEC}\x{1BED}\x{1BEE}\x{1BEF}-\x{1BF1}\x{1BF2}-\x{1BF3}\x{1C24}-\x{1C2B}\x{1C2C}-\x{1C33}\x{1C34}-\x{1C35}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE1}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF7}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{302E}-\x{302F}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A823}-\x{A824}\x{A825}-\x{A826}\x{A827}\x{A82C}\x{A880}-\x{A881}\x{A8B4}-\x{A8C3}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A952}-\x{A953}\x{A980}-\x{A982}\x{A983}\x{A9B3}\x{A9B4}-\x{A9B5}\x{A9B6}-\x{A9B9}\x{A9BA}-\x{A9BB}\x{A9BC}-\x{A9BD}\x{A9BE}-\x{A9C0}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA2F}-\x{AA30}\x{AA31}-\x{AA32}\x{AA33}-\x{AA34}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA4D}\x{AA7B}\x{AA7C}\x{AA7D}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEB}\x{AAEC}-\x{AAED}\x{AAEE}-\x{AAEF}\x{AAF5}\x{AAF6}\x{ABE3}-\x{ABE4}\x{ABE5}\x{ABE6}-\x{ABE7}\x{ABE8}\x{ABE9}-\x{ABEA}\x{ABEC}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11000}\x{11001}\x{11002}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{11082}\x{110B0}-\x{110B2}\x{110B3}-\x{110B6}\x{110B7}-\x{110B8}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112C}\x{1112D}-\x{11134}\x{11145}-\x{11146}\x{11173}\x{11180}-\x{11181}\x{11182}\x{111B3}-\x{111B5}\x{111B6}-\x{111BE}\x{111BF}-\x{111C0}\x{111C9}-\x{111CC}\x{111CE}\x{111CF}\x{1122C}-\x{1122E}\x{1122F}-\x{11231}\x{11232}-\x{11233}\x{11234}\x{11235}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E0}-\x{112E2}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{11302}-\x{11303}\x{1133B}-\x{1133C}\x{1133E}-\x{1133F}\x{11340}\x{11341}-\x{11344}\x{11347}-\x{11348}\x{1134B}-\x{1134D}\x{11357}\x{11362}-\x{11363}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11435}-\x{11437}\x{11438}-\x{1143F}\x{11440}-\x{11441}\x{11442}-\x{11444}\x{11445}\x{11446}\x{1145E}\x{114B0}-\x{114B2}\x{114B3}-\x{114B8}\x{114B9}\x{114BA}\x{114BB}-\x{114BE}\x{114BF}-\x{114C0}\x{114C1}\x{114C2}-\x{114C3}\x{115AF}-\x{115B1}\x{115B2}-\x{115B5}\x{115B8}-\x{115BB}\x{115BC}-\x{115BD}\x{115BE}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11630}-\x{11632}\x{11633}-\x{1163A}\x{1163B}-\x{1163C}\x{1163D}\x{1163E}\x{1163F}-\x{11640}\x{116AB}\x{116AC}\x{116AD}\x{116AE}-\x{116AF}\x{116B0}-\x{116B5}\x{116B6}\x{116B7}\x{1171D}-\x{1171F}\x{11720}-\x{11721}\x{11722}-\x{11725}\x{11726}\x{11727}-\x{1172B}\x{1182C}-\x{1182E}\x{1182F}-\x{11837}\x{11838}\x{11839}-\x{1183A}\x{11930}-\x{11935}\x{11937}-\x{11938}\x{1193B}-\x{1193C}\x{1193D}\x{1193E}\x{11940}\x{11942}\x{11943}\x{119D1}-\x{119D3}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119DC}-\x{119DF}\x{119E0}\x{119E4}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A39}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A57}-\x{11A58}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A97}\x{11A98}-\x{11A99}\x{11C2F}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3E}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CA9}\x{11CAA}-\x{11CB0}\x{11CB1}\x{11CB2}-\x{11CB3}\x{11CB4}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D8A}-\x{11D8E}\x{11D90}-\x{11D91}\x{11D93}-\x{11D94}\x{11D95}\x{11D96}\x{11D97}\x{11EF3}-\x{11EF4}\x{11EF5}-\x{11EF6}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F51}-\x{16F87}\x{16F8F}-\x{16F92}\x{16FE4}\x{16FF0}-\x{16FF1}\x{1BC9D}-\x{1BC9E}\x{1D165}-\x{1D166}\x{1D167}-\x{1D169}\x{1D16D}-\x{1D172}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]/u';
11
-
12
- const RTL_LABEL = '/[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
13
-
14
- const BIDI_STEP_1_LTR = '/^[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
15
- const BIDI_STEP_1_RTL = '/^[\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{200F}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
16
- const BIDI_STEP_2 = '/[^\x{0000}-\x{0008}\x{000E}-\x{001B}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{0030}-\x{0039}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B2}-\x{00B3}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00B9}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{2060}-\x{2064}\x{2065}\x{206A}-\x{206F}\x{2070}\x{2074}-\x{2079}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{2080}-\x{2089}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{2488}-\x{249B}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF10}-\x{FF19}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{102E1}-\x{102FB}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1D7CE}-\x{1D7FF}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F100}-\x{1F10A}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FBF0}-\x{1FBF9}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}]/u';
17
- const BIDI_STEP_3 = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06F0}-\x{06F9}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{200F}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1D7CE}-\x{1D7FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
18
- const BIDI_STEP_4_AN = '/[\x{0600}-\x{0605}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{06DD}\x{08E2}\x{10D30}-\x{10D39}\x{10E60}-\x{10E7E}]/u';
19
- const BIDI_STEP_4_EN = '/[\x{0030}-\x{0039}\x{00B2}-\x{00B3}\x{00B9}\x{06F0}-\x{06F9}\x{2070}\x{2074}-\x{2079}\x{2080}-\x{2089}\x{2488}-\x{249B}\x{FF10}-\x{FF19}\x{102E1}-\x{102FB}\x{1D7CE}-\x{1D7FF}\x{1F100}-\x{1F10A}\x{1FBF0}-\x{1FBF9}]/u';
20
- const BIDI_STEP_5 = '/[\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0085}\x{0590}\x{05BE}\x{05C0}\x{05C3}\x{05C6}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0608}\x{060B}\x{060D}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{0660}-\x{0669}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06DD}\x{06E5}-\x{06E6}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0712}-\x{072F}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07F4}-\x{07F5}\x{07FA}\x{07FB}-\x{07FC}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{081A}\x{0824}\x{0828}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08E2}\x{1680}\x{2000}-\x{200A}\x{200F}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{205F}\x{2066}\x{2067}\x{2068}\x{2069}\x{3000}\x{FB1D}\x{FB1F}-\x{FB28}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFE}-\x{FDFF}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A04}\x{10A07}-\x{10A0B}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A3B}-\x{10A3E}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}]/u';
21
- const BIDI_STEP_6 = '/[^\x{0000}-\x{0008}\x{0009}\x{000A}\x{000B}\x{000C}\x{000D}\x{000E}-\x{001B}\x{001C}-\x{001E}\x{001F}\x{0020}\x{0021}-\x{0022}\x{0023}\x{0024}\x{0025}\x{0026}-\x{0027}\x{0028}\x{0029}\x{002A}\x{002B}\x{002C}\x{002D}\x{002E}-\x{002F}\x{003A}\x{003B}\x{003C}-\x{003E}\x{003F}-\x{0040}\x{005B}\x{005C}\x{005D}\x{005E}\x{005F}\x{0060}\x{007B}\x{007C}\x{007D}\x{007E}\x{007F}-\x{0084}\x{0085}\x{0086}-\x{009F}\x{00A0}\x{00A1}\x{00A2}-\x{00A5}\x{00A6}\x{00A7}\x{00A8}\x{00A9}\x{00AB}\x{00AC}\x{00AD}\x{00AE}\x{00AF}\x{00B0}\x{00B1}\x{00B4}\x{00B6}-\x{00B7}\x{00B8}\x{00BB}\x{00BC}-\x{00BE}\x{00BF}\x{00D7}\x{00F7}\x{02B9}-\x{02BA}\x{02C2}-\x{02C5}\x{02C6}-\x{02CF}\x{02D2}-\x{02DF}\x{02E5}-\x{02EB}\x{02EC}\x{02ED}\x{02EF}-\x{02FF}\x{0300}-\x{036F}\x{0374}\x{0375}\x{037E}\x{0384}-\x{0385}\x{0387}\x{03F6}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{058A}\x{058D}-\x{058E}\x{058F}\x{0590}\x{0591}-\x{05BD}\x{05BE}\x{05BF}\x{05C0}\x{05C1}-\x{05C2}\x{05C3}\x{05C4}-\x{05C5}\x{05C6}\x{05C7}\x{05C8}-\x{05CF}\x{05D0}-\x{05EA}\x{05EB}-\x{05EE}\x{05EF}-\x{05F2}\x{05F3}-\x{05F4}\x{05F5}-\x{05FF}\x{0600}-\x{0605}\x{0606}-\x{0607}\x{0608}\x{0609}-\x{060A}\x{060B}\x{060C}\x{060D}\x{060E}-\x{060F}\x{0610}-\x{061A}\x{061B}\x{061C}\x{061D}\x{061E}-\x{061F}\x{0620}-\x{063F}\x{0640}\x{0641}-\x{064A}\x{064B}-\x{065F}\x{0660}-\x{0669}\x{066A}\x{066B}-\x{066C}\x{066D}\x{066E}-\x{066F}\x{0670}\x{0671}-\x{06D3}\x{06D4}\x{06D5}\x{06D6}-\x{06DC}\x{06DD}\x{06DE}\x{06DF}-\x{06E4}\x{06E5}-\x{06E6}\x{06E7}-\x{06E8}\x{06E9}\x{06EA}-\x{06ED}\x{06EE}-\x{06EF}\x{06FA}-\x{06FC}\x{06FD}-\x{06FE}\x{06FF}\x{0700}-\x{070D}\x{070E}\x{070F}\x{0710}\x{0711}\x{0712}-\x{072F}\x{0730}-\x{074A}\x{074B}-\x{074C}\x{074D}-\x{07A5}\x{07A6}-\x{07B0}\x{07B1}\x{07B2}-\x{07BF}\x{07C0}-\x{07C9}\x{07CA}-\x{07EA}\x{07EB}-\x{07F3}\x{07F4}-\x{07F5}\x{07F6}\x{07F7}-\x{07F9}\x{07FA}\x{07FB}-\x{07FC}\x{07FD}\x{07FE}-\x{07FF}\x{0800}-\x{0815}\x{0816}-\x{0819}\x{081A}\x{081B}-\x{0823}\x{0824}\x{0825}-\x{0827}\x{0828}\x{0829}-\x{082D}\x{082E}-\x{082F}\x{0830}-\x{083E}\x{083F}\x{0840}-\x{0858}\x{0859}-\x{085B}\x{085C}-\x{085D}\x{085E}\x{085F}\x{0860}-\x{086A}\x{086B}-\x{086F}\x{0870}-\x{089F}\x{08A0}-\x{08B4}\x{08B5}\x{08B6}-\x{08C7}\x{08C8}-\x{08D2}\x{08D3}-\x{08E1}\x{08E2}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09F2}-\x{09F3}\x{09FB}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AF1}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0BF3}-\x{0BF8}\x{0BF9}\x{0BFA}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C78}-\x{0C7E}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E3F}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F3A}\x{0F3B}\x{0F3C}\x{0F3D}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1390}-\x{1399}\x{1400}\x{1680}\x{169B}\x{169C}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DB}\x{17DD}\x{17F0}-\x{17F9}\x{1800}-\x{1805}\x{1806}\x{1807}-\x{180A}\x{180B}-\x{180D}\x{180E}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1940}\x{1944}-\x{1945}\x{19DE}-\x{19FF}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{1FBD}\x{1FBF}-\x{1FC1}\x{1FCD}-\x{1FCF}\x{1FDD}-\x{1FDF}\x{1FED}-\x{1FEF}\x{1FFD}-\x{1FFE}\x{2000}-\x{200A}\x{200B}-\x{200D}\x{200F}\x{2010}-\x{2015}\x{2016}-\x{2017}\x{2018}\x{2019}\x{201A}\x{201B}-\x{201C}\x{201D}\x{201E}\x{201F}\x{2020}-\x{2027}\x{2028}\x{2029}\x{202A}\x{202B}\x{202C}\x{202D}\x{202E}\x{202F}\x{2030}-\x{2034}\x{2035}-\x{2038}\x{2039}\x{203A}\x{203B}-\x{203E}\x{203F}-\x{2040}\x{2041}-\x{2043}\x{2044}\x{2045}\x{2046}\x{2047}-\x{2051}\x{2052}\x{2053}\x{2054}\x{2055}-\x{205E}\x{205F}\x{2060}-\x{2064}\x{2065}\x{2066}\x{2067}\x{2068}\x{2069}\x{206A}-\x{206F}\x{207A}-\x{207B}\x{207C}\x{207D}\x{207E}\x{208A}-\x{208B}\x{208C}\x{208D}\x{208E}\x{20A0}-\x{20BF}\x{20C0}-\x{20CF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2100}-\x{2101}\x{2103}-\x{2106}\x{2108}-\x{2109}\x{2114}\x{2116}-\x{2117}\x{2118}\x{211E}-\x{2123}\x{2125}\x{2127}\x{2129}\x{212E}\x{213A}-\x{213B}\x{2140}-\x{2144}\x{214A}\x{214B}\x{214C}-\x{214D}\x{2150}-\x{215F}\x{2189}\x{218A}-\x{218B}\x{2190}-\x{2194}\x{2195}-\x{2199}\x{219A}-\x{219B}\x{219C}-\x{219F}\x{21A0}\x{21A1}-\x{21A2}\x{21A3}\x{21A4}-\x{21A5}\x{21A6}\x{21A7}-\x{21AD}\x{21AE}\x{21AF}-\x{21CD}\x{21CE}-\x{21CF}\x{21D0}-\x{21D1}\x{21D2}\x{21D3}\x{21D4}\x{21D5}-\x{21F3}\x{21F4}-\x{2211}\x{2212}\x{2213}\x{2214}-\x{22FF}\x{2300}-\x{2307}\x{2308}\x{2309}\x{230A}\x{230B}\x{230C}-\x{231F}\x{2320}-\x{2321}\x{2322}-\x{2328}\x{2329}\x{232A}\x{232B}-\x{2335}\x{237B}\x{237C}\x{237D}-\x{2394}\x{2396}-\x{239A}\x{239B}-\x{23B3}\x{23B4}-\x{23DB}\x{23DC}-\x{23E1}\x{23E2}-\x{2426}\x{2440}-\x{244A}\x{2460}-\x{2487}\x{24EA}-\x{24FF}\x{2500}-\x{25B6}\x{25B7}\x{25B8}-\x{25C0}\x{25C1}\x{25C2}-\x{25F7}\x{25F8}-\x{25FF}\x{2600}-\x{266E}\x{266F}\x{2670}-\x{26AB}\x{26AD}-\x{2767}\x{2768}\x{2769}\x{276A}\x{276B}\x{276C}\x{276D}\x{276E}\x{276F}\x{2770}\x{2771}\x{2772}\x{2773}\x{2774}\x{2775}\x{2776}-\x{2793}\x{2794}-\x{27BF}\x{27C0}-\x{27C4}\x{27C5}\x{27C6}\x{27C7}-\x{27E5}\x{27E6}\x{27E7}\x{27E8}\x{27E9}\x{27EA}\x{27EB}\x{27EC}\x{27ED}\x{27EE}\x{27EF}\x{27F0}-\x{27FF}\x{2900}-\x{2982}\x{2983}\x{2984}\x{2985}\x{2986}\x{2987}\x{2988}\x{2989}\x{298A}\x{298B}\x{298C}\x{298D}\x{298E}\x{298F}\x{2990}\x{2991}\x{2992}\x{2993}\x{2994}\x{2995}\x{2996}\x{2997}\x{2998}\x{2999}-\x{29D7}\x{29D8}\x{29D9}\x{29DA}\x{29DB}\x{29DC}-\x{29FB}\x{29FC}\x{29FD}\x{29FE}-\x{2AFF}\x{2B00}-\x{2B2F}\x{2B30}-\x{2B44}\x{2B45}-\x{2B46}\x{2B47}-\x{2B4C}\x{2B4D}-\x{2B73}\x{2B76}-\x{2B95}\x{2B97}-\x{2BFF}\x{2CE5}-\x{2CEA}\x{2CEF}-\x{2CF1}\x{2CF9}-\x{2CFC}\x{2CFD}\x{2CFE}-\x{2CFF}\x{2D7F}\x{2DE0}-\x{2DFF}\x{2E00}-\x{2E01}\x{2E02}\x{2E03}\x{2E04}\x{2E05}\x{2E06}-\x{2E08}\x{2E09}\x{2E0A}\x{2E0B}\x{2E0C}\x{2E0D}\x{2E0E}-\x{2E16}\x{2E17}\x{2E18}-\x{2E19}\x{2E1A}\x{2E1B}\x{2E1C}\x{2E1D}\x{2E1E}-\x{2E1F}\x{2E20}\x{2E21}\x{2E22}\x{2E23}\x{2E24}\x{2E25}\x{2E26}\x{2E27}\x{2E28}\x{2E29}\x{2E2A}-\x{2E2E}\x{2E2F}\x{2E30}-\x{2E39}\x{2E3A}-\x{2E3B}\x{2E3C}-\x{2E3F}\x{2E40}\x{2E41}\x{2E42}\x{2E43}-\x{2E4F}\x{2E50}-\x{2E51}\x{2E52}\x{2E80}-\x{2E99}\x{2E9B}-\x{2EF3}\x{2F00}-\x{2FD5}\x{2FF0}-\x{2FFB}\x{3000}\x{3001}-\x{3003}\x{3004}\x{3008}\x{3009}\x{300A}\x{300B}\x{300C}\x{300D}\x{300E}\x{300F}\x{3010}\x{3011}\x{3012}-\x{3013}\x{3014}\x{3015}\x{3016}\x{3017}\x{3018}\x{3019}\x{301A}\x{301B}\x{301C}\x{301D}\x{301E}-\x{301F}\x{3020}\x{302A}-\x{302D}\x{3030}\x{3036}-\x{3037}\x{303D}\x{303E}-\x{303F}\x{3099}-\x{309A}\x{309B}-\x{309C}\x{30A0}\x{30FB}\x{31C0}-\x{31E3}\x{321D}-\x{321E}\x{3250}\x{3251}-\x{325F}\x{327C}-\x{327E}\x{32B1}-\x{32BF}\x{32CC}-\x{32CF}\x{3377}-\x{337A}\x{33DE}-\x{33DF}\x{33FF}\x{4DC0}-\x{4DFF}\x{A490}-\x{A4C6}\x{A60D}-\x{A60F}\x{A66F}\x{A670}-\x{A672}\x{A673}\x{A674}-\x{A67D}\x{A67E}\x{A67F}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A700}-\x{A716}\x{A717}-\x{A71F}\x{A720}-\x{A721}\x{A788}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A828}-\x{A82B}\x{A82C}\x{A838}\x{A839}\x{A874}-\x{A877}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{AB6A}-\x{AB6B}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1D}\x{FB1E}\x{FB1F}-\x{FB28}\x{FB29}\x{FB2A}-\x{FB36}\x{FB37}\x{FB38}-\x{FB3C}\x{FB3D}\x{FB3E}\x{FB3F}\x{FB40}-\x{FB41}\x{FB42}\x{FB43}-\x{FB44}\x{FB45}\x{FB46}-\x{FB4F}\x{FB50}-\x{FBB1}\x{FBB2}-\x{FBC1}\x{FBC2}-\x{FBD2}\x{FBD3}-\x{FD3D}\x{FD3E}\x{FD3F}\x{FD40}-\x{FD4F}\x{FD50}-\x{FD8F}\x{FD90}-\x{FD91}\x{FD92}-\x{FDC7}\x{FDC8}-\x{FDCF}\x{FDD0}-\x{FDEF}\x{FDF0}-\x{FDFB}\x{FDFC}\x{FDFD}\x{FDFE}-\x{FDFF}\x{FE00}-\x{FE0F}\x{FE10}-\x{FE16}\x{FE17}\x{FE18}\x{FE19}\x{FE20}-\x{FE2F}\x{FE30}\x{FE31}-\x{FE32}\x{FE33}-\x{FE34}\x{FE35}\x{FE36}\x{FE37}\x{FE38}\x{FE39}\x{FE3A}\x{FE3B}\x{FE3C}\x{FE3D}\x{FE3E}\x{FE3F}\x{FE40}\x{FE41}\x{FE42}\x{FE43}\x{FE44}\x{FE45}-\x{FE46}\x{FE47}\x{FE48}\x{FE49}-\x{FE4C}\x{FE4D}-\x{FE4F}\x{FE50}\x{FE51}\x{FE52}\x{FE54}\x{FE55}\x{FE56}-\x{FE57}\x{FE58}\x{FE59}\x{FE5A}\x{FE5B}\x{FE5C}\x{FE5D}\x{FE5E}\x{FE5F}\x{FE60}-\x{FE61}\x{FE62}\x{FE63}\x{FE64}-\x{FE66}\x{FE68}\x{FE69}\x{FE6A}\x{FE6B}\x{FE70}-\x{FE74}\x{FE75}\x{FE76}-\x{FEFC}\x{FEFD}-\x{FEFE}\x{FEFF}\x{FF01}-\x{FF02}\x{FF03}\x{FF04}\x{FF05}\x{FF06}-\x{FF07}\x{FF08}\x{FF09}\x{FF0A}\x{FF0B}\x{FF0C}\x{FF0D}\x{FF0E}-\x{FF0F}\x{FF1A}\x{FF1B}\x{FF1C}-\x{FF1E}\x{FF1F}-\x{FF20}\x{FF3B}\x{FF3C}\x{FF3D}\x{FF3E}\x{FF3F}\x{FF40}\x{FF5B}\x{FF5C}\x{FF5D}\x{FF5E}\x{FF5F}\x{FF60}\x{FF61}\x{FF62}\x{FF63}\x{FF64}-\x{FF65}\x{FFE0}-\x{FFE1}\x{FFE2}\x{FFE3}\x{FFE4}\x{FFE5}-\x{FFE6}\x{FFE8}\x{FFE9}-\x{FFEC}\x{FFED}-\x{FFEE}\x{FFF0}-\x{FFF8}\x{FFF9}-\x{FFFB}\x{FFFC}-\x{FFFD}\x{FFFE}-\x{FFFF}\x{10101}\x{10140}-\x{10174}\x{10175}-\x{10178}\x{10179}-\x{10189}\x{1018A}-\x{1018B}\x{1018C}\x{10190}-\x{1019C}\x{101A0}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10800}-\x{10805}\x{10806}-\x{10807}\x{10808}\x{10809}\x{1080A}-\x{10835}\x{10836}\x{10837}-\x{10838}\x{10839}-\x{1083B}\x{1083C}\x{1083D}-\x{1083E}\x{1083F}-\x{10855}\x{10856}\x{10857}\x{10858}-\x{1085F}\x{10860}-\x{10876}\x{10877}-\x{10878}\x{10879}-\x{1087F}\x{10880}-\x{1089E}\x{1089F}-\x{108A6}\x{108A7}-\x{108AF}\x{108B0}-\x{108DF}\x{108E0}-\x{108F2}\x{108F3}\x{108F4}-\x{108F5}\x{108F6}-\x{108FA}\x{108FB}-\x{108FF}\x{10900}-\x{10915}\x{10916}-\x{1091B}\x{1091C}-\x{1091E}\x{1091F}\x{10920}-\x{10939}\x{1093A}-\x{1093E}\x{1093F}\x{10940}-\x{1097F}\x{10980}-\x{109B7}\x{109B8}-\x{109BB}\x{109BC}-\x{109BD}\x{109BE}-\x{109BF}\x{109C0}-\x{109CF}\x{109D0}-\x{109D1}\x{109D2}-\x{109FF}\x{10A00}\x{10A01}-\x{10A03}\x{10A04}\x{10A05}-\x{10A06}\x{10A07}-\x{10A0B}\x{10A0C}-\x{10A0F}\x{10A10}-\x{10A13}\x{10A14}\x{10A15}-\x{10A17}\x{10A18}\x{10A19}-\x{10A35}\x{10A36}-\x{10A37}\x{10A38}-\x{10A3A}\x{10A3B}-\x{10A3E}\x{10A3F}\x{10A40}-\x{10A48}\x{10A49}-\x{10A4F}\x{10A50}-\x{10A58}\x{10A59}-\x{10A5F}\x{10A60}-\x{10A7C}\x{10A7D}-\x{10A7E}\x{10A7F}\x{10A80}-\x{10A9C}\x{10A9D}-\x{10A9F}\x{10AA0}-\x{10ABF}\x{10AC0}-\x{10AC7}\x{10AC8}\x{10AC9}-\x{10AE4}\x{10AE5}-\x{10AE6}\x{10AE7}-\x{10AEA}\x{10AEB}-\x{10AEF}\x{10AF0}-\x{10AF6}\x{10AF7}-\x{10AFF}\x{10B00}-\x{10B35}\x{10B36}-\x{10B38}\x{10B39}-\x{10B3F}\x{10B40}-\x{10B55}\x{10B56}-\x{10B57}\x{10B58}-\x{10B5F}\x{10B60}-\x{10B72}\x{10B73}-\x{10B77}\x{10B78}-\x{10B7F}\x{10B80}-\x{10B91}\x{10B92}-\x{10B98}\x{10B99}-\x{10B9C}\x{10B9D}-\x{10BA8}\x{10BA9}-\x{10BAF}\x{10BB0}-\x{10BFF}\x{10C00}-\x{10C48}\x{10C49}-\x{10C7F}\x{10C80}-\x{10CB2}\x{10CB3}-\x{10CBF}\x{10CC0}-\x{10CF2}\x{10CF3}-\x{10CF9}\x{10CFA}-\x{10CFF}\x{10D00}-\x{10D23}\x{10D24}-\x{10D27}\x{10D28}-\x{10D2F}\x{10D30}-\x{10D39}\x{10D3A}-\x{10D3F}\x{10D40}-\x{10E5F}\x{10E60}-\x{10E7E}\x{10E7F}\x{10E80}-\x{10EA9}\x{10EAA}\x{10EAB}-\x{10EAC}\x{10EAD}\x{10EAE}-\x{10EAF}\x{10EB0}-\x{10EB1}\x{10EB2}-\x{10EFF}\x{10F00}-\x{10F1C}\x{10F1D}-\x{10F26}\x{10F27}\x{10F28}-\x{10F2F}\x{10F30}-\x{10F45}\x{10F46}-\x{10F50}\x{10F51}-\x{10F54}\x{10F55}-\x{10F59}\x{10F5A}-\x{10F6F}\x{10F70}-\x{10FAF}\x{10FB0}-\x{10FC4}\x{10FC5}-\x{10FCB}\x{10FCC}-\x{10FDF}\x{10FE0}-\x{10FF6}\x{10FF7}-\x{10FFF}\x{11001}\x{11038}-\x{11046}\x{11052}-\x{11065}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{11660}-\x{1166C}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{11FD5}-\x{11FDC}\x{11FDD}-\x{11FE0}\x{11FE1}-\x{11FF1}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE2}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D200}-\x{1D241}\x{1D242}-\x{1D244}\x{1D245}\x{1D300}-\x{1D356}\x{1D6DB}\x{1D715}\x{1D74F}\x{1D789}\x{1D7C3}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E2FF}\x{1E800}-\x{1E8C4}\x{1E8C5}-\x{1E8C6}\x{1E8C7}-\x{1E8CF}\x{1E8D0}-\x{1E8D6}\x{1E8D7}-\x{1E8FF}\x{1E900}-\x{1E943}\x{1E944}-\x{1E94A}\x{1E94B}\x{1E94C}-\x{1E94F}\x{1E950}-\x{1E959}\x{1E95A}-\x{1E95D}\x{1E95E}-\x{1E95F}\x{1E960}-\x{1EC6F}\x{1EC70}\x{1EC71}-\x{1ECAB}\x{1ECAC}\x{1ECAD}-\x{1ECAF}\x{1ECB0}\x{1ECB1}-\x{1ECB4}\x{1ECB5}-\x{1ECBF}\x{1ECC0}-\x{1ECFF}\x{1ED00}\x{1ED01}-\x{1ED2D}\x{1ED2E}\x{1ED2F}-\x{1ED3D}\x{1ED3E}-\x{1ED4F}\x{1ED50}-\x{1EDFF}\x{1EE00}-\x{1EE03}\x{1EE04}\x{1EE05}-\x{1EE1F}\x{1EE20}\x{1EE21}-\x{1EE22}\x{1EE23}\x{1EE24}\x{1EE25}-\x{1EE26}\x{1EE27}\x{1EE28}\x{1EE29}-\x{1EE32}\x{1EE33}\x{1EE34}-\x{1EE37}\x{1EE38}\x{1EE39}\x{1EE3A}\x{1EE3B}\x{1EE3C}-\x{1EE41}\x{1EE42}\x{1EE43}-\x{1EE46}\x{1EE47}\x{1EE48}\x{1EE49}\x{1EE4A}\x{1EE4B}\x{1EE4C}\x{1EE4D}-\x{1EE4F}\x{1EE50}\x{1EE51}-\x{1EE52}\x{1EE53}\x{1EE54}\x{1EE55}-\x{1EE56}\x{1EE57}\x{1EE58}\x{1EE59}\x{1EE5A}\x{1EE5B}\x{1EE5C}\x{1EE5D}\x{1EE5E}\x{1EE5F}\x{1EE60}\x{1EE61}-\x{1EE62}\x{1EE63}\x{1EE64}\x{1EE65}-\x{1EE66}\x{1EE67}-\x{1EE6A}\x{1EE6B}\x{1EE6C}-\x{1EE72}\x{1EE73}\x{1EE74}-\x{1EE77}\x{1EE78}\x{1EE79}-\x{1EE7C}\x{1EE7D}\x{1EE7E}\x{1EE7F}\x{1EE80}-\x{1EE89}\x{1EE8A}\x{1EE8B}-\x{1EE9B}\x{1EE9C}-\x{1EEA0}\x{1EEA1}-\x{1EEA3}\x{1EEA4}\x{1EEA5}-\x{1EEA9}\x{1EEAA}\x{1EEAB}-\x{1EEBB}\x{1EEBC}-\x{1EEEF}\x{1EEF0}-\x{1EEF1}\x{1EEF2}-\x{1EEFF}\x{1EF00}-\x{1EFFF}\x{1F000}-\x{1F02B}\x{1F030}-\x{1F093}\x{1F0A0}-\x{1F0AE}\x{1F0B1}-\x{1F0BF}\x{1F0C1}-\x{1F0CF}\x{1F0D1}-\x{1F0F5}\x{1F10B}-\x{1F10C}\x{1F10D}-\x{1F10F}\x{1F12F}\x{1F16A}-\x{1F16F}\x{1F1AD}\x{1F260}-\x{1F265}\x{1F300}-\x{1F3FA}\x{1F3FB}-\x{1F3FF}\x{1F400}-\x{1F6D7}\x{1F6E0}-\x{1F6EC}\x{1F6F0}-\x{1F6FC}\x{1F700}-\x{1F773}\x{1F780}-\x{1F7D8}\x{1F7E0}-\x{1F7EB}\x{1F800}-\x{1F80B}\x{1F810}-\x{1F847}\x{1F850}-\x{1F859}\x{1F860}-\x{1F887}\x{1F890}-\x{1F8AD}\x{1F8B0}-\x{1F8B1}\x{1F900}-\x{1F978}\x{1F97A}-\x{1F9CB}\x{1F9CD}-\x{1FA53}\x{1FA60}-\x{1FA6D}\x{1FA70}-\x{1FA74}\x{1FA78}-\x{1FA7A}\x{1FA80}-\x{1FA86}\x{1FA90}-\x{1FAA8}\x{1FAB0}-\x{1FAB6}\x{1FAC0}-\x{1FAC2}\x{1FAD0}-\x{1FAD6}\x{1FB00}-\x{1FB92}\x{1FB94}-\x{1FBCA}\x{1FFFE}-\x{1FFFF}\x{2FFFE}-\x{2FFFF}\x{3FFFE}-\x{3FFFF}\x{4FFFE}-\x{4FFFF}\x{5FFFE}-\x{5FFFF}\x{6FFFE}-\x{6FFFF}\x{7FFFE}-\x{7FFFF}\x{8FFFE}-\x{8FFFF}\x{9FFFE}-\x{9FFFF}\x{AFFFE}-\x{AFFFF}\x{BFFFE}-\x{BFFFF}\x{CFFFE}-\x{CFFFF}\x{DFFFE}-\x{E0000}\x{E0001}\x{E0002}-\x{E001F}\x{E0020}-\x{E007F}\x{E0080}-\x{E00FF}\x{E0100}-\x{E01EF}\x{E01F0}-\x{E0FFF}\x{EFFFE}-\x{EFFFF}\x{FFFFE}-\x{FFFFF}\x{10FFFE}-\x{10FFFF}][\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A06}\x{11A09}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1D167}-\x{1D169}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{E0100}-\x{E01EF}]*$/u';
22
-
23
- const ZWNJ = '/([\x{A872}\x{10ACD}\x{10AD7}\x{10D00}\x{10FCB}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}][\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*\x{200C}[\x{00AD}\x{0300}-\x{036F}\x{0483}-\x{0487}\x{0488}-\x{0489}\x{0591}-\x{05BD}\x{05BF}\x{05C1}-\x{05C2}\x{05C4}-\x{05C5}\x{05C7}\x{0610}-\x{061A}\x{061C}\x{064B}-\x{065F}\x{0670}\x{06D6}-\x{06DC}\x{06DF}-\x{06E4}\x{06E7}-\x{06E8}\x{06EA}-\x{06ED}\x{070F}\x{0711}\x{0730}-\x{074A}\x{07A6}-\x{07B0}\x{07EB}-\x{07F3}\x{07FD}\x{0816}-\x{0819}\x{081B}-\x{0823}\x{0825}-\x{0827}\x{0829}-\x{082D}\x{0859}-\x{085B}\x{08D3}-\x{08E1}\x{08E3}-\x{0902}\x{093A}\x{093C}\x{0941}-\x{0948}\x{094D}\x{0951}-\x{0957}\x{0962}-\x{0963}\x{0981}\x{09BC}\x{09C1}-\x{09C4}\x{09CD}\x{09E2}-\x{09E3}\x{09FE}\x{0A01}-\x{0A02}\x{0A3C}\x{0A41}-\x{0A42}\x{0A47}-\x{0A48}\x{0A4B}-\x{0A4D}\x{0A51}\x{0A70}-\x{0A71}\x{0A75}\x{0A81}-\x{0A82}\x{0ABC}\x{0AC1}-\x{0AC5}\x{0AC7}-\x{0AC8}\x{0ACD}\x{0AE2}-\x{0AE3}\x{0AFA}-\x{0AFF}\x{0B01}\x{0B3C}\x{0B3F}\x{0B41}-\x{0B44}\x{0B4D}\x{0B55}-\x{0B56}\x{0B62}-\x{0B63}\x{0B82}\x{0BC0}\x{0BCD}\x{0C00}\x{0C04}\x{0C3E}-\x{0C40}\x{0C46}-\x{0C48}\x{0C4A}-\x{0C4D}\x{0C55}-\x{0C56}\x{0C62}-\x{0C63}\x{0C81}\x{0CBC}\x{0CBF}\x{0CC6}\x{0CCC}-\x{0CCD}\x{0CE2}-\x{0CE3}\x{0D00}-\x{0D01}\x{0D3B}-\x{0D3C}\x{0D41}-\x{0D44}\x{0D4D}\x{0D62}-\x{0D63}\x{0D81}\x{0DCA}\x{0DD2}-\x{0DD4}\x{0DD6}\x{0E31}\x{0E34}-\x{0E3A}\x{0E47}-\x{0E4E}\x{0EB1}\x{0EB4}-\x{0EBC}\x{0EC8}-\x{0ECD}\x{0F18}-\x{0F19}\x{0F35}\x{0F37}\x{0F39}\x{0F71}-\x{0F7E}\x{0F80}-\x{0F84}\x{0F86}-\x{0F87}\x{0F8D}-\x{0F97}\x{0F99}-\x{0FBC}\x{0FC6}\x{102D}-\x{1030}\x{1032}-\x{1037}\x{1039}-\x{103A}\x{103D}-\x{103E}\x{1058}-\x{1059}\x{105E}-\x{1060}\x{1071}-\x{1074}\x{1082}\x{1085}-\x{1086}\x{108D}\x{109D}\x{135D}-\x{135F}\x{1712}-\x{1714}\x{1732}-\x{1734}\x{1752}-\x{1753}\x{1772}-\x{1773}\x{17B4}-\x{17B5}\x{17B7}-\x{17BD}\x{17C6}\x{17C9}-\x{17D3}\x{17DD}\x{180B}-\x{180D}\x{1885}-\x{1886}\x{18A9}\x{1920}-\x{1922}\x{1927}-\x{1928}\x{1932}\x{1939}-\x{193B}\x{1A17}-\x{1A18}\x{1A1B}\x{1A56}\x{1A58}-\x{1A5E}\x{1A60}\x{1A62}\x{1A65}-\x{1A6C}\x{1A73}-\x{1A7C}\x{1A7F}\x{1AB0}-\x{1ABD}\x{1ABE}\x{1ABF}-\x{1AC0}\x{1B00}-\x{1B03}\x{1B34}\x{1B36}-\x{1B3A}\x{1B3C}\x{1B42}\x{1B6B}-\x{1B73}\x{1B80}-\x{1B81}\x{1BA2}-\x{1BA5}\x{1BA8}-\x{1BA9}\x{1BAB}-\x{1BAD}\x{1BE6}\x{1BE8}-\x{1BE9}\x{1BED}\x{1BEF}-\x{1BF1}\x{1C2C}-\x{1C33}\x{1C36}-\x{1C37}\x{1CD0}-\x{1CD2}\x{1CD4}-\x{1CE0}\x{1CE2}-\x{1CE8}\x{1CED}\x{1CF4}\x{1CF8}-\x{1CF9}\x{1DC0}-\x{1DF9}\x{1DFB}-\x{1DFF}\x{200B}\x{200E}-\x{200F}\x{202A}-\x{202E}\x{2060}-\x{2064}\x{206A}-\x{206F}\x{20D0}-\x{20DC}\x{20DD}-\x{20E0}\x{20E1}\x{20E2}-\x{20E4}\x{20E5}-\x{20F0}\x{2CEF}-\x{2CF1}\x{2D7F}\x{2DE0}-\x{2DFF}\x{302A}-\x{302D}\x{3099}-\x{309A}\x{A66F}\x{A670}-\x{A672}\x{A674}-\x{A67D}\x{A69E}-\x{A69F}\x{A6F0}-\x{A6F1}\x{A802}\x{A806}\x{A80B}\x{A825}-\x{A826}\x{A82C}\x{A8C4}-\x{A8C5}\x{A8E0}-\x{A8F1}\x{A8FF}\x{A926}-\x{A92D}\x{A947}-\x{A951}\x{A980}-\x{A982}\x{A9B3}\x{A9B6}-\x{A9B9}\x{A9BC}-\x{A9BD}\x{A9E5}\x{AA29}-\x{AA2E}\x{AA31}-\x{AA32}\x{AA35}-\x{AA36}\x{AA43}\x{AA4C}\x{AA7C}\x{AAB0}\x{AAB2}-\x{AAB4}\x{AAB7}-\x{AAB8}\x{AABE}-\x{AABF}\x{AAC1}\x{AAEC}-\x{AAED}\x{AAF6}\x{ABE5}\x{ABE8}\x{ABED}\x{FB1E}\x{FE00}-\x{FE0F}\x{FE20}-\x{FE2F}\x{FEFF}\x{FFF9}-\x{FFFB}\x{101FD}\x{102E0}\x{10376}-\x{1037A}\x{10A01}-\x{10A03}\x{10A05}-\x{10A06}\x{10A0C}-\x{10A0F}\x{10A38}-\x{10A3A}\x{10A3F}\x{10AE5}-\x{10AE6}\x{10D24}-\x{10D27}\x{10EAB}-\x{10EAC}\x{10F46}-\x{10F50}\x{11001}\x{11038}-\x{11046}\x{1107F}-\x{11081}\x{110B3}-\x{110B6}\x{110B9}-\x{110BA}\x{11100}-\x{11102}\x{11127}-\x{1112B}\x{1112D}-\x{11134}\x{11173}\x{11180}-\x{11181}\x{111B6}-\x{111BE}\x{111C9}-\x{111CC}\x{111CF}\x{1122F}-\x{11231}\x{11234}\x{11236}-\x{11237}\x{1123E}\x{112DF}\x{112E3}-\x{112EA}\x{11300}-\x{11301}\x{1133B}-\x{1133C}\x{11340}\x{11366}-\x{1136C}\x{11370}-\x{11374}\x{11438}-\x{1143F}\x{11442}-\x{11444}\x{11446}\x{1145E}\x{114B3}-\x{114B8}\x{114BA}\x{114BF}-\x{114C0}\x{114C2}-\x{114C3}\x{115B2}-\x{115B5}\x{115BC}-\x{115BD}\x{115BF}-\x{115C0}\x{115DC}-\x{115DD}\x{11633}-\x{1163A}\x{1163D}\x{1163F}-\x{11640}\x{116AB}\x{116AD}\x{116B0}-\x{116B5}\x{116B7}\x{1171D}-\x{1171F}\x{11722}-\x{11725}\x{11727}-\x{1172B}\x{1182F}-\x{11837}\x{11839}-\x{1183A}\x{1193B}-\x{1193C}\x{1193E}\x{11943}\x{119D4}-\x{119D7}\x{119DA}-\x{119DB}\x{119E0}\x{11A01}-\x{11A0A}\x{11A33}-\x{11A38}\x{11A3B}-\x{11A3E}\x{11A47}\x{11A51}-\x{11A56}\x{11A59}-\x{11A5B}\x{11A8A}-\x{11A96}\x{11A98}-\x{11A99}\x{11C30}-\x{11C36}\x{11C38}-\x{11C3D}\x{11C3F}\x{11C92}-\x{11CA7}\x{11CAA}-\x{11CB0}\x{11CB2}-\x{11CB3}\x{11CB5}-\x{11CB6}\x{11D31}-\x{11D36}\x{11D3A}\x{11D3C}-\x{11D3D}\x{11D3F}-\x{11D45}\x{11D47}\x{11D90}-\x{11D91}\x{11D95}\x{11D97}\x{11EF3}-\x{11EF4}\x{13430}-\x{13438}\x{16AF0}-\x{16AF4}\x{16B30}-\x{16B36}\x{16F4F}\x{16F8F}-\x{16F92}\x{16FE4}\x{1BC9D}-\x{1BC9E}\x{1BCA0}-\x{1BCA3}\x{1D167}-\x{1D169}\x{1D173}-\x{1D17A}\x{1D17B}-\x{1D182}\x{1D185}-\x{1D18B}\x{1D1AA}-\x{1D1AD}\x{1D242}-\x{1D244}\x{1DA00}-\x{1DA36}\x{1DA3B}-\x{1DA6C}\x{1DA75}\x{1DA84}\x{1DA9B}-\x{1DA9F}\x{1DAA1}-\x{1DAAF}\x{1E000}-\x{1E006}\x{1E008}-\x{1E018}\x{1E01B}-\x{1E021}\x{1E023}-\x{1E024}\x{1E026}-\x{1E02A}\x{1E130}-\x{1E136}\x{1E2EC}-\x{1E2EF}\x{1E8D0}-\x{1E8D6}\x{1E944}-\x{1E94A}\x{1E94B}\x{E0001}\x{E0020}-\x{E007F}\x{E0100}-\x{E01EF}]*)[\x{0622}-\x{0625}\x{0627}\x{0629}\x{062F}-\x{0632}\x{0648}\x{0671}-\x{0673}\x{0675}-\x{0677}\x{0688}-\x{0699}\x{06C0}\x{06C3}-\x{06CB}\x{06CD}\x{06CF}\x{06D2}-\x{06D3}\x{06D5}\x{06EE}-\x{06EF}\x{0710}\x{0715}-\x{0719}\x{071E}\x{0728}\x{072A}\x{072C}\x{072F}\x{074D}\x{0759}-\x{075B}\x{076B}-\x{076C}\x{0771}\x{0773}-\x{0774}\x{0778}-\x{0779}\x{0840}\x{0846}-\x{0847}\x{0849}\x{0854}\x{0856}-\x{0858}\x{0867}\x{0869}-\x{086A}\x{08AA}-\x{08AC}\x{08AE}\x{08B1}-\x{08B2}\x{08B9}\x{10AC5}\x{10AC7}\x{10AC9}-\x{10ACA}\x{10ACE}-\x{10AD2}\x{10ADD}\x{10AE1}\x{10AE4}\x{10AEF}\x{10B81}\x{10B83}-\x{10B85}\x{10B89}\x{10B8C}\x{10B8E}-\x{10B8F}\x{10B91}\x{10BA9}-\x{10BAC}\x{10D22}\x{10F33}\x{10F54}\x{10FB4}-\x{10FB6}\x{10FB9}-\x{10FBA}\x{10FBD}\x{10FC2}-\x{10FC3}\x{10FC9}\x{0620}\x{0626}\x{0628}\x{062A}-\x{062E}\x{0633}-\x{063F}\x{0641}-\x{0647}\x{0649}-\x{064A}\x{066E}-\x{066F}\x{0678}-\x{0687}\x{069A}-\x{06BF}\x{06C1}-\x{06C2}\x{06CC}\x{06CE}\x{06D0}-\x{06D1}\x{06FA}-\x{06FC}\x{06FF}\x{0712}-\x{0714}\x{071A}-\x{071D}\x{071F}-\x{0727}\x{0729}\x{072B}\x{072D}-\x{072E}\x{074E}-\x{0758}\x{075C}-\x{076A}\x{076D}-\x{0770}\x{0772}\x{0775}-\x{0777}\x{077A}-\x{077F}\x{07CA}-\x{07EA}\x{0841}-\x{0845}\x{0848}\x{084A}-\x{0853}\x{0855}\x{0860}\x{0862}-\x{0865}\x{0868}\x{08A0}-\x{08A9}\x{08AF}-\x{08B0}\x{08B3}-\x{08B4}\x{08B6}-\x{08B8}\x{08BA}-\x{08C7}\x{1807}\x{1820}-\x{1842}\x{1843}\x{1844}-\x{1878}\x{1887}-\x{18A8}\x{18AA}\x{A840}-\x{A871}\x{10AC0}-\x{10AC4}\x{10AD3}-\x{10AD6}\x{10AD8}-\x{10ADC}\x{10ADE}-\x{10AE0}\x{10AEB}-\x{10AEE}\x{10B80}\x{10B82}\x{10B86}-\x{10B88}\x{10B8A}-\x{10B8B}\x{10B8D}\x{10B90}\x{10BAD}-\x{10BAE}\x{10D01}-\x{10D21}\x{10D23}\x{10F30}-\x{10F32}\x{10F34}-\x{10F44}\x{10F51}-\x{10F53}\x{10FB0}\x{10FB2}-\x{10FB3}\x{10FB8}\x{10FBB}-\x{10FBC}\x{10FBE}-\x{10FBF}\x{10FC1}\x{10FC4}\x{10FCA}\x{1E900}-\x{1E943}]/u';
24
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/deviation.php DELETED
@@ -1,8 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 223 => 'ss',
5
- 962 => 'σ',
6
- 8204 => '',
7
- 8205 => '',
8
- );
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed.php DELETED
@@ -1,2638 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 888 => true,
5
- 889 => true,
6
- 896 => true,
7
- 897 => true,
8
- 898 => true,
9
- 899 => true,
10
- 907 => true,
11
- 909 => true,
12
- 930 => true,
13
- 1216 => true,
14
- 1328 => true,
15
- 1367 => true,
16
- 1368 => true,
17
- 1419 => true,
18
- 1420 => true,
19
- 1424 => true,
20
- 1480 => true,
21
- 1481 => true,
22
- 1482 => true,
23
- 1483 => true,
24
- 1484 => true,
25
- 1485 => true,
26
- 1486 => true,
27
- 1487 => true,
28
- 1515 => true,
29
- 1516 => true,
30
- 1517 => true,
31
- 1518 => true,
32
- 1525 => true,
33
- 1526 => true,
34
- 1527 => true,
35
- 1528 => true,
36
- 1529 => true,
37
- 1530 => true,
38
- 1531 => true,
39
- 1532 => true,
40
- 1533 => true,
41
- 1534 => true,
42
- 1535 => true,
43
- 1536 => true,
44
- 1537 => true,
45
- 1538 => true,
46
- 1539 => true,
47
- 1540 => true,
48
- 1541 => true,
49
- 1564 => true,
50
- 1565 => true,
51
- 1757 => true,
52
- 1806 => true,
53
- 1807 => true,
54
- 1867 => true,
55
- 1868 => true,
56
- 1970 => true,
57
- 1971 => true,
58
- 1972 => true,
59
- 1973 => true,
60
- 1974 => true,
61
- 1975 => true,
62
- 1976 => true,
63
- 1977 => true,
64
- 1978 => true,
65
- 1979 => true,
66
- 1980 => true,
67
- 1981 => true,
68
- 1982 => true,
69
- 1983 => true,
70
- 2043 => true,
71
- 2044 => true,
72
- 2094 => true,
73
- 2095 => true,
74
- 2111 => true,
75
- 2140 => true,
76
- 2141 => true,
77
- 2143 => true,
78
- 2229 => true,
79
- 2248 => true,
80
- 2249 => true,
81
- 2250 => true,
82
- 2251 => true,
83
- 2252 => true,
84
- 2253 => true,
85
- 2254 => true,
86
- 2255 => true,
87
- 2256 => true,
88
- 2257 => true,
89
- 2258 => true,
90
- 2274 => true,
91
- 2436 => true,
92
- 2445 => true,
93
- 2446 => true,
94
- 2449 => true,
95
- 2450 => true,
96
- 2473 => true,
97
- 2481 => true,
98
- 2483 => true,
99
- 2484 => true,
100
- 2485 => true,
101
- 2490 => true,
102
- 2491 => true,
103
- 2501 => true,
104
- 2502 => true,
105
- 2505 => true,
106
- 2506 => true,
107
- 2511 => true,
108
- 2512 => true,
109
- 2513 => true,
110
- 2514 => true,
111
- 2515 => true,
112
- 2516 => true,
113
- 2517 => true,
114
- 2518 => true,
115
- 2520 => true,
116
- 2521 => true,
117
- 2522 => true,
118
- 2523 => true,
119
- 2526 => true,
120
- 2532 => true,
121
- 2533 => true,
122
- 2559 => true,
123
- 2560 => true,
124
- 2564 => true,
125
- 2571 => true,
126
- 2572 => true,
127
- 2573 => true,
128
- 2574 => true,
129
- 2577 => true,
130
- 2578 => true,
131
- 2601 => true,
132
- 2609 => true,
133
- 2612 => true,
134
- 2615 => true,
135
- 2618 => true,
136
- 2619 => true,
137
- 2621 => true,
138
- 2627 => true,
139
- 2628 => true,
140
- 2629 => true,
141
- 2630 => true,
142
- 2633 => true,
143
- 2634 => true,
144
- 2638 => true,
145
- 2639 => true,
146
- 2640 => true,
147
- 2642 => true,
148
- 2643 => true,
149
- 2644 => true,
150
- 2645 => true,
151
- 2646 => true,
152
- 2647 => true,
153
- 2648 => true,
154
- 2653 => true,
155
- 2655 => true,
156
- 2656 => true,
157
- 2657 => true,
158
- 2658 => true,
159
- 2659 => true,
160
- 2660 => true,
161
- 2661 => true,
162
- 2679 => true,
163
- 2680 => true,
164
- 2681 => true,
165
- 2682 => true,
166
- 2683 => true,
167
- 2684 => true,
168
- 2685 => true,
169
- 2686 => true,
170
- 2687 => true,
171
- 2688 => true,
172
- 2692 => true,
173
- 2702 => true,
174
- 2706 => true,
175
- 2729 => true,
176
- 2737 => true,
177
- 2740 => true,
178
- 2746 => true,
179
- 2747 => true,
180
- 2758 => true,
181
- 2762 => true,
182
- 2766 => true,
183
- 2767 => true,
184
- 2769 => true,
185
- 2770 => true,
186
- 2771 => true,
187
- 2772 => true,
188
- 2773 => true,
189
- 2774 => true,
190
- 2775 => true,
191
- 2776 => true,
192
- 2777 => true,
193
- 2778 => true,
194
- 2779 => true,
195
- 2780 => true,
196
- 2781 => true,
197
- 2782 => true,
198
- 2783 => true,
199
- 2788 => true,
200
- 2789 => true,
201
- 2802 => true,
202
- 2803 => true,
203
- 2804 => true,
204
- 2805 => true,
205
- 2806 => true,
206
- 2807 => true,
207
- 2808 => true,
208
- 2816 => true,
209
- 2820 => true,
210
- 2829 => true,
211
- 2830 => true,
212
- 2833 => true,
213
- 2834 => true,
214
- 2857 => true,
215
- 2865 => true,
216
- 2868 => true,
217
- 2874 => true,
218
- 2875 => true,
219
- 2885 => true,
220
- 2886 => true,
221
- 2889 => true,
222
- 2890 => true,
223
- 2894 => true,
224
- 2895 => true,
225
- 2896 => true,
226
- 2897 => true,
227
- 2898 => true,
228
- 2899 => true,
229
- 2900 => true,
230
- 2904 => true,
231
- 2905 => true,
232
- 2906 => true,
233
- 2907 => true,
234
- 2910 => true,
235
- 2916 => true,
236
- 2917 => true,
237
- 2936 => true,
238
- 2937 => true,
239
- 2938 => true,
240
- 2939 => true,
241
- 2940 => true,
242
- 2941 => true,
243
- 2942 => true,
244
- 2943 => true,
245
- 2944 => true,
246
- 2945 => true,
247
- 2948 => true,
248
- 2955 => true,
249
- 2956 => true,
250
- 2957 => true,
251
- 2961 => true,
252
- 2966 => true,
253
- 2967 => true,
254
- 2968 => true,
255
- 2971 => true,
256
- 2973 => true,
257
- 2976 => true,
258
- 2977 => true,
259
- 2978 => true,
260
- 2981 => true,
261
- 2982 => true,
262
- 2983 => true,
263
- 2987 => true,
264
- 2988 => true,
265
- 2989 => true,
266
- 3002 => true,
267
- 3003 => true,
268
- 3004 => true,
269
- 3005 => true,
270
- 3011 => true,
271
- 3012 => true,
272
- 3013 => true,
273
- 3017 => true,
274
- 3022 => true,
275
- 3023 => true,
276
- 3025 => true,
277
- 3026 => true,
278
- 3027 => true,
279
- 3028 => true,
280
- 3029 => true,
281
- 3030 => true,
282
- 3032 => true,
283
- 3033 => true,
284
- 3034 => true,
285
- 3035 => true,
286
- 3036 => true,
287
- 3037 => true,
288
- 3038 => true,
289
- 3039 => true,
290
- 3040 => true,
291
- 3041 => true,
292
- 3042 => true,
293
- 3043 => true,
294
- 3044 => true,
295
- 3045 => true,
296
- 3067 => true,
297
- 3068 => true,
298
- 3069 => true,
299
- 3070 => true,
300
- 3071 => true,
301
- 3085 => true,
302
- 3089 => true,
303
- 3113 => true,
304
- 3130 => true,
305
- 3131 => true,
306
- 3132 => true,
307
- 3141 => true,
308
- 3145 => true,
309
- 3150 => true,
310
- 3151 => true,
311
- 3152 => true,
312
- 3153 => true,
313
- 3154 => true,
314
- 3155 => true,
315
- 3156 => true,
316
- 3159 => true,
317
- 3163 => true,
318
- 3164 => true,
319
- 3165 => true,
320
- 3166 => true,
321
- 3167 => true,
322
- 3172 => true,
323
- 3173 => true,
324
- 3184 => true,
325
- 3185 => true,
326
- 3186 => true,
327
- 3187 => true,
328
- 3188 => true,
329
- 3189 => true,
330
- 3190 => true,
331
- 3213 => true,
332
- 3217 => true,
333
- 3241 => true,
334
- 3252 => true,
335
- 3258 => true,
336
- 3259 => true,
337
- 3269 => true,
338
- 3273 => true,
339
- 3278 => true,
340
- 3279 => true,
341
- 3280 => true,
342
- 3281 => true,
343
- 3282 => true,
344
- 3283 => true,
345
- 3284 => true,
346
- 3287 => true,
347
- 3288 => true,
348
- 3289 => true,
349
- 3290 => true,
350
- 3291 => true,
351
- 3292 => true,
352
- 3293 => true,
353
- 3295 => true,
354
- 3300 => true,
355
- 3301 => true,
356
- 3312 => true,
357
- 3315 => true,
358
- 3316 => true,
359
- 3317 => true,
360
- 3318 => true,
361
- 3319 => true,
362
- 3320 => true,
363
- 3321 => true,
364
- 3322 => true,
365
- 3323 => true,
366
- 3324 => true,
367
- 3325 => true,
368
- 3326 => true,
369
- 3327 => true,
370
- 3341 => true,
371
- 3345 => true,
372
- 3397 => true,
373
- 3401 => true,
374
- 3408 => true,
375
- 3409 => true,
376
- 3410 => true,
377
- 3411 => true,
378
- 3428 => true,
379
- 3429 => true,
380
- 3456 => true,
381
- 3460 => true,
382
- 3479 => true,
383
- 3480 => true,
384
- 3481 => true,
385
- 3506 => true,
386
- 3516 => true,
387
- 3518 => true,
388
- 3519 => true,
389
- 3527 => true,
390
- 3528 => true,
391
- 3529 => true,
392
- 3531 => true,
393
- 3532 => true,
394
- 3533 => true,
395
- 3534 => true,
396
- 3541 => true,
397
- 3543 => true,
398
- 3552 => true,
399
- 3553 => true,
400
- 3554 => true,
401
- 3555 => true,
402
- 3556 => true,
403
- 3557 => true,
404
- 3568 => true,
405
- 3569 => true,
406
- 3573 => true,
407
- 3574 => true,
408
- 3575 => true,
409
- 3576 => true,
410
- 3577 => true,
411
- 3578 => true,
412
- 3579 => true,
413
- 3580 => true,
414
- 3581 => true,
415
- 3582 => true,
416
- 3583 => true,
417
- 3584 => true,
418
- 3643 => true,
419
- 3644 => true,
420
- 3645 => true,
421
- 3646 => true,
422
- 3715 => true,
423
- 3717 => true,
424
- 3723 => true,
425
- 3748 => true,
426
- 3750 => true,
427
- 3774 => true,
428
- 3775 => true,
429
- 3781 => true,
430
- 3783 => true,
431
- 3790 => true,
432
- 3791 => true,
433
- 3802 => true,
434
- 3803 => true,
435
- 3912 => true,
436
- 3949 => true,
437
- 3950 => true,
438
- 3951 => true,
439
- 3952 => true,
440
- 3992 => true,
441
- 4029 => true,
442
- 4045 => true,
443
- 4294 => true,
444
- 4296 => true,
445
- 4297 => true,
446
- 4298 => true,
447
- 4299 => true,
448
- 4300 => true,
449
- 4302 => true,
450
- 4303 => true,
451
- 4447 => true,
452
- 4448 => true,
453
- 4681 => true,
454
- 4686 => true,
455
- 4687 => true,
456
- 4695 => true,
457
- 4697 => true,
458
- 4702 => true,
459
- 4703 => true,
460
- 4745 => true,
461
- 4750 => true,
462
- 4751 => true,
463
- 4785 => true,
464
- 4790 => true,
465
- 4791 => true,
466
- 4799 => true,
467
- 4801 => true,
468
- 4806 => true,
469
- 4807 => true,
470
- 4823 => true,
471
- 4881 => true,
472
- 4886 => true,
473
- 4887 => true,
474
- 4955 => true,
475
- 4956 => true,
476
- 4989 => true,
477
- 4990 => true,
478
- 4991 => true,
479
- 5018 => true,
480
- 5019 => true,
481
- 5020 => true,
482
- 5021 => true,
483
- 5022 => true,
484
- 5023 => true,
485
- 5110 => true,
486
- 5111 => true,
487
- 5118 => true,
488
- 5119 => true,
489
- 5760 => true,
490
- 5789 => true,
491
- 5790 => true,
492
- 5791 => true,
493
- 5881 => true,
494
- 5882 => true,
495
- 5883 => true,
496
- 5884 => true,
497
- 5885 => true,
498
- 5886 => true,
499
- 5887 => true,
500
- 5901 => true,
501
- 5909 => true,
502
- 5910 => true,
503
- 5911 => true,
504
- 5912 => true,
505
- 5913 => true,
506
- 5914 => true,
507
- 5915 => true,
508
- 5916 => true,
509
- 5917 => true,
510
- 5918 => true,
511
- 5919 => true,
512
- 5943 => true,
513
- 5944 => true,
514
- 5945 => true,
515
- 5946 => true,
516
- 5947 => true,
517
- 5948 => true,
518
- 5949 => true,
519
- 5950 => true,
520
- 5951 => true,
521
- 5972 => true,
522
- 5973 => true,
523
- 5974 => true,
524
- 5975 => true,
525
- 5976 => true,
526
- 5977 => true,
527
- 5978 => true,
528
- 5979 => true,
529
- 5980 => true,
530
- 5981 => true,
531
- 5982 => true,
532
- 5983 => true,
533
- 5997 => true,
534
- 6001 => true,
535
- 6004 => true,
536
- 6005 => true,
537
- 6006 => true,
538
- 6007 => true,
539
- 6008 => true,
540
- 6009 => true,
541
- 6010 => true,
542
- 6011 => true,
543
- 6012 => true,
544
- 6013 => true,
545
- 6014 => true,
546
- 6015 => true,
547
- 6068 => true,
548
- 6069 => true,
549
- 6110 => true,
550
- 6111 => true,
551
- 6122 => true,
552
- 6123 => true,
553
- 6124 => true,
554
- 6125 => true,
555
- 6126 => true,
556
- 6127 => true,
557
- 6138 => true,
558
- 6139 => true,
559
- 6140 => true,
560
- 6141 => true,
561
- 6142 => true,
562
- 6143 => true,
563
- 6150 => true,
564
- 6158 => true,
565
- 6159 => true,
566
- 6170 => true,
567
- 6171 => true,
568
- 6172 => true,
569
- 6173 => true,
570
- 6174 => true,
571
- 6175 => true,
572
- 6265 => true,
573
- 6266 => true,
574
- 6267 => true,
575
- 6268 => true,
576
- 6269 => true,
577
- 6270 => true,
578
- 6271 => true,
579
- 6315 => true,
580
- 6316 => true,
581
- 6317 => true,
582
- 6318 => true,
583
- 6319 => true,
584
- 6390 => true,
585
- 6391 => true,
586
- 6392 => true,
587
- 6393 => true,
588
- 6394 => true,
589
- 6395 => true,
590
- 6396 => true,
591
- 6397 => true,
592
- 6398 => true,
593
- 6399 => true,
594
- 6431 => true,
595
- 6444 => true,
596
- 6445 => true,
597
- 6446 => true,
598
- 6447 => true,
599
- 6460 => true,
600
- 6461 => true,
601
- 6462 => true,
602
- 6463 => true,
603
- 6465 => true,
604
- 6466 => true,
605
- 6467 => true,
606
- 6510 => true,
607
- 6511 => true,
608
- 6517 => true,
609
- 6518 => true,
610
- 6519 => true,
611
- 6520 => true,
612
- 6521 => true,
613
- 6522 => true,
614
- 6523 => true,
615
- 6524 => true,
616
- 6525 => true,
617
- 6526 => true,
618
- 6527 => true,
619
- 6572 => true,
620
- 6573 => true,
621
- 6574 => true,
622
- 6575 => true,
623
- 6602 => true,
624
- 6603 => true,
625
- 6604 => true,
626
- 6605 => true,
627
- 6606 => true,
628
- 6607 => true,
629
- 6619 => true,
630
- 6620 => true,
631
- 6621 => true,
632
- 6684 => true,
633
- 6685 => true,
634
- 6751 => true,
635
- 6781 => true,
636
- 6782 => true,
637
- 6794 => true,
638
- 6795 => true,
639
- 6796 => true,
640
- 6797 => true,
641
- 6798 => true,
642
- 6799 => true,
643
- 6810 => true,
644
- 6811 => true,
645
- 6812 => true,
646
- 6813 => true,
647
- 6814 => true,
648
- 6815 => true,
649
- 6830 => true,
650
- 6831 => true,
651
- 6988 => true,
652
- 6989 => true,
653
- 6990 => true,
654
- 6991 => true,
655
- 7037 => true,
656
- 7038 => true,
657
- 7039 => true,
658
- 7156 => true,
659
- 7157 => true,
660
- 7158 => true,
661
- 7159 => true,
662
- 7160 => true,
663
- 7161 => true,
664
- 7162 => true,
665
- 7163 => true,
666
- 7224 => true,
667
- 7225 => true,
668
- 7226 => true,
669
- 7242 => true,
670
- 7243 => true,
671
- 7244 => true,
672
- 7305 => true,
673
- 7306 => true,
674
- 7307 => true,
675
- 7308 => true,
676
- 7309 => true,
677
- 7310 => true,
678
- 7311 => true,
679
- 7355 => true,
680
- 7356 => true,
681
- 7368 => true,
682
- 7369 => true,
683
- 7370 => true,
684
- 7371 => true,
685
- 7372 => true,
686
- 7373 => true,
687
- 7374 => true,
688
- 7375 => true,
689
- 7419 => true,
690
- 7420 => true,
691
- 7421 => true,
692
- 7422 => true,
693
- 7423 => true,
694
- 7674 => true,
695
- 7958 => true,
696
- 7959 => true,
697
- 7966 => true,
698
- 7967 => true,
699
- 8006 => true,
700
- 8007 => true,
701
- 8014 => true,
702
- 8015 => true,
703
- 8024 => true,
704
- 8026 => true,
705
- 8028 => true,
706
- 8030 => true,
707
- 8062 => true,
708
- 8063 => true,
709
- 8117 => true,
710
- 8133 => true,
711
- 8148 => true,
712
- 8149 => true,
713
- 8156 => true,
714
- 8176 => true,
715
- 8177 => true,
716
- 8181 => true,
717
- 8191 => true,
718
- 8206 => true,
719
- 8207 => true,
720
- 8228 => true,
721
- 8229 => true,
722
- 8230 => true,
723
- 8232 => true,
724
- 8233 => true,
725
- 8234 => true,
726
- 8235 => true,
727
- 8236 => true,
728
- 8237 => true,
729
- 8238 => true,
730
- 8289 => true,
731
- 8290 => true,
732
- 8291 => true,
733
- 8293 => true,
734
- 8294 => true,
735
- 8295 => true,
736
- 8296 => true,
737
- 8297 => true,
738
- 8298 => true,
739
- 8299 => true,
740
- 8300 => true,
741
- 8301 => true,
742
- 8302 => true,
743
- 8303 => true,
744
- 8306 => true,
745
- 8307 => true,
746
- 8335 => true,
747
- 8349 => true,
748
- 8350 => true,
749
- 8351 => true,
750
- 8384 => true,
751
- 8385 => true,
752
- 8386 => true,
753
- 8387 => true,
754
- 8388 => true,
755
- 8389 => true,
756
- 8390 => true,
757
- 8391 => true,
758
- 8392 => true,
759
- 8393 => true,
760
- 8394 => true,
761
- 8395 => true,
762
- 8396 => true,
763
- 8397 => true,
764
- 8398 => true,
765
- 8399 => true,
766
- 8433 => true,
767
- 8434 => true,
768
- 8435 => true,
769
- 8436 => true,
770
- 8437 => true,
771
- 8438 => true,
772
- 8439 => true,
773
- 8440 => true,
774
- 8441 => true,
775
- 8442 => true,
776
- 8443 => true,
777
- 8444 => true,
778
- 8445 => true,
779
- 8446 => true,
780
- 8447 => true,
781
- 8498 => true,
782
- 8579 => true,
783
- 8588 => true,
784
- 8589 => true,
785
- 8590 => true,
786
- 8591 => true,
787
- 9255 => true,
788
- 9256 => true,
789
- 9257 => true,
790
- 9258 => true,
791
- 9259 => true,
792
- 9260 => true,
793
- 9261 => true,
794
- 9262 => true,
795
- 9263 => true,
796
- 9264 => true,
797
- 9265 => true,
798
- 9266 => true,
799
- 9267 => true,
800
- 9268 => true,
801
- 9269 => true,
802
- 9270 => true,
803
- 9271 => true,
804
- 9272 => true,
805
- 9273 => true,
806
- 9274 => true,
807
- 9275 => true,
808
- 9276 => true,
809
- 9277 => true,
810
- 9278 => true,
811
- 9279 => true,
812
- 9291 => true,
813
- 9292 => true,
814
- 9293 => true,
815
- 9294 => true,
816
- 9295 => true,
817
- 9296 => true,
818
- 9297 => true,
819
- 9298 => true,
820
- 9299 => true,
821
- 9300 => true,
822
- 9301 => true,
823
- 9302 => true,
824
- 9303 => true,
825
- 9304 => true,
826
- 9305 => true,
827
- 9306 => true,
828
- 9307 => true,
829
- 9308 => true,
830
- 9309 => true,
831
- 9310 => true,
832
- 9311 => true,
833
- 9352 => true,
834
- 9353 => true,
835
- 9354 => true,
836
- 9355 => true,
837
- 9356 => true,
838
- 9357 => true,
839
- 9358 => true,
840
- 9359 => true,
841
- 9360 => true,
842
- 9361 => true,
843
- 9362 => true,
844
- 9363 => true,
845
- 9364 => true,
846
- 9365 => true,
847
- 9366 => true,
848
- 9367 => true,
849
- 9368 => true,
850
- 9369 => true,
851
- 9370 => true,
852
- 9371 => true,
853
- 11124 => true,
854
- 11125 => true,
855
- 11158 => true,
856
- 11311 => true,
857
- 11359 => true,
858
- 11508 => true,
859
- 11509 => true,
860
- 11510 => true,
861
- 11511 => true,
862
- 11512 => true,
863
- 11558 => true,
864
- 11560 => true,
865
- 11561 => true,
866
- 11562 => true,
867
- 11563 => true,
868
- 11564 => true,
869
- 11566 => true,
870
- 11567 => true,
871
- 11624 => true,
872
- 11625 => true,
873
- 11626 => true,
874
- 11627 => true,
875
- 11628 => true,
876
- 11629 => true,
877
- 11630 => true,
878
- 11633 => true,
879
- 11634 => true,
880
- 11635 => true,
881
- 11636 => true,
882
- 11637 => true,
883
- 11638 => true,
884
- 11639 => true,
885
- 11640 => true,
886
- 11641 => true,
887
- 11642 => true,
888
- 11643 => true,
889
- 11644 => true,
890
- 11645 => true,
891
- 11646 => true,
892
- 11671 => true,
893
- 11672 => true,
894
- 11673 => true,
895
- 11674 => true,
896
- 11675 => true,
897
- 11676 => true,
898
- 11677 => true,
899
- 11678 => true,
900
- 11679 => true,
901
- 11687 => true,
902
- 11695 => true,
903
- 11703 => true,
904
- 11711 => true,
905
- 11719 => true,
906
- 11727 => true,
907
- 11735 => true,
908
- 11743 => true,
909
- 11930 => true,
910
- 12020 => true,
911
- 12021 => true,
912
- 12022 => true,
913
- 12023 => true,
914
- 12024 => true,
915
- 12025 => true,
916
- 12026 => true,
917
- 12027 => true,
918
- 12028 => true,
919
- 12029 => true,
920
- 12030 => true,
921
- 12031 => true,
922
- 12246 => true,
923
- 12247 => true,
924
- 12248 => true,
925
- 12249 => true,
926
- 12250 => true,
927
- 12251 => true,
928
- 12252 => true,
929
- 12253 => true,
930
- 12254 => true,
931
- 12255 => true,
932
- 12256 => true,
933
- 12257 => true,
934
- 12258 => true,
935
- 12259 => true,
936
- 12260 => true,
937
- 12261 => true,
938
- 12262 => true,
939
- 12263 => true,
940
- 12264 => true,
941
- 12265 => true,
942
- 12266 => true,
943
- 12267 => true,
944
- 12268 => true,
945
- 12269 => true,
946
- 12270 => true,
947
- 12271 => true,
948
- 12272 => true,
949
- 12273 => true,
950
- 12274 => true,
951
- 12275 => true,
952
- 12276 => true,
953
- 12277 => true,
954
- 12278 => true,
955
- 12279 => true,
956
- 12280 => true,
957
- 12281 => true,
958
- 12282 => true,
959
- 12283 => true,
960
- 12284 => true,
961
- 12285 => true,
962
- 12286 => true,
963
- 12287 => true,
964
- 12352 => true,
965
- 12439 => true,
966
- 12440 => true,
967
- 12544 => true,
968
- 12545 => true,
969
- 12546 => true,
970
- 12547 => true,
971
- 12548 => true,
972
- 12592 => true,
973
- 12644 => true,
974
- 12687 => true,
975
- 12772 => true,
976
- 12773 => true,
977
- 12774 => true,
978
- 12775 => true,
979
- 12776 => true,
980
- 12777 => true,
981
- 12778 => true,
982
- 12779 => true,
983
- 12780 => true,
984
- 12781 => true,
985
- 12782 => true,
986
- 12783 => true,
987
- 12831 => true,
988
- 13250 => true,
989
- 13255 => true,
990
- 13272 => true,
991
- 40957 => true,
992
- 40958 => true,
993
- 40959 => true,
994
- 42125 => true,
995
- 42126 => true,
996
- 42127 => true,
997
- 42183 => true,
998
- 42184 => true,
999
- 42185 => true,
1000
- 42186 => true,
1001
- 42187 => true,
1002
- 42188 => true,
1003
- 42189 => true,
1004
- 42190 => true,
1005
- 42191 => true,
1006
- 42540 => true,
1007
- 42541 => true,
1008
- 42542 => true,
1009
- 42543 => true,
1010
- 42544 => true,
1011
- 42545 => true,
1012
- 42546 => true,
1013
- 42547 => true,
1014
- 42548 => true,
1015
- 42549 => true,
1016
- 42550 => true,
1017
- 42551 => true,
1018
- 42552 => true,
1019
- 42553 => true,
1020
- 42554 => true,
1021
- 42555 => true,
1022
- 42556 => true,
1023
- 42557 => true,
1024
- 42558 => true,
1025
- 42559 => true,
1026
- 42744 => true,
1027
- 42745 => true,
1028
- 42746 => true,
1029
- 42747 => true,
1030
- 42748 => true,
1031
- 42749 => true,
1032
- 42750 => true,
1033
- 42751 => true,
1034
- 42944 => true,
1035
- 42945 => true,
1036
- 43053 => true,
1037
- 43054 => true,
1038
- 43055 => true,
1039
- 43066 => true,
1040
- 43067 => true,
1041
- 43068 => true,
1042
- 43069 => true,
1043
- 43070 => true,
1044
- 43071 => true,
1045
- 43128 => true,
1046
- 43129 => true,
1047
- 43130 => true,
1048
- 43131 => true,
1049
- 43132 => true,
1050
- 43133 => true,
1051
- 43134 => true,
1052
- 43135 => true,
1053
- 43206 => true,
1054
- 43207 => true,
1055
- 43208 => true,
1056
- 43209 => true,
1057
- 43210 => true,
1058
- 43211 => true,
1059
- 43212 => true,
1060
- 43213 => true,
1061
- 43226 => true,
1062
- 43227 => true,
1063
- 43228 => true,
1064
- 43229 => true,
1065
- 43230 => true,
1066
- 43231 => true,
1067
- 43348 => true,
1068
- 43349 => true,
1069
- 43350 => true,
1070
- 43351 => true,
1071
- 43352 => true,
1072
- 43353 => true,
1073
- 43354 => true,
1074
- 43355 => true,
1075
- 43356 => true,
1076
- 43357 => true,
1077
- 43358 => true,
1078
- 43389 => true,
1079
- 43390 => true,
1080
- 43391 => true,
1081
- 43470 => true,
1082
- 43482 => true,
1083
- 43483 => true,
1084
- 43484 => true,
1085
- 43485 => true,
1086
- 43519 => true,
1087
- 43575 => true,
1088
- 43576 => true,
1089
- 43577 => true,
1090
- 43578 => true,
1091
- 43579 => true,
1092
- 43580 => true,
1093
- 43581 => true,
1094
- 43582 => true,
1095
- 43583 => true,
1096
- 43598 => true,
1097
- 43599 => true,
1098
- 43610 => true,
1099
- 43611 => true,
1100
- 43715 => true,
1101
- 43716 => true,
1102
- 43717 => true,
1103
- 43718 => true,
1104
- 43719 => true,
1105
- 43720 => true,
1106
- 43721 => true,
1107
- 43722 => true,
1108
- 43723 => true,
1109
- 43724 => true,
1110
- 43725 => true,
1111
- 43726 => true,
1112
- 43727 => true,
1113
- 43728 => true,
1114
- 43729 => true,
1115
- 43730 => true,
1116
- 43731 => true,
1117
- 43732 => true,
1118
- 43733 => true,
1119
- 43734 => true,
1120
- 43735 => true,
1121
- 43736 => true,
1122
- 43737 => true,
1123
- 43738 => true,
1124
- 43767 => true,
1125
- 43768 => true,
1126
- 43769 => true,
1127
- 43770 => true,
1128
- 43771 => true,
1129
- 43772 => true,
1130
- 43773 => true,
1131
- 43774 => true,
1132
- 43775 => true,
1133
- 43776 => true,
1134
- 43783 => true,
1135
- 43784 => true,
1136
- 43791 => true,
1137
- 43792 => true,
1138
- 43799 => true,
1139
- 43800 => true,
1140
- 43801 => true,
1141
- 43802 => true,
1142
- 43803 => true,
1143
- 43804 => true,
1144
- 43805 => true,
1145
- 43806 => true,
1146
- 43807 => true,
1147
- 43815 => true,
1148
- 43823 => true,
1149
- 43884 => true,
1150
- 43885 => true,
1151
- 43886 => true,
1152
- 43887 => true,
1153
- 44014 => true,
1154
- 44015 => true,
1155
- 44026 => true,
1156
- 44027 => true,
1157
- 44028 => true,
1158
- 44029 => true,
1159
- 44030 => true,
1160
- 44031 => true,
1161
- 55204 => true,
1162
- 55205 => true,
1163
- 55206 => true,
1164
- 55207 => true,
1165
- 55208 => true,
1166
- 55209 => true,
1167
- 55210 => true,
1168
- 55211 => true,
1169
- 55212 => true,
1170
- 55213 => true,
1171
- 55214 => true,
1172
- 55215 => true,
1173
- 55239 => true,
1174
- 55240 => true,
1175
- 55241 => true,
1176
- 55242 => true,
1177
- 55292 => true,
1178
- 55293 => true,
1179
- 55294 => true,
1180
- 55295 => true,
1181
- 64110 => true,
1182
- 64111 => true,
1183
- 64263 => true,
1184
- 64264 => true,
1185
- 64265 => true,
1186
- 64266 => true,
1187
- 64267 => true,
1188
- 64268 => true,
1189
- 64269 => true,
1190
- 64270 => true,
1191
- 64271 => true,
1192
- 64272 => true,
1193
- 64273 => true,
1194
- 64274 => true,
1195
- 64280 => true,
1196
- 64281 => true,
1197
- 64282 => true,
1198
- 64283 => true,
1199
- 64284 => true,
1200
- 64311 => true,
1201
- 64317 => true,
1202
- 64319 => true,
1203
- 64322 => true,
1204
- 64325 => true,
1205
- 64450 => true,
1206
- 64451 => true,
1207
- 64452 => true,
1208
- 64453 => true,
1209
- 64454 => true,
1210
- 64455 => true,
1211
- 64456 => true,
1212
- 64457 => true,
1213
- 64458 => true,
1214
- 64459 => true,
1215
- 64460 => true,
1216
- 64461 => true,
1217
- 64462 => true,
1218
- 64463 => true,
1219
- 64464 => true,
1220
- 64465 => true,
1221
- 64466 => true,
1222
- 64832 => true,
1223
- 64833 => true,
1224
- 64834 => true,
1225
- 64835 => true,
1226
- 64836 => true,
1227
- 64837 => true,
1228
- 64838 => true,
1229
- 64839 => true,
1230
- 64840 => true,
1231
- 64841 => true,
1232
- 64842 => true,
1233
- 64843 => true,
1234
- 64844 => true,
1235
- 64845 => true,
1236
- 64846 => true,
1237
- 64847 => true,
1238
- 64912 => true,
1239
- 64913 => true,
1240
- 64968 => true,
1241
- 64969 => true,
1242
- 64970 => true,
1243
- 64971 => true,
1244
- 64972 => true,
1245
- 64973 => true,
1246
- 64974 => true,
1247
- 64975 => true,
1248
- 65022 => true,
1249
- 65023 => true,
1250
- 65042 => true,
1251
- 65049 => true,
1252
- 65050 => true,
1253
- 65051 => true,
1254
- 65052 => true,
1255
- 65053 => true,
1256
- 65054 => true,
1257
- 65055 => true,
1258
- 65072 => true,
1259
- 65106 => true,
1260
- 65107 => true,
1261
- 65127 => true,
1262
- 65132 => true,
1263
- 65133 => true,
1264
- 65134 => true,
1265
- 65135 => true,
1266
- 65141 => true,
1267
- 65277 => true,
1268
- 65278 => true,
1269
- 65280 => true,
1270
- 65440 => true,
1271
- 65471 => true,
1272
- 65472 => true,
1273
- 65473 => true,
1274
- 65480 => true,
1275
- 65481 => true,
1276
- 65488 => true,
1277
- 65489 => true,
1278
- 65496 => true,
1279
- 65497 => true,
1280
- 65501 => true,
1281
- 65502 => true,
1282
- 65503 => true,
1283
- 65511 => true,
1284
- 65519 => true,
1285
- 65520 => true,
1286
- 65521 => true,
1287
- 65522 => true,
1288
- 65523 => true,
1289
- 65524 => true,
1290
- 65525 => true,
1291
- 65526 => true,
1292
- 65527 => true,
1293
- 65528 => true,
1294
- 65529 => true,
1295
- 65530 => true,
1296
- 65531 => true,
1297
- 65532 => true,
1298
- 65533 => true,
1299
- 65534 => true,
1300
- 65535 => true,
1301
- 65548 => true,
1302
- 65575 => true,
1303
- 65595 => true,
1304
- 65598 => true,
1305
- 65614 => true,
1306
- 65615 => true,
1307
- 65787 => true,
1308
- 65788 => true,
1309
- 65789 => true,
1310
- 65790 => true,
1311
- 65791 => true,
1312
- 65795 => true,
1313
- 65796 => true,
1314
- 65797 => true,
1315
- 65798 => true,
1316
- 65844 => true,
1317
- 65845 => true,
1318
- 65846 => true,
1319
- 65935 => true,
1320
- 65949 => true,
1321
- 65950 => true,
1322
- 65951 => true,
1323
- 66205 => true,
1324
- 66206 => true,
1325
- 66207 => true,
1326
- 66257 => true,
1327
- 66258 => true,
1328
- 66259 => true,
1329
- 66260 => true,
1330
- 66261 => true,
1331
- 66262 => true,
1332
- 66263 => true,
1333
- 66264 => true,
1334
- 66265 => true,
1335
- 66266 => true,
1336
- 66267 => true,
1337
- 66268 => true,
1338
- 66269 => true,
1339
- 66270 => true,
1340
- 66271 => true,
1341
- 66300 => true,
1342
- 66301 => true,
1343
- 66302 => true,
1344
- 66303 => true,
1345
- 66340 => true,
1346
- 66341 => true,
1347
- 66342 => true,
1348
- 66343 => true,
1349
- 66344 => true,
1350
- 66345 => true,
1351
- 66346 => true,
1352
- 66347 => true,
1353
- 66348 => true,
1354
- 66379 => true,
1355
- 66380 => true,
1356
- 66381 => true,
1357
- 66382 => true,
1358
- 66383 => true,
1359
- 66427 => true,
1360
- 66428 => true,
1361
- 66429 => true,
1362
- 66430 => true,
1363
- 66431 => true,
1364
- 66462 => true,
1365
- 66500 => true,
1366
- 66501 => true,
1367
- 66502 => true,
1368
- 66503 => true,
1369
- 66718 => true,
1370
- 66719 => true,
1371
- 66730 => true,
1372
- 66731 => true,
1373
- 66732 => true,
1374
- 66733 => true,
1375
- 66734 => true,
1376
- 66735 => true,
1377
- 66772 => true,
1378
- 66773 => true,
1379
- 66774 => true,
1380
- 66775 => true,
1381
- 66812 => true,
1382
- 66813 => true,
1383
- 66814 => true,
1384
- 66815 => true,
1385
- 66856 => true,
1386
- 66857 => true,
1387
- 66858 => true,
1388
- 66859 => true,
1389
- 66860 => true,
1390
- 66861 => true,
1391
- 66862 => true,
1392
- 66863 => true,
1393
- 66916 => true,
1394
- 66917 => true,
1395
- 66918 => true,
1396
- 66919 => true,
1397
- 66920 => true,
1398
- 66921 => true,
1399
- 66922 => true,
1400
- 66923 => true,
1401
- 66924 => true,
1402
- 66925 => true,
1403
- 66926 => true,
1404
- 67383 => true,
1405
- 67384 => true,
1406
- 67385 => true,
1407
- 67386 => true,
1408
- 67387 => true,
1409
- 67388 => true,
1410
- 67389 => true,
1411
- 67390 => true,
1412
- 67391 => true,
1413
- 67414 => true,
1414
- 67415 => true,
1415
- 67416 => true,
1416
- 67417 => true,
1417
- 67418 => true,
1418
- 67419 => true,
1419
- 67420 => true,
1420
- 67421 => true,
1421
- 67422 => true,
1422
- 67423 => true,
1423
- 67590 => true,
1424
- 67591 => true,
1425
- 67593 => true,
1426
- 67638 => true,
1427
- 67641 => true,
1428
- 67642 => true,
1429
- 67643 => true,
1430
- 67645 => true,
1431
- 67646 => true,
1432
- 67670 => true,
1433
- 67743 => true,
1434
- 67744 => true,
1435
- 67745 => true,
1436
- 67746 => true,
1437
- 67747 => true,
1438
- 67748 => true,
1439
- 67749 => true,
1440
- 67750 => true,
1441
- 67827 => true,
1442
- 67830 => true,
1443
- 67831 => true,
1444
- 67832 => true,
1445
- 67833 => true,
1446
- 67834 => true,
1447
- 67868 => true,
1448
- 67869 => true,
1449
- 67870 => true,
1450
- 67898 => true,
1451
- 67899 => true,
1452
- 67900 => true,
1453
- 67901 => true,
1454
- 67902 => true,
1455
- 68024 => true,
1456
- 68025 => true,
1457
- 68026 => true,
1458
- 68027 => true,
1459
- 68048 => true,
1460
- 68049 => true,
1461
- 68100 => true,
1462
- 68103 => true,
1463
- 68104 => true,
1464
- 68105 => true,
1465
- 68106 => true,
1466
- 68107 => true,
1467
- 68116 => true,
1468
- 68120 => true,
1469
- 68150 => true,
1470
- 68151 => true,
1471
- 68155 => true,
1472
- 68156 => true,
1473
- 68157 => true,
1474
- 68158 => true,
1475
- 68169 => true,
1476
- 68170 => true,
1477
- 68171 => true,
1478
- 68172 => true,
1479
- 68173 => true,
1480
- 68174 => true,
1481
- 68175 => true,
1482
- 68185 => true,
1483
- 68186 => true,
1484
- 68187 => true,
1485
- 68188 => true,
1486
- 68189 => true,
1487
- 68190 => true,
1488
- 68191 => true,
1489
- 68327 => true,
1490
- 68328 => true,
1491
- 68329 => true,
1492
- 68330 => true,
1493
- 68343 => true,
1494
- 68344 => true,
1495
- 68345 => true,
1496
- 68346 => true,
1497
- 68347 => true,
1498
- 68348 => true,
1499
- 68349 => true,
1500
- 68350 => true,
1501
- 68351 => true,
1502
- 68406 => true,
1503
- 68407 => true,
1504
- 68408 => true,
1505
- 68438 => true,
1506
- 68439 => true,
1507
- 68467 => true,
1508
- 68468 => true,
1509
- 68469 => true,
1510
- 68470 => true,
1511
- 68471 => true,
1512
- 68498 => true,
1513
- 68499 => true,
1514
- 68500 => true,
1515
- 68501 => true,
1516
- 68502 => true,
1517
- 68503 => true,
1518
- 68504 => true,
1519
- 68509 => true,
1520
- 68510 => true,
1521
- 68511 => true,
1522
- 68512 => true,
1523
- 68513 => true,
1524
- 68514 => true,
1525
- 68515 => true,
1526
- 68516 => true,
1527
- 68517 => true,
1528
- 68518 => true,
1529
- 68519 => true,
1530
- 68520 => true,
1531
- 68787 => true,
1532
- 68788 => true,
1533
- 68789 => true,
1534
- 68790 => true,
1535
- 68791 => true,
1536
- 68792 => true,
1537
- 68793 => true,
1538
- 68794 => true,
1539
- 68795 => true,
1540
- 68796 => true,
1541
- 68797 => true,
1542
- 68798 => true,
1543
- 68799 => true,
1544
- 68851 => true,
1545
- 68852 => true,
1546
- 68853 => true,
1547
- 68854 => true,
1548
- 68855 => true,
1549
- 68856 => true,
1550
- 68857 => true,
1551
- 68904 => true,
1552
- 68905 => true,
1553
- 68906 => true,
1554
- 68907 => true,
1555
- 68908 => true,
1556
- 68909 => true,
1557
- 68910 => true,
1558
- 68911 => true,
1559
- 69247 => true,
1560
- 69290 => true,
1561
- 69294 => true,
1562
- 69295 => true,
1563
- 69416 => true,
1564
- 69417 => true,
1565
- 69418 => true,
1566
- 69419 => true,
1567
- 69420 => true,
1568
- 69421 => true,
1569
- 69422 => true,
1570
- 69423 => true,
1571
- 69580 => true,
1572
- 69581 => true,
1573
- 69582 => true,
1574
- 69583 => true,
1575
- 69584 => true,
1576
- 69585 => true,
1577
- 69586 => true,
1578
- 69587 => true,
1579
- 69588 => true,
1580
- 69589 => true,
1581
- 69590 => true,
1582
- 69591 => true,
1583
- 69592 => true,
1584
- 69593 => true,
1585
- 69594 => true,
1586
- 69595 => true,
1587
- 69596 => true,
1588
- 69597 => true,
1589
- 69598 => true,
1590
- 69599 => true,
1591
- 69623 => true,
1592
- 69624 => true,
1593
- 69625 => true,
1594
- 69626 => true,
1595
- 69627 => true,
1596
- 69628 => true,
1597
- 69629 => true,
1598
- 69630 => true,
1599
- 69631 => true,
1600
- 69710 => true,
1601
- 69711 => true,
1602
- 69712 => true,
1603
- 69713 => true,
1604
- 69744 => true,
1605
- 69745 => true,
1606
- 69746 => true,
1607
- 69747 => true,
1608
- 69748 => true,
1609
- 69749 => true,
1610
- 69750 => true,
1611
- 69751 => true,
1612
- 69752 => true,
1613
- 69753 => true,
1614
- 69754 => true,
1615
- 69755 => true,
1616
- 69756 => true,
1617
- 69757 => true,
1618
- 69758 => true,
1619
- 69821 => true,
1620
- 69826 => true,
1621
- 69827 => true,
1622
- 69828 => true,
1623
- 69829 => true,
1624
- 69830 => true,
1625
- 69831 => true,
1626
- 69832 => true,
1627
- 69833 => true,
1628
- 69834 => true,
1629
- 69835 => true,
1630
- 69836 => true,
1631
- 69837 => true,
1632
- 69838 => true,
1633
- 69839 => true,
1634
- 69865 => true,
1635
- 69866 => true,
1636
- 69867 => true,
1637
- 69868 => true,
1638
- 69869 => true,
1639
- 69870 => true,
1640
- 69871 => true,
1641
- 69882 => true,
1642
- 69883 => true,
1643
- 69884 => true,
1644
- 69885 => true,
1645
- 69886 => true,
1646
- 69887 => true,
1647
- 69941 => true,
1648
- 69960 => true,
1649
- 69961 => true,
1650
- 69962 => true,
1651
- 69963 => true,
1652
- 69964 => true,
1653
- 69965 => true,
1654
- 69966 => true,
1655
- 69967 => true,
1656
- 70007 => true,
1657
- 70008 => true,
1658
- 70009 => true,
1659
- 70010 => true,
1660
- 70011 => true,
1661
- 70012 => true,
1662
- 70013 => true,
1663
- 70014 => true,
1664
- 70015 => true,
1665
- 70112 => true,
1666
- 70133 => true,
1667
- 70134 => true,
1668
- 70135 => true,
1669
- 70136 => true,
1670
- 70137 => true,
1671
- 70138 => true,
1672
- 70139 => true,
1673
- 70140 => true,
1674
- 70141 => true,
1675
- 70142 => true,
1676
- 70143 => true,
1677
- 70162 => true,
1678
- 70279 => true,
1679
- 70281 => true,
1680
- 70286 => true,
1681
- 70302 => true,
1682
- 70314 => true,
1683
- 70315 => true,
1684
- 70316 => true,
1685
- 70317 => true,
1686
- 70318 => true,
1687
- 70319 => true,
1688
- 70379 => true,
1689
- 70380 => true,
1690
- 70381 => true,
1691
- 70382 => true,
1692
- 70383 => true,
1693
- 70394 => true,
1694
- 70395 => true,
1695
- 70396 => true,
1696
- 70397 => true,
1697
- 70398 => true,
1698
- 70399 => true,
1699
- 70404 => true,
1700
- 70413 => true,
1701
- 70414 => true,
1702
- 70417 => true,
1703
- 70418 => true,
1704
- 70441 => true,
1705
- 70449 => true,
1706
- 70452 => true,
1707
- 70458 => true,
1708
- 70469 => true,
1709
- 70470 => true,
1710
- 70473 => true,
1711
- 70474 => true,
1712
- 70478 => true,
1713
- 70479 => true,
1714
- 70481 => true,
1715
- 70482 => true,
1716
- 70483 => true,
1717
- 70484 => true,
1718
- 70485 => true,
1719
- 70486 => true,
1720
- 70488 => true,
1721
- 70489 => true,
1722
- 70490 => true,
1723
- 70491 => true,
1724
- 70492 => true,
1725
- 70500 => true,
1726
- 70501 => true,
1727
- 70509 => true,
1728
- 70510 => true,
1729
- 70511 => true,
1730
- 70748 => true,
1731
- 70754 => true,
1732
- 70755 => true,
1733
- 70756 => true,
1734
- 70757 => true,
1735
- 70758 => true,
1736
- 70759 => true,
1737
- 70760 => true,
1738
- 70761 => true,
1739
- 70762 => true,
1740
- 70763 => true,
1741
- 70764 => true,
1742
- 70765 => true,
1743
- 70766 => true,
1744
- 70767 => true,
1745
- 70768 => true,
1746
- 70769 => true,
1747
- 70770 => true,
1748
- 70771 => true,
1749
- 70772 => true,
1750
- 70773 => true,
1751
- 70774 => true,
1752
- 70775 => true,
1753
- 70776 => true,
1754
- 70777 => true,
1755
- 70778 => true,
1756
- 70779 => true,
1757
- 70780 => true,
1758
- 70781 => true,
1759
- 70782 => true,
1760
- 70783 => true,
1761
- 70856 => true,
1762
- 70857 => true,
1763
- 70858 => true,
1764
- 70859 => true,
1765
- 70860 => true,
1766
- 70861 => true,
1767
- 70862 => true,
1768
- 70863 => true,
1769
- 71094 => true,
1770
- 71095 => true,
1771
- 71237 => true,
1772
- 71238 => true,
1773
- 71239 => true,
1774
- 71240 => true,
1775
- 71241 => true,
1776
- 71242 => true,
1777
- 71243 => true,
1778
- 71244 => true,
1779
- 71245 => true,
1780
- 71246 => true,
1781
- 71247 => true,
1782
- 71258 => true,
1783
- 71259 => true,
1784
- 71260 => true,
1785
- 71261 => true,
1786
- 71262 => true,
1787
- 71263 => true,
1788
- 71277 => true,
1789
- 71278 => true,
1790
- 71279 => true,
1791
- 71280 => true,
1792
- 71281 => true,
1793
- 71282 => true,
1794
- 71283 => true,
1795
- 71284 => true,
1796
- 71285 => true,
1797
- 71286 => true,
1798
- 71287 => true,
1799
- 71288 => true,
1800
- 71289 => true,
1801
- 71290 => true,
1802
- 71291 => true,
1803
- 71292 => true,
1804
- 71293 => true,
1805
- 71294 => true,
1806
- 71295 => true,
1807
- 71353 => true,
1808
- 71354 => true,
1809
- 71355 => true,
1810
- 71356 => true,
1811
- 71357 => true,
1812
- 71358 => true,
1813
- 71359 => true,
1814
- 71451 => true,
1815
- 71452 => true,
1816
- 71468 => true,
1817
- 71469 => true,
1818
- 71470 => true,
1819
- 71471 => true,
1820
- 71923 => true,
1821
- 71924 => true,
1822
- 71925 => true,
1823
- 71926 => true,
1824
- 71927 => true,
1825
- 71928 => true,
1826
- 71929 => true,
1827
- 71930 => true,
1828
- 71931 => true,
1829
- 71932 => true,
1830
- 71933 => true,
1831
- 71934 => true,
1832
- 71943 => true,
1833
- 71944 => true,
1834
- 71946 => true,
1835
- 71947 => true,
1836
- 71956 => true,
1837
- 71959 => true,
1838
- 71990 => true,
1839
- 71993 => true,
1840
- 71994 => true,
1841
- 72007 => true,
1842
- 72008 => true,
1843
- 72009 => true,
1844
- 72010 => true,
1845
- 72011 => true,
1846
- 72012 => true,
1847
- 72013 => true,
1848
- 72014 => true,
1849
- 72015 => true,
1850
- 72104 => true,
1851
- 72105 => true,
1852
- 72152 => true,
1853
- 72153 => true,
1854
- 72165 => true,
1855
- 72166 => true,
1856
- 72167 => true,
1857
- 72168 => true,
1858
- 72169 => true,
1859
- 72170 => true,
1860
- 72171 => true,
1861
- 72172 => true,
1862
- 72173 => true,
1863
- 72174 => true,
1864
- 72175 => true,
1865
- 72176 => true,
1866
- 72177 => true,
1867
- 72178 => true,
1868
- 72179 => true,
1869
- 72180 => true,
1870
- 72181 => true,
1871
- 72182 => true,
1872
- 72183 => true,
1873
- 72184 => true,
1874
- 72185 => true,
1875
- 72186 => true,
1876
- 72187 => true,
1877
- 72188 => true,
1878
- 72189 => true,
1879
- 72190 => true,
1880
- 72191 => true,
1881
- 72264 => true,
1882
- 72265 => true,
1883
- 72266 => true,
1884
- 72267 => true,
1885
- 72268 => true,
1886
- 72269 => true,
1887
- 72270 => true,
1888
- 72271 => true,
1889
- 72355 => true,
1890
- 72356 => true,
1891
- 72357 => true,
1892
- 72358 => true,
1893
- 72359 => true,
1894
- 72360 => true,
1895
- 72361 => true,
1896
- 72362 => true,
1897
- 72363 => true,
1898
- 72364 => true,
1899
- 72365 => true,
1900
- 72366 => true,
1901
- 72367 => true,
1902
- 72368 => true,
1903
- 72369 => true,
1904
- 72370 => true,
1905
- 72371 => true,
1906
- 72372 => true,
1907
- 72373 => true,
1908
- 72374 => true,
1909
- 72375 => true,
1910
- 72376 => true,
1911
- 72377 => true,
1912
- 72378 => true,
1913
- 72379 => true,
1914
- 72380 => true,
1915
- 72381 => true,
1916
- 72382 => true,
1917
- 72383 => true,
1918
- 72713 => true,
1919
- 72759 => true,
1920
- 72774 => true,
1921
- 72775 => true,
1922
- 72776 => true,
1923
- 72777 => true,
1924
- 72778 => true,
1925
- 72779 => true,
1926
- 72780 => true,
1927
- 72781 => true,
1928
- 72782 => true,
1929
- 72783 => true,
1930
- 72813 => true,
1931
- 72814 => true,
1932
- 72815 => true,
1933
- 72848 => true,
1934
- 72849 => true,
1935
- 72872 => true,
1936
- 72967 => true,
1937
- 72970 => true,
1938
- 73015 => true,
1939
- 73016 => true,
1940
- 73017 => true,
1941
- 73019 => true,
1942
- 73022 => true,
1943
- 73032 => true,
1944
- 73033 => true,
1945
- 73034 => true,
1946
- 73035 => true,
1947
- 73036 => true,
1948
- 73037 => true,
1949
- 73038 => true,
1950
- 73039 => true,
1951
- 73050 => true,
1952
- 73051 => true,
1953
- 73052 => true,
1954
- 73053 => true,
1955
- 73054 => true,
1956
- 73055 => true,
1957
- 73062 => true,
1958
- 73065 => true,
1959
- 73103 => true,
1960
- 73106 => true,
1961
- 73113 => true,
1962
- 73114 => true,
1963
- 73115 => true,
1964
- 73116 => true,
1965
- 73117 => true,
1966
- 73118 => true,
1967
- 73119 => true,
1968
- 73649 => true,
1969
- 73650 => true,
1970
- 73651 => true,
1971
- 73652 => true,
1972
- 73653 => true,
1973
- 73654 => true,
1974
- 73655 => true,
1975
- 73656 => true,
1976
- 73657 => true,
1977
- 73658 => true,
1978
- 73659 => true,
1979
- 73660 => true,
1980
- 73661 => true,
1981
- 73662 => true,
1982
- 73663 => true,
1983
- 73714 => true,
1984
- 73715 => true,
1985
- 73716 => true,
1986
- 73717 => true,
1987
- 73718 => true,
1988
- 73719 => true,
1989
- 73720 => true,
1990
- 73721 => true,
1991
- 73722 => true,
1992
- 73723 => true,
1993
- 73724 => true,
1994
- 73725 => true,
1995
- 73726 => true,
1996
- 74863 => true,
1997
- 74869 => true,
1998
- 74870 => true,
1999
- 74871 => true,
2000
- 74872 => true,
2001
- 74873 => true,
2002
- 74874 => true,
2003
- 74875 => true,
2004
- 74876 => true,
2005
- 74877 => true,
2006
- 74878 => true,
2007
- 74879 => true,
2008
- 78895 => true,
2009
- 78896 => true,
2010
- 78897 => true,
2011
- 78898 => true,
2012
- 78899 => true,
2013
- 78900 => true,
2014
- 78901 => true,
2015
- 78902 => true,
2016
- 78903 => true,
2017
- 78904 => true,
2018
- 92729 => true,
2019
- 92730 => true,
2020
- 92731 => true,
2021
- 92732 => true,
2022
- 92733 => true,
2023
- 92734 => true,
2024
- 92735 => true,
2025
- 92767 => true,
2026
- 92778 => true,
2027
- 92779 => true,
2028
- 92780 => true,
2029
- 92781 => true,
2030
- 92910 => true,
2031
- 92911 => true,
2032
- 92918 => true,
2033
- 92919 => true,
2034
- 92920 => true,
2035
- 92921 => true,
2036
- 92922 => true,
2037
- 92923 => true,
2038
- 92924 => true,
2039
- 92925 => true,
2040
- 92926 => true,
2041
- 92927 => true,
2042
- 92998 => true,
2043
- 92999 => true,
2044
- 93000 => true,
2045
- 93001 => true,
2046
- 93002 => true,
2047
- 93003 => true,
2048
- 93004 => true,
2049
- 93005 => true,
2050
- 93006 => true,
2051
- 93007 => true,
2052
- 93018 => true,
2053
- 93026 => true,
2054
- 93048 => true,
2055
- 93049 => true,
2056
- 93050 => true,
2057
- 93051 => true,
2058
- 93052 => true,
2059
- 94027 => true,
2060
- 94028 => true,
2061
- 94029 => true,
2062
- 94030 => true,
2063
- 94088 => true,
2064
- 94089 => true,
2065
- 94090 => true,
2066
- 94091 => true,
2067
- 94092 => true,
2068
- 94093 => true,
2069
- 94094 => true,
2070
- 94181 => true,
2071
- 94182 => true,
2072
- 94183 => true,
2073
- 94184 => true,
2074
- 94185 => true,
2075
- 94186 => true,
2076
- 94187 => true,
2077
- 94188 => true,
2078
- 94189 => true,
2079
- 94190 => true,
2080
- 94191 => true,
2081
- 94194 => true,
2082
- 94195 => true,
2083
- 94196 => true,
2084
- 94197 => true,
2085
- 94198 => true,
2086
- 94199 => true,
2087
- 94200 => true,
2088
- 94201 => true,
2089
- 94202 => true,
2090
- 94203 => true,
2091
- 94204 => true,
2092
- 94205 => true,
2093
- 94206 => true,
2094
- 94207 => true,
2095
- 100344 => true,
2096
- 100345 => true,
2097
- 100346 => true,
2098
- 100347 => true,
2099
- 100348 => true,
2100
- 100349 => true,
2101
- 100350 => true,
2102
- 100351 => true,
2103
- 110931 => true,
2104
- 110932 => true,
2105
- 110933 => true,
2106
- 110934 => true,
2107
- 110935 => true,
2108
- 110936 => true,
2109
- 110937 => true,
2110
- 110938 => true,
2111
- 110939 => true,
2112
- 110940 => true,
2113
- 110941 => true,
2114
- 110942 => true,
2115
- 110943 => true,
2116
- 110944 => true,
2117
- 110945 => true,
2118
- 110946 => true,
2119
- 110947 => true,
2120
- 110952 => true,
2121
- 110953 => true,
2122
- 110954 => true,
2123
- 110955 => true,
2124
- 110956 => true,
2125
- 110957 => true,
2126
- 110958 => true,
2127
- 110959 => true,
2128
- 113771 => true,
2129
- 113772 => true,
2130
- 113773 => true,
2131
- 113774 => true,
2132
- 113775 => true,
2133
- 113789 => true,
2134
- 113790 => true,
2135
- 113791 => true,
2136
- 113801 => true,
2137
- 113802 => true,
2138
- 113803 => true,
2139
- 113804 => true,
2140
- 113805 => true,
2141
- 113806 => true,
2142
- 113807 => true,
2143
- 113818 => true,
2144
- 113819 => true,
2145
- 119030 => true,
2146
- 119031 => true,
2147
- 119032 => true,
2148
- 119033 => true,
2149
- 119034 => true,
2150
- 119035 => true,
2151
- 119036 => true,
2152
- 119037 => true,
2153
- 119038 => true,
2154
- 119039 => true,
2155
- 119079 => true,
2156
- 119080 => true,
2157
- 119155 => true,
2158
- 119156 => true,
2159
- 119157 => true,
2160
- 119158 => true,
2161
- 119159 => true,
2162
- 119160 => true,
2163
- 119161 => true,
2164
- 119162 => true,
2165
- 119273 => true,
2166
- 119274 => true,
2167
- 119275 => true,
2168
- 119276 => true,
2169
- 119277 => true,
2170
- 119278 => true,
2171
- 119279 => true,
2172
- 119280 => true,
2173
- 119281 => true,
2174
- 119282 => true,
2175
- 119283 => true,
2176
- 119284 => true,
2177
- 119285 => true,
2178
- 119286 => true,
2179
- 119287 => true,
2180
- 119288 => true,
2181
- 119289 => true,
2182
- 119290 => true,
2183
- 119291 => true,
2184
- 119292 => true,
2185
- 119293 => true,
2186
- 119294 => true,
2187
- 119295 => true,
2188
- 119540 => true,
2189
- 119541 => true,
2190
- 119542 => true,
2191
- 119543 => true,
2192
- 119544 => true,
2193
- 119545 => true,
2194
- 119546 => true,
2195
- 119547 => true,
2196
- 119548 => true,
2197
- 119549 => true,
2198
- 119550 => true,
2199
- 119551 => true,
2200
- 119639 => true,
2201
- 119640 => true,
2202
- 119641 => true,
2203
- 119642 => true,
2204
- 119643 => true,
2205
- 119644 => true,
2206
- 119645 => true,
2207
- 119646 => true,
2208
- 119647 => true,
2209
- 119893 => true,
2210
- 119965 => true,
2211
- 119968 => true,
2212
- 119969 => true,
2213
- 119971 => true,
2214
- 119972 => true,
2215
- 119975 => true,
2216
- 119976 => true,
2217
- 119981 => true,
2218
- 119994 => true,
2219
- 119996 => true,
2220
- 120004 => true,
2221
- 120070 => true,
2222
- 120075 => true,
2223
- 120076 => true,
2224
- 120085 => true,
2225
- 120093 => true,
2226
- 120122 => true,
2227
- 120127 => true,
2228
- 120133 => true,
2229
- 120135 => true,
2230
- 120136 => true,
2231
- 120137 => true,
2232
- 120145 => true,
2233
- 120486 => true,
2234
- 120487 => true,
2235
- 120780 => true,
2236
- 120781 => true,
2237
- 121484 => true,
2238
- 121485 => true,
2239
- 121486 => true,
2240
- 121487 => true,
2241
- 121488 => true,
2242
- 121489 => true,
2243
- 121490 => true,
2244
- 121491 => true,
2245
- 121492 => true,
2246
- 121493 => true,
2247
- 121494 => true,
2248
- 121495 => true,
2249
- 121496 => true,
2250
- 121497 => true,
2251
- 121498 => true,
2252
- 121504 => true,
2253
- 122887 => true,
2254
- 122905 => true,
2255
- 122906 => true,
2256
- 122914 => true,
2257
- 122917 => true,
2258
- 123181 => true,
2259
- 123182 => true,
2260
- 123183 => true,
2261
- 123198 => true,
2262
- 123199 => true,
2263
- 123210 => true,
2264
- 123211 => true,
2265
- 123212 => true,
2266
- 123213 => true,
2267
- 123642 => true,
2268
- 123643 => true,
2269
- 123644 => true,
2270
- 123645 => true,
2271
- 123646 => true,
2272
- 125125 => true,
2273
- 125126 => true,
2274
- 125260 => true,
2275
- 125261 => true,
2276
- 125262 => true,
2277
- 125263 => true,
2278
- 125274 => true,
2279
- 125275 => true,
2280
- 125276 => true,
2281
- 125277 => true,
2282
- 126468 => true,
2283
- 126496 => true,
2284
- 126499 => true,
2285
- 126501 => true,
2286
- 126502 => true,
2287
- 126504 => true,
2288
- 126515 => true,
2289
- 126520 => true,
2290
- 126522 => true,
2291
- 126524 => true,
2292
- 126525 => true,
2293
- 126526 => true,
2294
- 126527 => true,
2295
- 126528 => true,
2296
- 126529 => true,
2297
- 126531 => true,
2298
- 126532 => true,
2299
- 126533 => true,
2300
- 126534 => true,
2301
- 126536 => true,
2302
- 126538 => true,
2303
- 126540 => true,
2304
- 126544 => true,
2305
- 126547 => true,
2306
- 126549 => true,
2307
- 126550 => true,
2308
- 126552 => true,
2309
- 126554 => true,
2310
- 126556 => true,
2311
- 126558 => true,
2312
- 126560 => true,
2313
- 126563 => true,
2314
- 126565 => true,
2315
- 126566 => true,
2316
- 126571 => true,
2317
- 126579 => true,
2318
- 126584 => true,
2319
- 126589 => true,
2320
- 126591 => true,
2321
- 126602 => true,
2322
- 126620 => true,
2323
- 126621 => true,
2324
- 126622 => true,
2325
- 126623 => true,
2326
- 126624 => true,
2327
- 126628 => true,
2328
- 126634 => true,
2329
- 127020 => true,
2330
- 127021 => true,
2331
- 127022 => true,
2332
- 127023 => true,
2333
- 127124 => true,
2334
- 127125 => true,
2335
- 127126 => true,
2336
- 127127 => true,
2337
- 127128 => true,
2338
- 127129 => true,
2339
- 127130 => true,
2340
- 127131 => true,
2341
- 127132 => true,
2342
- 127133 => true,
2343
- 127134 => true,
2344
- 127135 => true,
2345
- 127151 => true,
2346
- 127152 => true,
2347
- 127168 => true,
2348
- 127184 => true,
2349
- 127222 => true,
2350
- 127223 => true,
2351
- 127224 => true,
2352
- 127225 => true,
2353
- 127226 => true,
2354
- 127227 => true,
2355
- 127228 => true,
2356
- 127229 => true,
2357
- 127230 => true,
2358
- 127231 => true,
2359
- 127232 => true,
2360
- 127491 => true,
2361
- 127492 => true,
2362
- 127493 => true,
2363
- 127494 => true,
2364
- 127495 => true,
2365
- 127496 => true,
2366
- 127497 => true,
2367
- 127498 => true,
2368
- 127499 => true,
2369
- 127500 => true,
2370
- 127501 => true,
2371
- 127502 => true,
2372
- 127503 => true,
2373
- 127548 => true,
2374
- 127549 => true,
2375
- 127550 => true,
2376
- 127551 => true,
2377
- 127561 => true,
2378
- 127562 => true,
2379
- 127563 => true,
2380
- 127564 => true,
2381
- 127565 => true,
2382
- 127566 => true,
2383
- 127567 => true,
2384
- 127570 => true,
2385
- 127571 => true,
2386
- 127572 => true,
2387
- 127573 => true,
2388
- 127574 => true,
2389
- 127575 => true,
2390
- 127576 => true,
2391
- 127577 => true,
2392
- 127578 => true,
2393
- 127579 => true,
2394
- 127580 => true,
2395
- 127581 => true,
2396
- 127582 => true,
2397
- 127583 => true,
2398
- 128728 => true,
2399
- 128729 => true,
2400
- 128730 => true,
2401
- 128731 => true,
2402
- 128732 => true,
2403
- 128733 => true,
2404
- 128734 => true,
2405
- 128735 => true,
2406
- 128749 => true,
2407
- 128750 => true,
2408
- 128751 => true,
2409
- 128765 => true,
2410
- 128766 => true,
2411
- 128767 => true,
2412
- 128884 => true,
2413
- 128885 => true,
2414
- 128886 => true,
2415
- 128887 => true,
2416
- 128888 => true,
2417
- 128889 => true,
2418
- 128890 => true,
2419
- 128891 => true,
2420
- 128892 => true,
2421
- 128893 => true,
2422
- 128894 => true,
2423
- 128895 => true,
2424
- 128985 => true,
2425
- 128986 => true,
2426
- 128987 => true,
2427
- 128988 => true,
2428
- 128989 => true,
2429
- 128990 => true,
2430
- 128991 => true,
2431
- 129004 => true,
2432
- 129005 => true,
2433
- 129006 => true,
2434
- 129007 => true,
2435
- 129008 => true,
2436
- 129009 => true,
2437
- 129010 => true,
2438
- 129011 => true,
2439
- 129012 => true,
2440
- 129013 => true,
2441
- 129014 => true,
2442
- 129015 => true,
2443
- 129016 => true,
2444
- 129017 => true,
2445
- 129018 => true,
2446
- 129019 => true,
2447
- 129020 => true,
2448
- 129021 => true,
2449
- 129022 => true,
2450
- 129023 => true,
2451
- 129036 => true,
2452
- 129037 => true,
2453
- 129038 => true,
2454
- 129039 => true,
2455
- 129096 => true,
2456
- 129097 => true,
2457
- 129098 => true,
2458
- 129099 => true,
2459
- 129100 => true,
2460
- 129101 => true,
2461
- 129102 => true,
2462
- 129103 => true,
2463
- 129114 => true,
2464
- 129115 => true,
2465
- 129116 => true,
2466
- 129117 => true,
2467
- 129118 => true,
2468
- 129119 => true,
2469
- 129160 => true,
2470
- 129161 => true,
2471
- 129162 => true,
2472
- 129163 => true,
2473
- 129164 => true,
2474
- 129165 => true,
2475
- 129166 => true,
2476
- 129167 => true,
2477
- 129198 => true,
2478
- 129199 => true,
2479
- 129401 => true,
2480
- 129484 => true,
2481
- 129620 => true,
2482
- 129621 => true,
2483
- 129622 => true,
2484
- 129623 => true,
2485
- 129624 => true,
2486
- 129625 => true,
2487
- 129626 => true,
2488
- 129627 => true,
2489
- 129628 => true,
2490
- 129629 => true,
2491
- 129630 => true,
2492
- 129631 => true,
2493
- 129646 => true,
2494
- 129647 => true,
2495
- 129653 => true,
2496
- 129654 => true,
2497
- 129655 => true,
2498
- 129659 => true,
2499
- 129660 => true,
2500
- 129661 => true,
2501
- 129662 => true,
2502
- 129663 => true,
2503
- 129671 => true,
2504
- 129672 => true,
2505
- 129673 => true,
2506
- 129674 => true,
2507
- 129675 => true,
2508
- 129676 => true,
2509
- 129677 => true,
2510
- 129678 => true,
2511
- 129679 => true,
2512
- 129705 => true,
2513
- 129706 => true,
2514
- 129707 => true,
2515
- 129708 => true,
2516
- 129709 => true,
2517
- 129710 => true,
2518
- 129711 => true,
2519
- 129719 => true,
2520
- 129720 => true,
2521
- 129721 => true,
2522
- 129722 => true,
2523
- 129723 => true,
2524
- 129724 => true,
2525
- 129725 => true,
2526
- 129726 => true,
2527
- 129727 => true,
2528
- 129731 => true,
2529
- 129732 => true,
2530
- 129733 => true,
2531
- 129734 => true,
2532
- 129735 => true,
2533
- 129736 => true,
2534
- 129737 => true,
2535
- 129738 => true,
2536
- 129739 => true,
2537
- 129740 => true,
2538
- 129741 => true,
2539
- 129742 => true,
2540
- 129743 => true,
2541
- 129939 => true,
2542
- 131070 => true,
2543
- 131071 => true,
2544
- 177973 => true,
2545
- 177974 => true,
2546
- 177975 => true,
2547
- 177976 => true,
2548
- 177977 => true,
2549
- 177978 => true,
2550
- 177979 => true,
2551
- 177980 => true,
2552
- 177981 => true,
2553
- 177982 => true,
2554
- 177983 => true,
2555
- 178206 => true,
2556
- 178207 => true,
2557
- 183970 => true,
2558
- 183971 => true,
2559
- 183972 => true,
2560
- 183973 => true,
2561
- 183974 => true,
2562
- 183975 => true,
2563
- 183976 => true,
2564
- 183977 => true,
2565
- 183978 => true,
2566
- 183979 => true,
2567
- 183980 => true,
2568
- 183981 => true,
2569
- 183982 => true,
2570
- 183983 => true,
2571
- 194664 => true,
2572
- 194676 => true,
2573
- 194847 => true,
2574
- 194911 => true,
2575
- 195007 => true,
2576
- 196606 => true,
2577
- 196607 => true,
2578
- 262142 => true,
2579
- 262143 => true,
2580
- 327678 => true,
2581
- 327679 => true,
2582
- 393214 => true,
2583
- 393215 => true,
2584
- 458750 => true,
2585
- 458751 => true,
2586
- 524286 => true,
2587
- 524287 => true,
2588
- 589822 => true,
2589
- 589823 => true,
2590
- 655358 => true,
2591
- 655359 => true,
2592
- 720894 => true,
2593
- 720895 => true,
2594
- 786430 => true,
2595
- 786431 => true,
2596
- 851966 => true,
2597
- 851967 => true,
2598
- 917502 => true,
2599
- 917503 => true,
2600
- 917504 => true,
2601
- 917505 => true,
2602
- 917506 => true,
2603
- 917507 => true,
2604
- 917508 => true,
2605
- 917509 => true,
2606
- 917510 => true,
2607
- 917511 => true,
2608
- 917512 => true,
2609
- 917513 => true,
2610
- 917514 => true,
2611
- 917515 => true,
2612
- 917516 => true,
2613
- 917517 => true,
2614
- 917518 => true,
2615
- 917519 => true,
2616
- 917520 => true,
2617
- 917521 => true,
2618
- 917522 => true,
2619
- 917523 => true,
2620
- 917524 => true,
2621
- 917525 => true,
2622
- 917526 => true,
2623
- 917527 => true,
2624
- 917528 => true,
2625
- 917529 => true,
2626
- 917530 => true,
2627
- 917531 => true,
2628
- 917532 => true,
2629
- 917533 => true,
2630
- 917534 => true,
2631
- 917535 => true,
2632
- 983038 => true,
2633
- 983039 => true,
2634
- 1048574 => true,
2635
- 1048575 => true,
2636
- 1114110 => true,
2637
- 1114111 => true,
2638
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_mapped.php DELETED
@@ -1,308 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 160 => ' ',
5
- 168 => ' ̈',
6
- 175 => ' ̄',
7
- 180 => ' ́',
8
- 184 => ' ̧',
9
- 728 => ' ̆',
10
- 729 => ' ̇',
11
- 730 => ' ̊',
12
- 731 => ' ̨',
13
- 732 => ' ̃',
14
- 733 => ' ̋',
15
- 890 => ' ι',
16
- 894 => ';',
17
- 900 => ' ́',
18
- 901 => ' ̈́',
19
- 8125 => ' ̓',
20
- 8127 => ' ̓',
21
- 8128 => ' ͂',
22
- 8129 => ' ̈͂',
23
- 8141 => ' ̓̀',
24
- 8142 => ' ̓́',
25
- 8143 => ' ̓͂',
26
- 8157 => ' ̔̀',
27
- 8158 => ' ̔́',
28
- 8159 => ' ̔͂',
29
- 8173 => ' ̈̀',
30
- 8174 => ' ̈́',
31
- 8175 => '`',
32
- 8189 => ' ́',
33
- 8190 => ' ̔',
34
- 8192 => ' ',
35
- 8193 => ' ',
36
- 8194 => ' ',
37
- 8195 => ' ',
38
- 8196 => ' ',
39
- 8197 => ' ',
40
- 8198 => ' ',
41
- 8199 => ' ',
42
- 8200 => ' ',
43
- 8201 => ' ',
44
- 8202 => ' ',
45
- 8215 => ' ̳',
46
- 8239 => ' ',
47
- 8252 => '!!',
48
- 8254 => ' ̅',
49
- 8263 => '??',
50
- 8264 => '?!',
51
- 8265 => '!?',
52
- 8287 => ' ',
53
- 8314 => '+',
54
- 8316 => '=',
55
- 8317 => '(',
56
- 8318 => ')',
57
- 8330 => '+',
58
- 8332 => '=',
59
- 8333 => '(',
60
- 8334 => ')',
61
- 8448 => 'a/c',
62
- 8449 => 'a/s',
63
- 8453 => 'c/o',
64
- 8454 => 'c/u',
65
- 9332 => '(1)',
66
- 9333 => '(2)',
67
- 9334 => '(3)',
68
- 9335 => '(4)',
69
- 9336 => '(5)',
70
- 9337 => '(6)',
71
- 9338 => '(7)',
72
- 9339 => '(8)',
73
- 9340 => '(9)',
74
- 9341 => '(10)',
75
- 9342 => '(11)',
76
- 9343 => '(12)',
77
- 9344 => '(13)',
78
- 9345 => '(14)',
79
- 9346 => '(15)',
80
- 9347 => '(16)',
81
- 9348 => '(17)',
82
- 9349 => '(18)',
83
- 9350 => '(19)',
84
- 9351 => '(20)',
85
- 9372 => '(a)',
86
- 9373 => '(b)',
87
- 9374 => '(c)',
88
- 9375 => '(d)',
89
- 9376 => '(e)',
90
- 9377 => '(f)',
91
- 9378 => '(g)',
92
- 9379 => '(h)',
93
- 9380 => '(i)',
94
- 9381 => '(j)',
95
- 9382 => '(k)',
96
- 9383 => '(l)',
97
- 9384 => '(m)',
98
- 9385 => '(n)',
99
- 9386 => '(o)',
100
- 9387 => '(p)',
101
- 9388 => '(q)',
102
- 9389 => '(r)',
103
- 9390 => '(s)',
104
- 9391 => '(t)',
105
- 9392 => '(u)',
106
- 9393 => '(v)',
107
- 9394 => '(w)',
108
- 9395 => '(x)',
109
- 9396 => '(y)',
110
- 9397 => '(z)',
111
- 10868 => '::=',
112
- 10869 => '==',
113
- 10870 => '===',
114
- 12288 => ' ',
115
- 12443 => ' ゙',
116
- 12444 => ' ゚',
117
- 12800 => '(ᄀ)',
118
- 12801 => '(ᄂ)',
119
- 12802 => '(ᄃ)',
120
- 12803 => '(ᄅ)',
121
- 12804 => '(ᄆ)',
122
- 12805 => '(ᄇ)',
123
- 12806 => '(ᄉ)',
124
- 12807 => '(ᄋ)',
125
- 12808 => '(ᄌ)',
126
- 12809 => '(ᄎ)',
127
- 12810 => '(ᄏ)',
128
- 12811 => '(ᄐ)',
129
- 12812 => '(ᄑ)',
130
- 12813 => '(ᄒ)',
131
- 12814 => '(가)',
132
- 12815 => '(나)',
133
- 12816 => '(다)',
134
- 12817 => '(라)',
135
- 12818 => '(마)',
136
- 12819 => '(바)',
137
- 12820 => '(사)',
138
- 12821 => '(아)',
139
- 12822 => '(자)',
140
- 12823 => '(차)',
141
- 12824 => '(카)',
142
- 12825 => '(타)',
143
- 12826 => '(파)',
144
- 12827 => '(하)',
145
- 12828 => '(주)',
146
- 12829 => '(오전)',
147
- 12830 => '(오후)',
148
- 12832 => '(一)',
149
- 12833 => '(二)',
150
- 12834 => '(三)',
151
- 12835 => '(四)',
152
- 12836 => '(五)',
153
- 12837 => '(六)',
154
- 12838 => '(七)',
155
- 12839 => '(八)',
156
- 12840 => '(九)',
157
- 12841 => '(十)',
158
- 12842 => '(月)',
159
- 12843 => '(火)',
160
- 12844 => '(水)',
161
- 12845 => '(木)',
162
- 12846 => '(金)',
163
- 12847 => '(土)',
164
- 12848 => '(日)',
165
- 12849 => '(株)',
166
- 12850 => '(有)',
167
- 12851 => '(社)',
168
- 12852 => '(名)',
169
- 12853 => '(特)',
170
- 12854 => '(財)',
171
- 12855 => '(祝)',
172
- 12856 => '(労)',
173
- 12857 => '(代)',
174
- 12858 => '(呼)',
175
- 12859 => '(学)',
176
- 12860 => '(監)',
177
- 12861 => '(企)',
178
- 12862 => '(資)',
179
- 12863 => '(協)',
180
- 12864 => '(祭)',
181
- 12865 => '(休)',
182
- 12866 => '(自)',
183
- 12867 => '(至)',
184
- 64297 => '+',
185
- 64606 => ' ٌّ',
186
- 64607 => ' ٍّ',
187
- 64608 => ' َّ',
188
- 64609 => ' ُّ',
189
- 64610 => ' ِّ',
190
- 64611 => ' ّٰ',
191
- 65018 => 'صلى الله عليه وسلم',
192
- 65019 => 'جل جلاله',
193
- 65040 => ',',
194
- 65043 => ':',
195
- 65044 => ';',
196
- 65045 => '!',
197
- 65046 => '?',
198
- 65075 => '_',
199
- 65076 => '_',
200
- 65077 => '(',
201
- 65078 => ')',
202
- 65079 => '{',
203
- 65080 => '}',
204
- 65095 => '[',
205
- 65096 => ']',
206
- 65097 => ' ̅',
207
- 65098 => ' ̅',
208
- 65099 => ' ̅',
209
- 65100 => ' ̅',
210
- 65101 => '_',
211
- 65102 => '_',
212
- 65103 => '_',
213
- 65104 => ',',
214
- 65108 => ';',
215
- 65109 => ':',
216
- 65110 => '?',
217
- 65111 => '!',
218
- 65113 => '(',
219
- 65114 => ')',
220
- 65115 => '{',
221
- 65116 => '}',
222
- 65119 => '#',
223
- 65120 => '&',
224
- 65121 => '*',
225
- 65122 => '+',
226
- 65124 => '<',
227
- 65125 => '>',
228
- 65126 => '=',
229
- 65128 => '\\',
230
- 65129 => '$',
231
- 65130 => '%',
232
- 65131 => '@',
233
- 65136 => ' ً',
234
- 65138 => ' ٌ',
235
- 65140 => ' ٍ',
236
- 65142 => ' َ',
237
- 65144 => ' ُ',
238
- 65146 => ' ِ',
239
- 65148 => ' ّ',
240
- 65150 => ' ْ',
241
- 65281 => '!',
242
- 65282 => '"',
243
- 65283 => '#',
244
- 65284 => '$',
245
- 65285 => '%',
246
- 65286 => '&',
247
- 65287 => '\'',
248
- 65288 => '(',
249
- 65289 => ')',
250
- 65290 => '*',
251
- 65291 => '+',
252
- 65292 => ',',
253
- 65295 => '/',
254
- 65306 => ':',
255
- 65307 => ';',
256
- 65308 => '<',
257
- 65309 => '=',
258
- 65310 => '>',
259
- 65311 => '?',
260
- 65312 => '@',
261
- 65339 => '[',
262
- 65340 => '\\',
263
- 65341 => ']',
264
- 65342 => '^',
265
- 65343 => '_',
266
- 65344 => '`',
267
- 65371 => '{',
268
- 65372 => '|',
269
- 65373 => '}',
270
- 65374 => '~',
271
- 65507 => ' ̄',
272
- 127233 => '0,',
273
- 127234 => '1,',
274
- 127235 => '2,',
275
- 127236 => '3,',
276
- 127237 => '4,',
277
- 127238 => '5,',
278
- 127239 => '6,',
279
- 127240 => '7,',
280
- 127241 => '8,',
281
- 127242 => '9,',
282
- 127248 => '(a)',
283
- 127249 => '(b)',
284
- 127250 => '(c)',
285
- 127251 => '(d)',
286
- 127252 => '(e)',
287
- 127253 => '(f)',
288
- 127254 => '(g)',
289
- 127255 => '(h)',
290
- 127256 => '(i)',
291
- 127257 => '(j)',
292
- 127258 => '(k)',
293
- 127259 => '(l)',
294
- 127260 => '(m)',
295
- 127261 => '(n)',
296
- 127262 => '(o)',
297
- 127263 => '(p)',
298
- 127264 => '(q)',
299
- 127265 => '(r)',
300
- 127266 => '(s)',
301
- 127267 => '(t)',
302
- 127268 => '(u)',
303
- 127269 => '(v)',
304
- 127270 => '(w)',
305
- 127271 => '(x)',
306
- 127272 => '(y)',
307
- 127273 => '(z)',
308
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/disallowed_STD3_valid.php DELETED
@@ -1,71 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 0 => true,
5
- 1 => true,
6
- 2 => true,
7
- 3 => true,
8
- 4 => true,
9
- 5 => true,
10
- 6 => true,
11
- 7 => true,
12
- 8 => true,
13
- 9 => true,
14
- 10 => true,
15
- 11 => true,
16
- 12 => true,
17
- 13 => true,
18
- 14 => true,
19
- 15 => true,
20
- 16 => true,
21
- 17 => true,
22
- 18 => true,
23
- 19 => true,
24
- 20 => true,
25
- 21 => true,
26
- 22 => true,
27
- 23 => true,
28
- 24 => true,
29
- 25 => true,
30
- 26 => true,
31
- 27 => true,
32
- 28 => true,
33
- 29 => true,
34
- 30 => true,
35
- 31 => true,
36
- 32 => true,
37
- 33 => true,
38
- 34 => true,
39
- 35 => true,
40
- 36 => true,
41
- 37 => true,
42
- 38 => true,
43
- 39 => true,
44
- 40 => true,
45
- 41 => true,
46
- 42 => true,
47
- 43 => true,
48
- 44 => true,
49
- 47 => true,
50
- 58 => true,
51
- 59 => true,
52
- 60 => true,
53
- 61 => true,
54
- 62 => true,
55
- 63 => true,
56
- 64 => true,
57
- 91 => true,
58
- 92 => true,
59
- 93 => true,
60
- 94 => true,
61
- 95 => true,
62
- 96 => true,
63
- 123 => true,
64
- 124 => true,
65
- 125 => true,
66
- 126 => true,
67
- 127 => true,
68
- 8800 => true,
69
- 8814 => true,
70
- 8815 => true,
71
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/ignored.php DELETED
@@ -1,273 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 173 => true,
5
- 847 => true,
6
- 6155 => true,
7
- 6156 => true,
8
- 6157 => true,
9
- 8203 => true,
10
- 8288 => true,
11
- 8292 => true,
12
- 65024 => true,
13
- 65025 => true,
14
- 65026 => true,
15
- 65027 => true,
16
- 65028 => true,
17
- 65029 => true,
18
- 65030 => true,
19
- 65031 => true,
20
- 65032 => true,
21
- 65033 => true,
22
- 65034 => true,
23
- 65035 => true,
24
- 65036 => true,
25
- 65037 => true,
26
- 65038 => true,
27
- 65039 => true,
28
- 65279 => true,
29
- 113824 => true,
30
- 113825 => true,
31
- 113826 => true,
32
- 113827 => true,
33
- 917760 => true,
34
- 917761 => true,
35
- 917762 => true,
36
- 917763 => true,
37
- 917764 => true,
38
- 917765 => true,
39
- 917766 => true,
40
- 917767 => true,
41
- 917768 => true,
42
- 917769 => true,
43
- 917770 => true,
44
- 917771 => true,
45
- 917772 => true,
46
- 917773 => true,
47
- 917774 => true,
48
- 917775 => true,
49
- 917776 => true,
50
- 917777 => true,
51
- 917778 => true,
52
- 917779 => true,
53
- 917780 => true,
54
- 917781 => true,
55
- 917782 => true,
56
- 917783 => true,
57
- 917784 => true,
58
- 917785 => true,
59
- 917786 => true,
60
- 917787 => true,
61
- 917788 => true,
62
- 917789 => true,
63
- 917790 => true,
64
- 917791 => true,
65
- 917792 => true,
66
- 917793 => true,
67
- 917794 => true,
68
- 917795 => true,
69
- 917796 => true,
70
- 917797 => true,
71
- 917798 => true,
72
- 917799 => true,
73
- 917800 => true,
74
- 917801 => true,
75
- 917802 => true,
76
- 917803 => true,
77
- 917804 => true,
78
- 917805 => true,
79
- 917806 => true,
80
- 917807 => true,
81
- 917808 => true,
82
- 917809 => true,
83
- 917810 => true,
84
- 917811 => true,
85
- 917812 => true,
86
- 917813 => true,
87
- 917814 => true,
88
- 917815 => true,
89
- 917816 => true,
90
- 917817 => true,
91
- 917818 => true,
92
- 917819 => true,
93
- 917820 => true,
94
- 917821 => true,
95
- 917822 => true,
96
- 917823 => true,
97
- 917824 => true,
98
- 917825 => true,
99
- 917826 => true,
100
- 917827 => true,
101
- 917828 => true,
102
- 917829 => true,
103
- 917830 => true,
104
- 917831 => true,
105
- 917832 => true,
106
- 917833 => true,
107
- 917834 => true,
108
- 917835 => true,
109
- 917836 => true,
110
- 917837 => true,
111
- 917838 => true,
112
- 917839 => true,
113
- 917840 => true,
114
- 917841 => true,
115
- 917842 => true,
116
- 917843 => true,
117
- 917844 => true,
118
- 917845 => true,
119
- 917846 => true,
120
- 917847 => true,
121
- 917848 => true,
122
- 917849 => true,
123
- 917850 => true,
124
- 917851 => true,
125
- 917852 => true,
126
- 917853 => true,
127
- 917854 => true,
128
- 917855 => true,
129
- 917856 => true,
130
- 917857 => true,
131
- 917858 => true,
132
- 917859 => true,
133
- 917860 => true,
134
- 917861 => true,
135
- 917862 => true,
136
- 917863 => true,
137
- 917864 => true,
138
- 917865 => true,
139
- 917866 => true,
140
- 917867 => true,
141
- 917868 => true,
142
- 917869 => true,
143
- 917870 => true,
144
- 917871 => true,
145
- 917872 => true,
146
- 917873 => true,
147
- 917874 => true,
148
- 917875 => true,
149
- 917876 => true,
150
- 917877 => true,
151
- 917878 => true,
152
- 917879 => true,
153
- 917880 => true,
154
- 917881 => true,
155
- 917882 => true,
156
- 917883 => true,
157
- 917884 => true,
158
- 917885 => true,
159
- 917886 => true,
160
- 917887 => true,
161
- 917888 => true,
162
- 917889 => true,
163
- 917890 => true,
164
- 917891 => true,
165
- 917892 => true,
166
- 917893 => true,
167
- 917894 => true,
168
- 917895 => true,
169
- 917896 => true,
170
- 917897 => true,
171
- 917898 => true,
172
- 917899 => true,
173
- 917900 => true,
174
- 917901 => true,
175
- 917902 => true,
176
- 917903 => true,
177
- 917904 => true,
178
- 917905 => true,
179
- 917906 => true,
180
- 917907 => true,
181
- 917908 => true,
182
- 917909 => true,
183
- 917910 => true,
184
- 917911 => true,
185
- 917912 => true,
186
- 917913 => true,
187
- 917914 => true,
188
- 917915 => true,
189
- 917916 => true,
190
- 917917 => true,
191
- 917918 => true,
192
- 917919 => true,
193
- 917920 => true,
194
- 917921 => true,
195
- 917922 => true,
196
- 917923 => true,
197
- 917924 => true,
198
- 917925 => true,
199
- 917926 => true,
200
- 917927 => true,
201
- 917928 => true,
202
- 917929 => true,
203
- 917930 => true,
204
- 917931 => true,
205
- 917932 => true,
206
- 917933 => true,
207
- 917934 => true,
208
- 917935 => true,
209
- 917936 => true,
210
- 917937 => true,
211
- 917938 => true,
212
- 917939 => true,
213
- 917940 => true,
214
- 917941 => true,
215
- 917942 => true,
216
- 917943 => true,
217
- 917944 => true,
218
- 917945 => true,
219
- 917946 => true,
220
- 917947 => true,
221
- 917948 => true,
222
- 917949 => true,
223
- 917950 => true,
224
- 917951 => true,
225
- 917952 => true,
226
- 917953 => true,
227
- 917954 => true,
228
- 917955 => true,
229
- 917956 => true,
230
- 917957 => true,
231
- 917958 => true,
232
- 917959 => true,
233
- 917960 => true,
234
- 917961 => true,
235
- 917962 => true,
236
- 917963 => true,
237
- 917964 => true,
238
- 917965 => true,
239
- 917966 => true,
240
- 917967 => true,
241
- 917968 => true,
242
- 917969 => true,
243
- 917970 => true,
244
- 917971 => true,
245
- 917972 => true,
246
- 917973 => true,
247
- 917974 => true,
248
- 917975 => true,
249
- 917976 => true,
250
- 917977 => true,
251
- 917978 => true,
252
- 917979 => true,
253
- 917980 => true,
254
- 917981 => true,
255
- 917982 => true,
256
- 917983 => true,
257
- 917984 => true,
258
- 917985 => true,
259
- 917986 => true,
260
- 917987 => true,
261
- 917988 => true,
262
- 917989 => true,
263
- 917990 => true,
264
- 917991 => true,
265
- 917992 => true,
266
- 917993 => true,
267
- 917994 => true,
268
- 917995 => true,
269
- 917996 => true,
270
- 917997 => true,
271
- 917998 => true,
272
- 917999 => true,
273
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/mapped.php DELETED
@@ -1,5778 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 65 => 'a',
5
- 66 => 'b',
6
- 67 => 'c',
7
- 68 => 'd',
8
- 69 => 'e',
9
- 70 => 'f',
10
- 71 => 'g',
11
- 72 => 'h',
12
- 73 => 'i',
13
- 74 => 'j',
14
- 75 => 'k',
15
- 76 => 'l',
16
- 77 => 'm',
17
- 78 => 'n',
18
- 79 => 'o',
19
- 80 => 'p',
20
- 81 => 'q',
21
- 82 => 'r',
22
- 83 => 's',
23
- 84 => 't',
24
- 85 => 'u',
25
- 86 => 'v',
26
- 87 => 'w',
27
- 88 => 'x',
28
- 89 => 'y',
29
- 90 => 'z',
30
- 170 => 'a',
31
- 178 => '2',
32
- 179 => '3',
33
- 181 => 'μ',
34
- 185 => '1',
35
- 186 => 'o',
36
- 188 => '1⁄4',
37
- 189 => '1⁄2',
38
- 190 => '3⁄4',
39
- 192 => 'à',
40
- 193 => 'á',
41
- 194 => 'â',
42
- 195 => 'ã',
43
- 196 => 'ä',
44
- 197 => 'å',
45
- 198 => 'æ',
46
- 199 => 'ç',
47
- 200 => 'è',
48
- 201 => 'é',
49
- 202 => 'ê',
50
- 203 => 'ë',
51
- 204 => 'ì',
52
- 205 => 'í',
53
- 206 => 'î',
54
- 207 => 'ï',
55
- 208 => 'ð',
56
- 209 => 'ñ',
57
- 210 => 'ò',
58
- 211 => 'ó',
59
- 212 => 'ô',
60
- 213 => 'õ',
61
- 214 => 'ö',
62
- 216 => 'ø',
63
- 217 => 'ù',
64
- 218 => 'ú',
65
- 219 => 'û',
66
- 220 => 'ü',
67
- 221 => 'ý',
68
- 222 => 'þ',
69
- 256 => 'ā',
70
- 258 => 'ă',
71
- 260 => 'ą',
72
- 262 => 'ć',
73
- 264 => 'ĉ',
74
- 266 => 'ċ',
75
- 268 => 'č',
76
- 270 => 'ď',
77
- 272 => 'đ',
78
- 274 => 'ē',
79
- 276 => 'ĕ',
80
- 278 => 'ė',
81
- 280 => 'ę',
82
- 282 => 'ě',
83
- 284 => 'ĝ',
84
- 286 => 'ğ',
85
- 288 => 'ġ',
86
- 290 => 'ģ',
87
- 292 => 'ĥ',
88
- 294 => 'ħ',
89
- 296 => 'ĩ',
90
- 298 => 'ī',
91
- 300 => 'ĭ',
92
- 302 => 'į',
93
- 304 => 'i̇',
94
- 306 => 'ij',
95
- 307 => 'ij',
96
- 308 => 'ĵ',
97
- 310 => 'ķ',
98
- 313 => 'ĺ',
99
- 315 => 'ļ',
100
- 317 => 'ľ',
101
- 319 => 'l·',
102
- 320 => 'l·',
103
- 321 => 'ł',
104
- 323 => 'ń',
105
- 325 => 'ņ',
106
- 327 => 'ň',
107
- 329 => 'ʼn',
108
- 330 => 'ŋ',
109
- 332 => 'ō',
110
- 334 => 'ŏ',
111
- 336 => 'ő',
112
- 338 => 'œ',
113
- 340 => 'ŕ',
114
- 342 => 'ŗ',
115
- 344 => 'ř',
116
- 346 => 'ś',
117
- 348 => 'ŝ',
118
- 350 => 'ş',
119
- 352 => 'š',
120
- 354 => 'ţ',
121
- 356 => 'ť',
122
- 358 => 'ŧ',
123
- 360 => 'ũ',
124
- 362 => 'ū',
125
- 364 => 'ŭ',
126
- 366 => 'ů',
127
- 368 => 'ű',
128
- 370 => 'ų',
129
- 372 => 'ŵ',
130
- 374 => 'ŷ',
131
- 376 => 'ÿ',
132
- 377 => 'ź',
133
- 379 => 'ż',
134
- 381 => 'ž',
135
- 383 => 's',
136
- 385 => 'ɓ',
137
- 386 => 'ƃ',
138
- 388 => 'ƅ',
139
- 390 => 'ɔ',
140
- 391 => 'ƈ',
141
- 393 => 'ɖ',
142
- 394 => 'ɗ',
143
- 395 => 'ƌ',
144
- 398 => 'ǝ',
145
- 399 => 'ə',
146
- 400 => 'ɛ',
147
- 401 => 'ƒ',
148
- 403 => 'ɠ',
149
- 404 => 'ɣ',
150
- 406 => 'ɩ',
151
- 407 => 'ɨ',
152
- 408 => 'ƙ',
153
- 412 => 'ɯ',
154
- 413 => 'ɲ',
155
- 415 => 'ɵ',
156
- 416 => 'ơ',
157
- 418 => 'ƣ',
158
- 420 => 'ƥ',
159
- 422 => 'ʀ',
160
- 423 => 'ƨ',
161
- 425 => 'ʃ',
162
- 428 => 'ƭ',
163
- 430 => 'ʈ',
164
- 431 => 'ư',
165
- 433 => 'ʊ',
166
- 434 => 'ʋ',
167
- 435 => 'ƴ',
168
- 437 => 'ƶ',
169
- 439 => 'ʒ',
170
- 440 => 'ƹ',
171
- 444 => 'ƽ',
172
- 452 => 'dž',
173
- 453 => 'dž',
174
- 454 => 'dž',
175
- 455 => 'lj',
176
- 456 => 'lj',
177
- 457 => 'lj',
178
- 458 => 'nj',
179
- 459 => 'nj',
180
- 460 => 'nj',
181
- 461 => 'ǎ',
182
- 463 => 'ǐ',
183
- 465 => 'ǒ',
184
- 467 => 'ǔ',
185
- 469 => 'ǖ',
186
- 471 => 'ǘ',
187
- 473 => 'ǚ',
188
- 475 => 'ǜ',
189
- 478 => 'ǟ',
190
- 480 => 'ǡ',
191
- 482 => 'ǣ',
192
- 484 => 'ǥ',
193
- 486 => 'ǧ',
194
- 488 => 'ǩ',
195
- 490 => 'ǫ',
196
- 492 => 'ǭ',
197
- 494 => 'ǯ',
198
- 497 => 'dz',
199
- 498 => 'dz',
200
- 499 => 'dz',
201
- 500 => 'ǵ',
202
- 502 => 'ƕ',
203
- 503 => 'ƿ',
204
- 504 => 'ǹ',
205
- 506 => 'ǻ',
206
- 508 => 'ǽ',
207
- 510 => 'ǿ',
208
- 512 => 'ȁ',
209
- 514 => 'ȃ',
210
- 516 => 'ȅ',
211
- 518 => 'ȇ',
212
- 520 => 'ȉ',
213
- 522 => 'ȋ',
214
- 524 => 'ȍ',
215
- 526 => 'ȏ',
216
- 528 => 'ȑ',
217
- 530 => 'ȓ',
218
- 532 => 'ȕ',
219
- 534 => 'ȗ',
220
- 536 => 'ș',
221
- 538 => 'ț',
222
- 540 => 'ȝ',
223
- 542 => 'ȟ',
224
- 544 => 'ƞ',
225
- 546 => 'ȣ',
226
- 548 => 'ȥ',
227
- 550 => 'ȧ',
228
- 552 => 'ȩ',
229
- 554 => 'ȫ',
230
- 556 => 'ȭ',
231
- 558 => 'ȯ',
232
- 560 => 'ȱ',
233
- 562 => 'ȳ',
234
- 570 => 'ⱥ',
235
- 571 => 'ȼ',
236
- 573 => 'ƚ',
237
- 574 => 'ⱦ',
238
- 577 => 'ɂ',
239
- 579 => 'ƀ',
240
- 580 => 'ʉ',
241
- 581 => 'ʌ',
242
- 582 => 'ɇ',
243
- 584 => 'ɉ',
244
- 586 => 'ɋ',
245
- 588 => 'ɍ',
246
- 590 => 'ɏ',
247
- 688 => 'h',
248
- 689 => 'ɦ',
249
- 690 => 'j',
250
- 691 => 'r',
251
- 692 => 'ɹ',
252
- 693 => 'ɻ',
253
- 694 => 'ʁ',
254
- 695 => 'w',
255
- 696 => 'y',
256
- 736 => 'ɣ',
257
- 737 => 'l',
258
- 738 => 's',
259
- 739 => 'x',
260
- 740 => 'ʕ',
261
- 832 => '̀',
262
- 833 => '́',
263
- 835 => '̓',
264
- 836 => '̈́',
265
- 837 => 'ι',
266
- 880 => 'ͱ',
267
- 882 => 'ͳ',
268
- 884 => 'ʹ',
269
- 886 => 'ͷ',
270
- 895 => 'ϳ',
271
- 902 => 'ά',
272
- 903 => '·',
273
- 904 => 'έ',
274
- 905 => 'ή',
275
- 906 => 'ί',
276
- 908 => 'ό',
277
- 910 => 'ύ',
278
- 911 => 'ώ',
279
- 913 => 'α',
280
- 914 => 'β',
281
- 915 => 'γ',
282
- 916 => 'δ',
283
- 917 => 'ε',
284
- 918 => 'ζ',
285
- 919 => 'η',
286
- 920 => 'θ',
287
- 921 => 'ι',
288
- 922 => 'κ',
289
- 923 => 'λ',
290
- 924 => 'μ',
291
- 925 => 'ν',
292
- 926 => 'ξ',
293
- 927 => 'ο',
294
- 928 => 'π',
295
- 929 => 'ρ',
296
- 931 => 'σ',
297
- 932 => 'τ',
298
- 933 => 'υ',
299
- 934 => 'φ',
300
- 935 => 'χ',
301
- 936 => 'ψ',
302
- 937 => 'ω',
303
- 938 => 'ϊ',
304
- 939 => 'ϋ',
305
- 975 => 'ϗ',
306
- 976 => 'β',
307
- 977 => 'θ',
308
- 978 => 'υ',
309
- 979 => 'ύ',
310
- 980 => 'ϋ',
311
- 981 => 'φ',
312
- 982 => 'π',
313
- 984 => 'ϙ',
314
- 986 => 'ϛ',
315
- 988 => 'ϝ',
316
- 990 => 'ϟ',
317
- 992 => 'ϡ',
318
- 994 => 'ϣ',
319
- 996 => 'ϥ',
320
- 998 => 'ϧ',
321
- 1000 => 'ϩ',
322
- 1002 => 'ϫ',
323
- 1004 => 'ϭ',
324
- 1006 => 'ϯ',
325
- 1008 => 'κ',
326
- 1009 => 'ρ',
327
- 1010 => 'σ',
328
- 1012 => 'θ',
329
- 1013 => 'ε',
330
- 1015 => 'ϸ',
331
- 1017 => 'σ',
332
- 1018 => 'ϻ',
333
- 1021 => 'ͻ',
334
- 1022 => 'ͼ',
335
- 1023 => 'ͽ',
336
- 1024 => 'ѐ',
337
- 1025 => 'ё',
338
- 1026 => 'ђ',
339
- 1027 => 'ѓ',
340
- 1028 => 'є',
341
- 1029 => 'ѕ',
342
- 1030 => 'і',
343
- 1031 => 'ї',
344
- 1032 => 'ј',
345
- 1033 => 'љ',
346
- 1034 => 'њ',
347
- 1035 => 'ћ',
348
- 1036 => 'ќ',
349
- 1037 => 'ѝ',
350
- 1038 => 'ў',
351
- 1039 => 'џ',
352
- 1040 => 'а',
353
- 1041 => 'б',
354
- 1042 => 'в',
355
- 1043 => 'г',
356
- 1044 => 'д',
357
- 1045 => 'е',
358
- 1046 => 'ж',
359
- 1047 => 'з',
360
- 1048 => 'и',
361
- 1049 => 'й',
362
- 1050 => 'к',
363
- 1051 => 'л',
364
- 1052 => 'м',
365
- 1053 => 'н',
366
- 1054 => 'о',
367
- 1055 => 'п',
368
- 1056 => 'р',
369
- 1057 => 'с',
370
- 1058 => 'т',
371
- 1059 => 'у',
372
- 1060 => 'ф',
373
- 1061 => 'х',
374
- 1062 => 'ц',
375
- 1063 => 'ч',
376
- 1064 => 'ш',
377
- 1065 => 'щ',
378
- 1066 => 'ъ',
379
- 1067 => 'ы',
380
- 1068 => 'ь',
381
- 1069 => 'э',
382
- 1070 => 'ю',
383
- 1071 => 'я',
384
- 1120 => 'ѡ',
385
- 1122 => 'ѣ',
386
- 1124 => 'ѥ',
387
- 1126 => 'ѧ',
388
- 1128 => 'ѩ',
389
- 1130 => 'ѫ',
390
- 1132 => 'ѭ',
391
- 1134 => 'ѯ',
392
- 1136 => 'ѱ',
393
- 1138 => 'ѳ',
394
- 1140 => 'ѵ',
395
- 1142 => 'ѷ',
396
- 1144 => 'ѹ',
397
- 1146 => 'ѻ',
398
- 1148 => 'ѽ',
399
- 1150 => 'ѿ',
400
- 1152 => 'ҁ',
401
- 1162 => 'ҋ',
402
- 1164 => 'ҍ',
403
- 1166 => 'ҏ',
404
- 1168 => 'ґ',
405
- 1170 => 'ғ',
406
- 1172 => 'ҕ',
407
- 1174 => 'җ',
408
- 1176 => 'ҙ',
409
- 1178 => 'қ',
410
- 1180 => 'ҝ',
411
- 1182 => 'ҟ',
412
- 1184 => 'ҡ',
413
- 1186 => 'ң',
414
- 1188 => 'ҥ',
415
- 1190 => 'ҧ',
416
- 1192 => 'ҩ',
417
- 1194 => 'ҫ',
418
- 1196 => 'ҭ',
419
- 1198 => 'ү',
420
- 1200 => 'ұ',
421
- 1202 => 'ҳ',
422
- 1204 => 'ҵ',
423
- 1206 => 'ҷ',
424
- 1208 => 'ҹ',
425
- 1210 => 'һ',
426
- 1212 => 'ҽ',
427
- 1214 => 'ҿ',
428
- 1217 => 'ӂ',
429
- 1219 => 'ӄ',
430
- 1221 => 'ӆ',
431
- 1223 => 'ӈ',
432
- 1225 => 'ӊ',
433
- 1227 => 'ӌ',
434
- 1229 => 'ӎ',
435
- 1232 => 'ӑ',
436
- 1234 => 'ӓ',
437
- 1236 => 'ӕ',
438
- 1238 => 'ӗ',
439
- 1240 => 'ә',
440
- 1242 => 'ӛ',
441
- 1244 => 'ӝ',
442
- 1246 => 'ӟ',
443
- 1248 => 'ӡ',
444
- 1250 => 'ӣ',
445
- 1252 => 'ӥ',
446
- 1254 => 'ӧ',
447
- 1256 => 'ө',
448
- 1258 => 'ӫ',
449
- 1260 => 'ӭ',
450
- 1262 => 'ӯ',
451
- 1264 => 'ӱ',
452
- 1266 => 'ӳ',
453
- 1268 => 'ӵ',
454
- 1270 => 'ӷ',
455
- 1272 => 'ӹ',
456
- 1274 => 'ӻ',
457
- 1276 => 'ӽ',
458
- 1278 => 'ӿ',
459
- 1280 => 'ԁ',
460
- 1282 => 'ԃ',
461
- 1284 => 'ԅ',
462
- 1286 => 'ԇ',
463
- 1288 => 'ԉ',
464
- 1290 => 'ԋ',
465
- 1292 => 'ԍ',
466
- 1294 => 'ԏ',
467
- 1296 => 'ԑ',
468
- 1298 => 'ԓ',
469
- 1300 => 'ԕ',
470
- 1302 => 'ԗ',
471
- 1304 => 'ԙ',
472
- 1306 => 'ԛ',
473
- 1308 => 'ԝ',
474
- 1310 => 'ԟ',
475
- 1312 => 'ԡ',
476
- 1314 => 'ԣ',
477
- 1316 => 'ԥ',
478
- 1318 => 'ԧ',
479
- 1320 => 'ԩ',
480
- 1322 => 'ԫ',
481
- 1324 => 'ԭ',
482
- 1326 => 'ԯ',
483
- 1329 => 'ա',
484
- 1330 => 'բ',
485
- 1331 => 'գ',
486
- 1332 => 'դ',
487
- 1333 => 'ե',
488
- 1334 => 'զ',
489
- 1335 => 'է',
490
- 1336 => 'ը',
491
- 1337 => 'թ',
492
- 1338 => 'ժ',
493
- 1339 => 'ի',
494
- 1340 => 'լ',
495
- 1341 => 'խ',
496
- 1342 => 'ծ',
497
- 1343 => 'կ',
498
- 1344 => 'հ',
499
- 1345 => 'ձ',
500
- 1346 => 'ղ',
501
- 1347 => 'ճ',
502
- 1348 => 'մ',
503
- 1349 => 'յ',
504
- 1350 => 'ն',
505
- 1351 => 'շ',
506
- 1352 => 'ո',
507
- 1353 => 'չ',
508
- 1354 => 'պ',
509
- 1355 => 'ջ',
510
- 1356 => 'ռ',
511
- 1357 => 'ս',
512
- 1358 => 'վ',
513
- 1359 => 'տ',
514
- 1360 => 'ր',
515
- 1361 => 'ց',
516
- 1362 => 'ւ',
517
- 1363 => 'փ',
518
- 1364 => 'ք',
519
- 1365 => 'օ',
520
- 1366 => 'ֆ',
521
- 1415 => 'եւ',
522
- 1653 => 'اٴ',
523
- 1654 => 'وٴ',
524
- 1655 => 'ۇٴ',
525
- 1656 => 'يٴ',
526
- 2392 => 'क़',
527
- 2393 => 'ख़',
528
- 2394 => 'ग़',
529
- 2395 => 'ज़',
530
- 2396 => 'ड़',
531
- 2397 => 'ढ़',
532
- 2398 => 'फ़',
533
- 2399 => 'य़',
534
- 2524 => 'ড়',
535
- 2525 => 'ঢ়',
536
- 2527 => 'য়',
537
- 2611 => 'ਲ਼',
538
- 2614 => 'ਸ਼',
539
- 2649 => 'ਖ਼',
540
- 2650 => 'ਗ਼',
541
- 2651 => 'ਜ਼',
542
- 2654 => 'ਫ਼',
543
- 2908 => 'ଡ଼',
544
- 2909 => 'ଢ଼',
545
- 3635 => 'ํา',
546
- 3763 => 'ໍາ',
547
- 3804 => 'ຫນ',
548
- 3805 => 'ຫມ',
549
- 3852 => '་',
550
- 3907 => 'གྷ',
551
- 3917 => 'ཌྷ',
552
- 3922 => 'དྷ',
553
- 3927 => 'བྷ',
554
- 3932 => 'ཛྷ',
555
- 3945 => 'ཀྵ',
556
- 3955 => 'ཱི',
557
- 3957 => 'ཱུ',
558
- 3958 => 'ྲྀ',
559
- 3959 => 'ྲཱྀ',
560
- 3960 => 'ླྀ',
561
- 3961 => 'ླཱྀ',
562
- 3969 => 'ཱྀ',
563
- 3987 => 'ྒྷ',
564
- 3997 => 'ྜྷ',
565
- 4002 => 'ྡྷ',
566
- 4007 => 'ྦྷ',
567
- 4012 => 'ྫྷ',
568
- 4025 => 'ྐྵ',
569
- 4295 => 'ⴧ',
570
- 4301 => 'ⴭ',
571
- 4348 => 'ნ',
572
- 5112 => 'Ᏸ',
573
- 5113 => 'Ᏹ',
574
- 5114 => 'Ᏺ',
575
- 5115 => 'Ᏻ',
576
- 5116 => 'Ᏼ',
577
- 5117 => 'Ᏽ',
578
- 7296 => 'в',
579
- 7297 => 'д',
580
- 7298 => 'о',
581
- 7299 => 'с',
582
- 7300 => 'т',
583
- 7301 => 'т',
584
- 7302 => 'ъ',
585
- 7303 => 'ѣ',
586
- 7304 => 'ꙋ',
587
- 7312 => 'ა',
588
- 7313 => 'ბ',
589
- 7314 => 'გ',
590
- 7315 => 'დ',
591
- 7316 => 'ე',
592
- 7317 => 'ვ',
593
- 7318 => 'ზ',
594
- 7319 => 'თ',
595
- 7320 => 'ი',
596
- 7321 => 'კ',
597
- 7322 => 'ლ',
598
- 7323 => 'მ',
599
- 7324 => 'ნ',
600
- 7325 => 'ო',
601
- 7326 => 'პ',
602
- 7327 => 'ჟ',
603
- 7328 => 'რ',
604
- 7329 => 'ს',
605
- 7330 => 'ტ',
606
- 7331 => 'უ',
607
- 7332 => 'ფ',
608
- 7333 => 'ქ',
609
- 7334 => 'ღ',
610
- 7335 => 'ყ',
611
- 7336 => 'შ',
612
- 7337 => 'ჩ',
613
- 7338 => 'ც',
614
- 7339 => 'ძ',
615
- 7340 => 'წ',
616
- 7341 => 'ჭ',
617
- 7342 => 'ხ',
618
- 7343 => 'ჯ',
619
- 7344 => 'ჰ',
620
- 7345 => 'ჱ',
621
- 7346 => 'ჲ',
622
- 7347 => 'ჳ',
623
- 7348 => 'ჴ',
624
- 7349 => 'ჵ',
625
- 7350 => 'ჶ',
626
- 7351 => 'ჷ',
627
- 7352 => 'ჸ',
628
- 7353 => 'ჹ',
629
- 7354 => 'ჺ',
630
- 7357 => 'ჽ',
631
- 7358 => 'ჾ',
632
- 7359 => 'ჿ',
633
- 7468 => 'a',
634
- 7469 => 'æ',
635
- 7470 => 'b',
636
- 7472 => 'd',
637
- 7473 => 'e',
638
- 7474 => 'ǝ',
639
- 7475 => 'g',
640
- 7476 => 'h',
641
- 7477 => 'i',
642
- 7478 => 'j',
643
- 7479 => 'k',
644
- 7480 => 'l',
645
- 7481 => 'm',
646
- 7482 => 'n',
647
- 7484 => 'o',
648
- 7485 => 'ȣ',
649
- 7486 => 'p',
650
- 7487 => 'r',
651
- 7488 => 't',
652
- 7489 => 'u',
653
- 7490 => 'w',
654
- 7491 => 'a',
655
- 7492 => 'ɐ',
656
- 7493 => 'ɑ',
657
- 7494 => 'ᴂ',
658
- 7495 => 'b',
659
- 7496 => 'd',
660
- 7497 => 'e',
661
- 7498 => 'ə',
662
- 7499 => 'ɛ',
663
- 7500 => 'ɜ',
664
- 7501 => 'g',
665
- 7503 => 'k',
666
- 7504 => 'm',
667
- 7505 => 'ŋ',
668
- 7506 => 'o',
669
- 7507 => 'ɔ',
670
- 7508 => 'ᴖ',
671
- 7509 => 'ᴗ',
672
- 7510 => 'p',
673
- 7511 => 't',
674
- 7512 => 'u',
675
- 7513 => 'ᴝ',
676
- 7514 => 'ɯ',
677
- 7515 => 'v',
678
- 7516 => 'ᴥ',
679
- 7517 => 'β',
680
- 7518 => 'γ',
681
- 7519 => 'δ',
682
- 7520 => 'φ',
683
- 7521 => 'χ',
684
- 7522 => 'i',
685
- 7523 => 'r',
686
- 7524 => 'u',
687
- 7525 => 'v',
688
- 7526 => 'β',
689
- 7527 => 'γ',
690
- 7528 => 'ρ',
691
- 7529 => 'φ',
692
- 7530 => 'χ',
693
- 7544 => 'н',
694
- 7579 => 'ɒ',
695
- 7580 => 'c',
696
- 7581 => 'ɕ',
697
- 7582 => 'ð',
698
- 7583 => 'ɜ',
699
- 7584 => 'f',
700
- 7585 => 'ɟ',
701
- 7586 => 'ɡ',
702
- 7587 => 'ɥ',
703
- 7588 => 'ɨ',
704
- 7589 => 'ɩ',
705
- 7590 => 'ɪ',
706
- 7591 => 'ᵻ',
707
- 7592 => 'ʝ',
708
- 7593 => 'ɭ',
709
- 7594 => 'ᶅ',
710
- 7595 => 'ʟ',
711
- 7596 => 'ɱ',
712
- 7597 => 'ɰ',
713
- 7598 => 'ɲ',
714
- 7599 => 'ɳ',
715
- 7600 => 'ɴ',
716
- 7601 => 'ɵ',
717
- 7602 => 'ɸ',
718
- 7603 => 'ʂ',
719
- 7604 => 'ʃ',
720
- 7605 => 'ƫ',
721
- 7606 => 'ʉ',
722
- 7607 => 'ʊ',
723
- 7608 => 'ᴜ',
724
- 7609 => 'ʋ',
725
- 7610 => 'ʌ',
726
- 7611 => 'z',
727
- 7612 => 'ʐ',
728
- 7613 => 'ʑ',
729
- 7614 => 'ʒ',
730
- 7615 => 'θ',
731
- 7680 => 'ḁ',
732
- 7682 => 'ḃ',
733
- 7684 => 'ḅ',
734
- 7686 => 'ḇ',
735
- 7688 => 'ḉ',
736
- 7690 => 'ḋ',
737
- 7692 => 'ḍ',
738
- 7694 => 'ḏ',
739
- 7696 => 'ḑ',
740
- 7698 => 'ḓ',
741
- 7700 => 'ḕ',
742
- 7702 => 'ḗ',
743
- 7704 => 'ḙ',
744
- 7706 => 'ḛ',
745
- 7708 => 'ḝ',
746
- 7710 => 'ḟ',
747
- 7712 => 'ḡ',
748
- 7714 => 'ḣ',
749
- 7716 => 'ḥ',
750
- 7718 => 'ḧ',
751
- 7720 => 'ḩ',
752
- 7722 => 'ḫ',
753
- 7724 => 'ḭ',
754
- 7726 => 'ḯ',
755
- 7728 => 'ḱ',
756
- 7730 => 'ḳ',
757
- 7732 => 'ḵ',
758
- 7734 => 'ḷ',
759
- 7736 => 'ḹ',
760
- 7738 => 'ḻ',
761
- 7740 => 'ḽ',
762
- 7742 => 'ḿ',
763
- 7744 => 'ṁ',
764
- 7746 => 'ṃ',
765
- 7748 => 'ṅ',
766
- 7750 => 'ṇ',
767
- 7752 => 'ṉ',
768
- 7754 => 'ṋ',
769
- 7756 => 'ṍ',
770
- 7758 => 'ṏ',
771
- 7760 => 'ṑ',
772
- 7762 => 'ṓ',
773
- 7764 => 'ṕ',
774
- 7766 => 'ṗ',
775
- 7768 => 'ṙ',
776
- 7770 => 'ṛ',
777
- 7772 => 'ṝ',
778
- 7774 => 'ṟ',
779
- 7776 => 'ṡ',
780
- 7778 => 'ṣ',
781
- 7780 => 'ṥ',
782
- 7782 => 'ṧ',
783
- 7784 => 'ṩ',
784
- 7786 => 'ṫ',
785
- 7788 => 'ṭ',
786
- 7790 => 'ṯ',
787
- 7792 => 'ṱ',
788
- 7794 => 'ṳ',
789
- 7796 => 'ṵ',
790
- 7798 => 'ṷ',
791
- 7800 => 'ṹ',
792
- 7802 => 'ṻ',
793
- 7804 => 'ṽ',
794
- 7806 => 'ṿ',
795
- 7808 => 'ẁ',
796
- 7810 => 'ẃ',
797
- 7812 => 'ẅ',
798
- 7814 => 'ẇ',
799
- 7816 => 'ẉ',
800
- 7818 => 'ẋ',
801
- 7820 => 'ẍ',
802
- 7822 => 'ẏ',
803
- 7824 => 'ẑ',
804
- 7826 => 'ẓ',
805
- 7828 => 'ẕ',
806
- 7834 => 'aʾ',
807
- 7835 => 'ṡ',
808
- 7838 => 'ss',
809
- 7840 => 'ạ',
810
- 7842 => 'ả',
811
- 7844 => 'ấ',
812
- 7846 => 'ầ',
813
- 7848 => 'ẩ',
814
- 7850 => 'ẫ',
815
- 7852 => 'ậ',
816
- 7854 => 'ắ',
817
- 7856 => 'ằ',
818
- 7858 => 'ẳ',
819
- 7860 => 'ẵ',
820
- 7862 => 'ặ',
821
- 7864 => 'ẹ',
822
- 7866 => 'ẻ',
823
- 7868 => 'ẽ',
824
- 7870 => 'ế',
825
- 7872 => 'ề',
826
- 7874 => 'ể',
827
- 7876 => 'ễ',
828
- 7878 => 'ệ',
829
- 7880 => 'ỉ',
830
- 7882 => 'ị',
831
- 7884 => 'ọ',
832
- 7886 => 'ỏ',
833
- 7888 => 'ố',
834
- 7890 => 'ồ',
835
- 7892 => 'ổ',
836
- 7894 => 'ỗ',
837
- 7896 => 'ộ',
838
- 7898 => 'ớ',
839
- 7900 => 'ờ',
840
- 7902 => 'ở',
841
- 7904 => 'ỡ',
842
- 7906 => 'ợ',
843
- 7908 => 'ụ',
844
- 7910 => 'ủ',
845
- 7912 => 'ứ',
846
- 7914 => 'ừ',
847
- 7916 => 'ử',
848
- 7918 => 'ữ',
849
- 7920 => 'ự',
850
- 7922 => 'ỳ',
851
- 7924 => 'ỵ',
852
- 7926 => 'ỷ',
853
- 7928 => 'ỹ',
854
- 7930 => 'ỻ',
855
- 7932 => 'ỽ',
856
- 7934 => 'ỿ',
857
- 7944 => 'ἀ',
858
- 7945 => 'ἁ',
859
- 7946 => 'ἂ',
860
- 7947 => 'ἃ',
861
- 7948 => 'ἄ',
862
- 7949 => 'ἅ',
863
- 7950 => 'ἆ',
864
- 7951 => 'ἇ',
865
- 7960 => 'ἐ',
866
- 7961 => 'ἑ',
867
- 7962 => 'ἒ',
868
- 7963 => 'ἓ',
869
- 7964 => 'ἔ',
870
- 7965 => 'ἕ',
871
- 7976 => 'ἠ',
872
- 7977 => 'ἡ',
873
- 7978 => 'ἢ',
874
- 7979 => 'ἣ',
875
- 7980 => 'ἤ',
876
- 7981 => 'ἥ',
877
- 7982 => 'ἦ',
878
- 7983 => 'ἧ',
879
- 7992 => 'ἰ',
880
- 7993 => 'ἱ',
881
- 7994 => 'ἲ',
882
- 7995 => 'ἳ',
883
- 7996 => 'ἴ',
884
- 7997 => 'ἵ',
885
- 7998 => 'ἶ',
886
- 7999 => 'ἷ',
887
- 8008 => 'ὀ',
888
- 8009 => 'ὁ',
889
- 8010 => 'ὂ',
890
- 8011 => 'ὃ',
891
- 8012 => 'ὄ',
892
- 8013 => 'ὅ',
893
- 8025 => 'ὑ',
894
- 8027 => 'ὓ',
895
- 8029 => 'ὕ',
896
- 8031 => 'ὗ',
897
- 8040 => 'ὠ',
898
- 8041 => 'ὡ',
899
- 8042 => 'ὢ',
900
- 8043 => 'ὣ',
901
- 8044 => 'ὤ',
902
- 8045 => 'ὥ',
903
- 8046 => 'ὦ',
904
- 8047 => 'ὧ',
905
- 8049 => 'ά',
906
- 8051 => 'έ',
907
- 8053 => 'ή',
908
- 8055 => 'ί',
909
- 8057 => 'ό',
910
- 8059 => 'ύ',
911
- 8061 => 'ώ',
912
- 8064 => 'ἀι',
913
- 8065 => 'ἁι',
914
- 8066 => 'ἂι',
915
- 8067 => 'ἃι',
916
- 8068 => 'ἄι',
917
- 8069 => 'ἅι',
918
- 8070 => 'ἆι',
919
- 8071 => 'ἇι',
920
- 8072 => 'ἀι',
921
- 8073 => 'ἁι',
922
- 8074 => 'ἂι',
923
- 8075 => 'ἃι',
924
- 8076 => 'ἄι',
925
- 8077 => 'ἅι',
926
- 8078 => 'ἆι',
927
- 8079 => 'ἇι',
928
- 8080 => 'ἠι',
929
- 8081 => 'ἡι',
930
- 8082 => 'ἢι',
931
- 8083 => 'ἣι',
932
- 8084 => 'ἤι',
933
- 8085 => 'ἥι',
934
- 8086 => 'ἦι',
935
- 8087 => 'ἧι',
936
- 8088 => 'ἠι',
937
- 8089 => 'ἡι',
938
- 8090 => 'ἢι',
939
- 8091 => 'ἣι',
940
- 8092 => 'ἤι',
941
- 8093 => 'ἥι',
942
- 8094 => 'ἦι',
943
- 8095 => 'ἧι',
944
- 8096 => 'ὠι',
945
- 8097 => 'ὡι',
946
- 8098 => 'ὢι',
947
- 8099 => 'ὣι',
948
- 8100 => 'ὤι',
949
- 8101 => 'ὥι',
950
- 8102 => 'ὦι',
951
- 8103 => 'ὧι',
952
- 8104 => 'ὠι',
953
- 8105 => 'ὡι',
954
- 8106 => 'ὢι',
955
- 8107 => 'ὣι',
956
- 8108 => 'ὤι',
957
- 8109 => 'ὥι',
958
- 8110 => 'ὦι',
959
- 8111 => 'ὧι',
960
- 8114 => 'ὰι',
961
- 8115 => 'αι',
962
- 8116 => 'άι',
963
- 8119 => 'ᾶι',
964
- 8120 => 'ᾰ',
965
- 8121 => 'ᾱ',
966
- 8122 => 'ὰ',
967
- 8123 => 'ά',
968
- 8124 => 'αι',
969
- 8126 => 'ι',
970
- 8130 => 'ὴι',
971
- 8131 => 'ηι',
972
- 8132 => 'ήι',
973
- 8135 => 'ῆι',
974
- 8136 => 'ὲ',
975
- 8137 => 'έ',
976
- 8138 => 'ὴ',
977
- 8139 => 'ή',
978
- 8140 => 'ηι',
979
- 8147 => 'ΐ',
980
- 8152 => 'ῐ',
981
- 8153 => 'ῑ',
982
- 8154 => 'ὶ',
983
- 8155 => 'ί',
984
- 8163 => 'ΰ',
985
- 8168 => 'ῠ',
986
- 8169 => 'ῡ',
987
- 8170 => 'ὺ',
988
- 8171 => 'ύ',
989
- 8172 => 'ῥ',
990
- 8178 => 'ὼι',
991
- 8179 => 'ωι',
992
- 8180 => 'ώι',
993
- 8183 => 'ῶι',
994
- 8184 => 'ὸ',
995
- 8185 => 'ό',
996
- 8186 => 'ὼ',
997
- 8187 => 'ώ',
998
- 8188 => 'ωι',
999
- 8209 => '‐',
1000
- 8243 => '′′',
1001
- 8244 => '′′′',
1002
- 8246 => '‵‵',
1003
- 8247 => '‵‵‵',
1004
- 8279 => '′′′′',
1005
- 8304 => '0',
1006
- 8305 => 'i',
1007
- 8308 => '4',
1008
- 8309 => '5',
1009
- 8310 => '6',
1010
- 8311 => '7',
1011
- 8312 => '8',
1012
- 8313 => '9',
1013
- 8315 => '−',
1014
- 8319 => 'n',
1015
- 8320 => '0',
1016
- 8321 => '1',
1017
- 8322 => '2',
1018
- 8323 => '3',
1019
- 8324 => '4',
1020
- 8325 => '5',
1021
- 8326 => '6',
1022
- 8327 => '7',
1023
- 8328 => '8',
1024
- 8329 => '9',
1025
- 8331 => '−',
1026
- 8336 => 'a',
1027
- 8337 => 'e',
1028
- 8338 => 'o',
1029
- 8339 => 'x',
1030
- 8340 => 'ə',
1031
- 8341 => 'h',
1032
- 8342 => 'k',
1033
- 8343 => 'l',
1034
- 8344 => 'm',
1035
- 8345 => 'n',
1036
- 8346 => 'p',
1037
- 8347 => 's',
1038
- 8348 => 't',
1039
- 8360 => 'rs',
1040
- 8450 => 'c',
1041
- 8451 => '°c',
1042
- 8455 => 'ɛ',
1043
- 8457 => '°f',
1044
- 8458 => 'g',
1045
- 8459 => 'h',
1046
- 8460 => 'h',
1047
- 8461 => 'h',
1048
- 8462 => 'h',
1049
- 8463 => 'ħ',
1050
- 8464 => 'i',
1051
- 8465 => 'i',
1052
- 8466 => 'l',
1053
- 8467 => 'l',
1054
- 8469 => 'n',
1055
- 8470 => 'no',
1056
- 8473 => 'p',
1057
- 8474 => 'q',
1058
- 8475 => 'r',
1059
- 8476 => 'r',
1060
- 8477 => 'r',
1061
- 8480 => 'sm',
1062
- 8481 => 'tel',
1063
- 8482 => 'tm',
1064
- 8484 => 'z',
1065
- 8486 => 'ω',
1066
- 8488 => 'z',
1067
- 8490 => 'k',
1068
- 8491 => 'å',
1069
- 8492 => 'b',
1070
- 8493 => 'c',
1071
- 8495 => 'e',
1072
- 8496 => 'e',
1073
- 8497 => 'f',
1074
- 8499 => 'm',
1075
- 8500 => 'o',
1076
- 8501 => 'א',
1077
- 8502 => 'ב',
1078
- 8503 => 'ג',
1079
- 8504 => 'ד',
1080
- 8505 => 'i',
1081
- 8507 => 'fax',
1082
- 8508 => 'π',
1083
- 8509 => 'γ',
1084
- 8510 => 'γ',
1085
- 8511 => 'π',
1086
- 8512 => '∑',
1087
- 8517 => 'd',
1088
- 8518 => 'd',
1089
- 8519 => 'e',
1090
- 8520 => 'i',
1091
- 8521 => 'j',
1092
- 8528 => '1⁄7',
1093
- 8529 => '1⁄9',
1094
- 8530 => '1⁄10',
1095
- 8531 => '1⁄3',
1096
- 8532 => '2⁄3',
1097
- 8533 => '1⁄5',
1098
- 8534 => '2⁄5',
1099
- 8535 => '3⁄5',
1100
- 8536 => '4⁄5',
1101
- 8537 => '1⁄6',
1102
- 8538 => '5⁄6',
1103
- 8539 => '1⁄8',
1104
- 8540 => '3⁄8',
1105
- 8541 => '5⁄8',
1106
- 8542 => '7⁄8',
1107
- 8543 => '1⁄',
1108
- 8544 => 'i',
1109
- 8545 => 'ii',
1110
- 8546 => 'iii',
1111
- 8547 => 'iv',
1112
- 8548 => 'v',
1113
- 8549 => 'vi',
1114
- 8550 => 'vii',
1115
- 8551 => 'viii',
1116
- 8552 => 'ix',
1117
- 8553 => 'x',
1118
- 8554 => 'xi',
1119
- 8555 => 'xii',
1120
- 8556 => 'l',
1121
- 8557 => 'c',
1122
- 8558 => 'd',
1123
- 8559 => 'm',
1124
- 8560 => 'i',
1125
- 8561 => 'ii',
1126
- 8562 => 'iii',
1127
- 8563 => 'iv',
1128
- 8564 => 'v',
1129
- 8565 => 'vi',
1130
- 8566 => 'vii',
1131
- 8567 => 'viii',
1132
- 8568 => 'ix',
1133
- 8569 => 'x',
1134
- 8570 => 'xi',
1135
- 8571 => 'xii',
1136
- 8572 => 'l',
1137
- 8573 => 'c',
1138
- 8574 => 'd',
1139
- 8575 => 'm',
1140
- 8585 => '0⁄3',
1141
- 8748 => '∫∫',
1142
- 8749 => '∫∫∫',
1143
- 8751 => '∮∮',
1144
- 8752 => '∮∮∮',
1145
- 9001 => '〈',
1146
- 9002 => '〉',
1147
- 9312 => '1',
1148
- 9313 => '2',
1149
- 9314 => '3',
1150
- 9315 => '4',
1151
- 9316 => '5',
1152
- 9317 => '6',
1153
- 9318 => '7',
1154
- 9319 => '8',
1155
- 9320 => '9',
1156
- 9321 => '10',
1157
- 9322 => '11',
1158
- 9323 => '12',
1159
- 9324 => '13',
1160
- 9325 => '14',
1161
- 9326 => '15',
1162
- 9327 => '16',
1163
- 9328 => '17',
1164
- 9329 => '18',
1165
- 9330 => '19',
1166
- 9331 => '20',
1167
- 9398 => 'a',
1168
- 9399 => 'b',
1169
- 9400 => 'c',
1170
- 9401 => 'd',
1171
- 9402 => 'e',
1172
- 9403 => 'f',
1173
- 9404 => 'g',
1174
- 9405 => 'h',
1175
- 9406 => 'i',
1176
- 9407 => 'j',
1177
- 9408 => 'k',
1178
- 9409 => 'l',
1179
- 9410 => 'm',
1180
- 9411 => 'n',
1181
- 9412 => 'o',
1182
- 9413 => 'p',
1183
- 9414 => 'q',
1184
- 9415 => 'r',
1185
- 9416 => 's',
1186
- 9417 => 't',
1187
- 9418 => 'u',
1188
- 9419 => 'v',
1189
- 9420 => 'w',
1190
- 9421 => 'x',
1191
- 9422 => 'y',
1192
- 9423 => 'z',
1193
- 9424 => 'a',
1194
- 9425 => 'b',
1195
- 9426 => 'c',
1196
- 9427 => 'd',
1197
- 9428 => 'e',
1198
- 9429 => 'f',
1199
- 9430 => 'g',
1200
- 9431 => 'h',
1201
- 9432 => 'i',
1202
- 9433 => 'j',
1203
- 9434 => 'k',
1204
- 9435 => 'l',
1205
- 9436 => 'm',
1206
- 9437 => 'n',
1207
- 9438 => 'o',
1208
- 9439 => 'p',
1209
- 9440 => 'q',
1210
- 9441 => 'r',
1211
- 9442 => 's',
1212
- 9443 => 't',
1213
- 9444 => 'u',
1214
- 9445 => 'v',
1215
- 9446 => 'w',
1216
- 9447 => 'x',
1217
- 9448 => 'y',
1218
- 9449 => 'z',
1219
- 9450 => '0',
1220
- 10764 => '∫∫∫∫',
1221
- 10972 => '⫝̸',
1222
- 11264 => 'ⰰ',
1223
- 11265 => 'ⰱ',
1224
- 11266 => 'ⰲ',
1225
- 11267 => 'ⰳ',
1226
- 11268 => 'ⰴ',
1227
- 11269 => 'ⰵ',
1228
- 11270 => 'ⰶ',
1229
- 11271 => 'ⰷ',
1230
- 11272 => 'ⰸ',
1231
- 11273 => 'ⰹ',
1232
- 11274 => 'ⰺ',
1233
- 11275 => 'ⰻ',
1234
- 11276 => 'ⰼ',
1235
- 11277 => 'ⰽ',
1236
- 11278 => 'ⰾ',
1237
- 11279 => 'ⰿ',
1238
- 11280 => 'ⱀ',
1239
- 11281 => 'ⱁ',
1240
- 11282 => 'ⱂ',
1241
- 11283 => 'ⱃ',
1242
- 11284 => 'ⱄ',
1243
- 11285 => 'ⱅ',
1244
- 11286 => 'ⱆ',
1245
- 11287 => 'ⱇ',
1246
- 11288 => 'ⱈ',
1247
- 11289 => 'ⱉ',
1248
- 11290 => 'ⱊ',
1249
- 11291 => 'ⱋ',
1250
- 11292 => 'ⱌ',
1251
- 11293 => 'ⱍ',
1252
- 11294 => 'ⱎ',
1253
- 11295 => 'ⱏ',
1254
- 11296 => 'ⱐ',
1255
- 11297 => 'ⱑ',
1256
- 11298 => 'ⱒ',
1257
- 11299 => 'ⱓ',
1258
- 11300 => 'ⱔ',
1259
- 11301 => 'ⱕ',
1260
- 11302 => 'ⱖ',
1261
- 11303 => 'ⱗ',
1262
- 11304 => 'ⱘ',
1263
- 11305 => 'ⱙ',
1264
- 11306 => 'ⱚ',
1265
- 11307 => 'ⱛ',
1266
- 11308 => 'ⱜ',
1267
- 11309 => 'ⱝ',
1268
- 11310 => 'ⱞ',
1269
- 11360 => 'ⱡ',
1270
- 11362 => 'ɫ',
1271
- 11363 => 'ᵽ',
1272
- 11364 => 'ɽ',
1273
- 11367 => 'ⱨ',
1274
- 11369 => 'ⱪ',
1275
- 11371 => 'ⱬ',
1276
- 11373 => 'ɑ',
1277
- 11374 => 'ɱ',
1278
- 11375 => 'ɐ',
1279
- 11376 => 'ɒ',
1280
- 11378 => 'ⱳ',
1281
- 11381 => 'ⱶ',
1282
- 11388 => 'j',
1283
- 11389 => 'v',
1284
- 11390 => 'ȿ',
1285
- 11391 => 'ɀ',
1286
- 11392 => 'ⲁ',
1287
- 11394 => 'ⲃ',
1288
- 11396 => 'ⲅ',
1289
- 11398 => 'ⲇ',
1290
- 11400 => 'ⲉ',
1291
- 11402 => 'ⲋ',
1292
- 11404 => 'ⲍ',
1293
- 11406 => 'ⲏ',
1294
- 11408 => 'ⲑ',
1295
- 11410 => 'ⲓ',
1296
- 11412 => 'ⲕ',
1297
- 11414 => 'ⲗ',
1298
- 11416 => 'ⲙ',
1299
- 11418 => 'ⲛ',
1300
- 11420 => 'ⲝ',
1301
- 11422 => 'ⲟ',
1302
- 11424 => 'ⲡ',
1303
- 11426 => 'ⲣ',
1304
- 11428 => 'ⲥ',
1305
- 11430 => 'ⲧ',
1306
- 11432 => 'ⲩ',
1307
- 11434 => 'ⲫ',
1308
- 11436 => 'ⲭ',
1309
- 11438 => 'ⲯ',
1310
- 11440 => 'ⲱ',
1311
- 11442 => 'ⲳ',
1312
- 11444 => 'ⲵ',
1313
- 11446 => 'ⲷ',
1314
- 11448 => 'ⲹ',
1315
- 11450 => 'ⲻ',
1316
- 11452 => 'ⲽ',
1317
- 11454 => 'ⲿ',
1318
- 11456 => 'ⳁ',
1319
- 11458 => 'ⳃ',
1320
- 11460 => 'ⳅ',
1321
- 11462 => 'ⳇ',
1322
- 11464 => 'ⳉ',
1323
- 11466 => 'ⳋ',
1324
- 11468 => 'ⳍ',
1325
- 11470 => 'ⳏ',
1326
- 11472 => 'ⳑ',
1327
- 11474 => 'ⳓ',
1328
- 11476 => 'ⳕ',
1329
- 11478 => 'ⳗ',
1330
- 11480 => 'ⳙ',
1331
- 11482 => 'ⳛ',
1332
- 11484 => 'ⳝ',
1333
- 11486 => 'ⳟ',
1334
- 11488 => 'ⳡ',
1335
- 11490 => 'ⳣ',
1336
- 11499 => 'ⳬ',
1337
- 11501 => 'ⳮ',
1338
- 11506 => 'ⳳ',
1339
- 11631 => 'ⵡ',
1340
- 11935 => '母',
1341
- 12019 => '龟',
1342
- 12032 => '一',
1343
- 12033 => '丨',
1344
- 12034 => '丶',
1345
- 12035 => '丿',
1346
- 12036 => '乙',
1347
- 12037 => '亅',
1348
- 12038 => '二',
1349
- 12039 => '亠',
1350
- 12040 => '人',
1351
- 12041 => '儿',
1352
- 12042 => '入',
1353
- 12043 => '八',
1354
- 12044 => '冂',
1355
- 12045 => '冖',
1356
- 12046 => '冫',
1357
- 12047 => '几',
1358
- 12048 => '凵',
1359
- 12049 => '刀',
1360
- 12050 => '力',
1361
- 12051 => '勹',
1362
- 12052 => '匕',
1363
- 12053 => '匚',
1364
- 12054 => '匸',
1365
- 12055 => '十',
1366
- 12056 => '卜',
1367
- 12057 => '卩',
1368
- 12058 => '厂',
1369
- 12059 => '厶',
1370
- 12060 => '又',
1371
- 12061 => '口',
1372
- 12062 => '囗',
1373
- 12063 => '土',
1374
- 12064 => '士',
1375
- 12065 => '夂',
1376
- 12066 => '夊',
1377
- 12067 => '夕',
1378
- 12068 => '大',
1379
- 12069 => '女',
1380
- 12070 => '子',
1381
- 12071 => '宀',
1382
- 12072 => '寸',
1383
- 12073 => '小',
1384
- 12074 => '尢',
1385
- 12075 => '尸',
1386
- 12076 => '屮',
1387
- 12077 => '山',
1388
- 12078 => '巛',
1389
- 12079 => '工',
1390
- 12080 => '己',
1391
- 12081 => '巾',
1392
- 12082 => '干',
1393
- 12083 => '幺',
1394
- 12084 => '广',
1395
- 12085 => '廴',
1396
- 12086 => '廾',
1397
- 12087 => '弋',
1398
- 12088 => '弓',
1399
- 12089 => '彐',
1400
- 12090 => '彡',
1401
- 12091 => '彳',
1402
- 12092 => '心',
1403
- 12093 => '戈',
1404
- 12094 => '戶',
1405
- 12095 => '手',
1406
- 12096 => '支',
1407
- 12097 => '攴',
1408
- 12098 => '文',
1409
- 12099 => '斗',
1410
- 12100 => '斤',
1411
- 12101 => '方',
1412
- 12102 => '无',
1413
- 12103 => '日',
1414
- 12104 => '曰',
1415
- 12105 => '月',
1416
- 12106 => '木',
1417
- 12107 => '欠',
1418
- 12108 => '止',
1419
- 12109 => '歹',
1420
- 12110 => '殳',
1421
- 12111 => '毋',
1422
- 12112 => '比',
1423
- 12113 => '毛',
1424
- 12114 => '氏',
1425
- 12115 => '气',
1426
- 12116 => '水',
1427
- 12117 => '火',
1428
- 12118 => '爪',
1429
- 12119 => '父',
1430
- 12120 => '爻',
1431
- 12121 => '爿',
1432
- 12122 => '片',
1433
- 12123 => '牙',
1434
- 12124 => '牛',
1435
- 12125 => '犬',
1436
- 12126 => '玄',
1437
- 12127 => '玉',
1438
- 12128 => '瓜',
1439
- 12129 => '瓦',
1440
- 12130 => '甘',
1441
- 12131 => '生',
1442
- 12132 => '用',
1443
- 12133 => '田',
1444
- 12134 => '疋',
1445
- 12135 => '疒',
1446
- 12136 => '癶',
1447
- 12137 => '白',
1448
- 12138 => '皮',
1449
- 12139 => '皿',
1450
- 12140 => '目',
1451
- 12141 => '矛',
1452
- 12142 => '矢',
1453
- 12143 => '石',
1454
- 12144 => '示',
1455
- 12145 => '禸',
1456
- 12146 => '禾',
1457
- 12147 => '穴',
1458
- 12148 => '立',
1459
- 12149 => '竹',
1460
- 12150 => '米',
1461
- 12151 => '糸',
1462
- 12152 => '缶',
1463
- 12153 => '网',
1464
- 12154 => '羊',
1465
- 12155 => '羽',
1466
- 12156 => '老',
1467
- 12157 => '而',
1468
- 12158 => '耒',
1469
- 12159 => '耳',
1470
- 12160 => '聿',
1471
- 12161 => '肉',
1472
- 12162 => '臣',
1473
- 12163 => '自',
1474
- 12164 => '至',
1475
- 12165 => '臼',
1476
- 12166 => '舌',
1477
- 12167 => '舛',
1478
- 12168 => '舟',
1479
- 12169 => '艮',
1480
- 12170 => '色',
1481
- 12171 => '艸',
1482
- 12172 => '虍',
1483
- 12173 => '虫',
1484
- 12174 => '血',
1485
- 12175 => '行',
1486
- 12176 => '衣',
1487
- 12177 => '襾',
1488
- 12178 => '見',
1489
- 12179 => '角',
1490
- 12180 => '言',
1491
- 12181 => '谷',
1492
- 12182 => '豆',
1493
- 12183 => '豕',
1494
- 12184 => '豸',
1495
- 12185 => '貝',
1496
- 12186 => '赤',
1497
- 12187 => '走',
1498
- 12188 => '足',
1499
- 12189 => '身',
1500
- 12190 => '車',
1501
- 12191 => '辛',
1502
- 12192 => '辰',
1503
- 12193 => '辵',
1504
- 12194 => '邑',
1505
- 12195 => '酉',
1506
- 12196 => '釆',
1507
- 12197 => '里',
1508
- 12198 => '金',
1509
- 12199 => '長',
1510
- 12200 => '門',
1511
- 12201 => '阜',
1512
- 12202 => '隶',
1513
- 12203 => '隹',
1514
- 12204 => '雨',
1515
- 12205 => '靑',
1516
- 12206 => '非',
1517
- 12207 => '面',
1518
- 12208 => '革',
1519
- 12209 => '韋',
1520
- 12210 => '韭',
1521
- 12211 => '音',
1522
- 12212 => '頁',
1523
- 12213 => '風',
1524
- 12214 => '飛',
1525
- 12215 => '食',
1526
- 12216 => '首',
1527
- 12217 => '香',
1528
- 12218 => '馬',
1529
- 12219 => '骨',
1530
- 12220 => '高',
1531
- 12221 => '髟',
1532
- 12222 => '鬥',
1533
- 12223 => '鬯',
1534
- 12224 => '鬲',
1535
- 12225 => '鬼',
1536
- 12226 => '魚',
1537
- 12227 => '鳥',
1538
- 12228 => '鹵',
1539
- 12229 => '鹿',
1540
- 12230 => '麥',
1541
- 12231 => '麻',
1542
- 12232 => '黃',
1543
- 12233 => '黍',
1544
- 12234 => '黑',
1545
- 12235 => '黹',
1546
- 12236 => '黽',
1547
- 12237 => '鼎',
1548
- 12238 => '鼓',
1549
- 12239 => '鼠',
1550
- 12240 => '鼻',
1551
- 12241 => '齊',
1552
- 12242 => '齒',
1553
- 12243 => '龍',
1554
- 12244 => '龜',
1555
- 12245 => '龠',
1556
- 12290 => '.',
1557
- 12342 => '〒',
1558
- 12344 => '十',
1559
- 12345 => '卄',
1560
- 12346 => '卅',
1561
- 12447 => 'より',
1562
- 12543 => 'コト',
1563
- 12593 => 'ᄀ',
1564
- 12594 => 'ᄁ',
1565
- 12595 => 'ᆪ',
1566
- 12596 => 'ᄂ',
1567
- 12597 => 'ᆬ',
1568
- 12598 => 'ᆭ',
1569
- 12599 => 'ᄃ',
1570
- 12600 => 'ᄄ',
1571
- 12601 => 'ᄅ',
1572
- 12602 => 'ᆰ',
1573
- 12603 => 'ᆱ',
1574
- 12604 => 'ᆲ',
1575
- 12605 => 'ᆳ',
1576
- 12606 => 'ᆴ',
1577
- 12607 => 'ᆵ',
1578
- 12608 => 'ᄚ',
1579
- 12609 => 'ᄆ',
1580
- 12610 => 'ᄇ',
1581
- 12611 => 'ᄈ',
1582
- 12612 => 'ᄡ',
1583
- 12613 => 'ᄉ',
1584
- 12614 => 'ᄊ',
1585
- 12615 => 'ᄋ',
1586
- 12616 => 'ᄌ',
1587
- 12617 => 'ᄍ',
1588
- 12618 => 'ᄎ',
1589
- 12619 => 'ᄏ',
1590
- 12620 => 'ᄐ',
1591
- 12621 => 'ᄑ',
1592
- 12622 => 'ᄒ',
1593
- 12623 => 'ᅡ',
1594
- 12624 => 'ᅢ',
1595
- 12625 => 'ᅣ',
1596
- 12626 => 'ᅤ',
1597
- 12627 => 'ᅥ',
1598
- 12628 => 'ᅦ',
1599
- 12629 => 'ᅧ',
1600
- 12630 => 'ᅨ',
1601
- 12631 => 'ᅩ',
1602
- 12632 => 'ᅪ',
1603
- 12633 => 'ᅫ',
1604
- 12634 => 'ᅬ',
1605
- 12635 => 'ᅭ',
1606
- 12636 => 'ᅮ',
1607
- 12637 => 'ᅯ',
1608
- 12638 => 'ᅰ',
1609
- 12639 => 'ᅱ',
1610
- 12640 => 'ᅲ',
1611
- 12641 => 'ᅳ',
1612
- 12642 => 'ᅴ',
1613
- 12643 => 'ᅵ',
1614
- 12645 => 'ᄔ',
1615
- 12646 => 'ᄕ',
1616
- 12647 => 'ᇇ',
1617
- 12648 => 'ᇈ',
1618
- 12649 => 'ᇌ',
1619
- 12650 => 'ᇎ',
1620
- 12651 => 'ᇓ',
1621
- 12652 => 'ᇗ',
1622
- 12653 => 'ᇙ',
1623
- 12654 => 'ᄜ',
1624
- 12655 => 'ᇝ',
1625
- 12656 => 'ᇟ',
1626
- 12657 => 'ᄝ',
1627
- 12658 => 'ᄞ',
1628
- 12659 => 'ᄠ',
1629
- 12660 => 'ᄢ',
1630
- 12661 => 'ᄣ',
1631
- 12662 => 'ᄧ',
1632
- 12663 => 'ᄩ',
1633
- 12664 => 'ᄫ',
1634
- 12665 => 'ᄬ',
1635
- 12666 => 'ᄭ',
1636
- 12667 => 'ᄮ',
1637
- 12668 => 'ᄯ',
1638
- 12669 => 'ᄲ',
1639
- 12670 => 'ᄶ',
1640
- 12671 => 'ᅀ',
1641
- 12672 => 'ᅇ',
1642
- 12673 => 'ᅌ',
1643
- 12674 => 'ᇱ',
1644
- 12675 => 'ᇲ',
1645
- 12676 => 'ᅗ',
1646
- 12677 => 'ᅘ',
1647
- 12678 => 'ᅙ',
1648
- 12679 => 'ᆄ',
1649
- 12680 => 'ᆅ',
1650
- 12681 => 'ᆈ',
1651
- 12682 => 'ᆑ',
1652
- 12683 => 'ᆒ',
1653
- 12684 => 'ᆔ',
1654
- 12685 => 'ᆞ',
1655
- 12686 => 'ᆡ',
1656
- 12690 => '一',
1657
- 12691 => '二',
1658
- 12692 => '三',
1659
- 12693 => '四',
1660
- 12694 => '上',
1661
- 12695 => '中',
1662
- 12696 => '下',
1663
- 12697 => '甲',
1664
- 12698 => '乙',
1665
- 12699 => '丙',
1666
- 12700 => '丁',
1667
- 12701 => '天',
1668
- 12702 => '地',
1669
- 12703 => '人',
1670
- 12868 => '問',
1671
- 12869 => '幼',
1672
- 12870 => '文',
1673
- 12871 => '箏',
1674
- 12880 => 'pte',
1675
- 12881 => '21',
1676
- 12882 => '22',
1677
- 12883 => '23',
1678
- 12884 => '24',
1679
- 12885 => '25',
1680
- 12886 => '26',
1681
- 12887 => '27',
1682
- 12888 => '28',
1683
- 12889 => '29',
1684
- 12890 => '30',
1685
- 12891 => '31',
1686
- 12892 => '32',
1687
- 12893 => '33',
1688
- 12894 => '34',
1689
- 12895 => '35',
1690
- 12896 => 'ᄀ',
1691
- 12897 => 'ᄂ',
1692
- 12898 => 'ᄃ',
1693
- 12899 => 'ᄅ',
1694
- 12900 => 'ᄆ',
1695
- 12901 => 'ᄇ',
1696
- 12902 => 'ᄉ',
1697
- 12903 => 'ᄋ',
1698
- 12904 => 'ᄌ',
1699
- 12905 => 'ᄎ',
1700
- 12906 => 'ᄏ',
1701
- 12907 => 'ᄐ',
1702
- 12908 => 'ᄑ',
1703
- 12909 => 'ᄒ',
1704
- 12910 => '가',
1705
- 12911 => '나',
1706
- 12912 => '다',
1707
- 12913 => '라',
1708
- 12914 => '마',
1709
- 12915 => '바',
1710
- 12916 => '사',
1711
- 12917 => '아',
1712
- 12918 => '자',
1713
- 12919 => '차',
1714
- 12920 => '카',
1715
- 12921 => '타',
1716
- 12922 => '파',
1717
- 12923 => '하',
1718
- 12924 => '참고',
1719
- 12925 => '주의',
1720
- 12926 => '우',
1721
- 12928 => '一',
1722
- 12929 => '二',
1723
- 12930 => '三',
1724
- 12931 => '四',
1725
- 12932 => '五',
1726
- 12933 => '六',
1727
- 12934 => '七',
1728
- 12935 => '八',
1729
- 12936 => '九',
1730
- 12937 => '十',
1731
- 12938 => '月',
1732
- 12939 => '火',
1733
- 12940 => '水',
1734
- 12941 => '木',
1735
- 12942 => '金',
1736
- 12943 => '土',
1737
- 12944 => '日',
1738
- 12945 => '株',
1739
- 12946 => '有',
1740
- 12947 => '社',
1741
- 12948 => '名',
1742
- 12949 => '特',
1743
- 12950 => '財',
1744
- 12951 => '祝',
1745
- 12952 => '労',
1746
- 12953 => '秘',
1747
- 12954 => '男',
1748
- 12955 => '女',
1749
- 12956 => '適',
1750
- 12957 => '優',
1751
- 12958 => '印',
1752
- 12959 => '注',
1753
- 12960 => '項',
1754
- 12961 => '休',
1755
- 12962 => '写',
1756
- 12963 => '正',
1757
- 12964 => '上',
1758
- 12965 => '中',
1759
- 12966 => '下',
1760
- 12967 => '左',
1761
- 12968 => '右',
1762
- 12969 => '医',
1763
- 12970 => '宗',
1764
- 12971 => '学',
1765
- 12972 => '監',
1766
- 12973 => '企',
1767
- 12974 => '資',
1768
- 12975 => '協',
1769
- 12976 => '夜',
1770
- 12977 => '36',
1771
- 12978 => '37',
1772
- 12979 => '38',
1773
- 12980 => '39',
1774
- 12981 => '40',
1775
- 12982 => '41',
1776
- 12983 => '42',
1777
- 12984 => '43',
1778
- 12985 => '44',
1779
- 12986 => '45',
1780
- 12987 => '46',
1781
- 12988 => '47',
1782
- 12989 => '48',
1783
- 12990 => '49',
1784
- 12991 => '50',
1785
- 12992 => '1月',
1786
- 12993 => '2月',
1787
- 12994 => '3月',
1788
- 12995 => '4月',
1789
- 12996 => '5月',
1790
- 12997 => '6月',
1791
- 12998 => '7月',
1792
- 12999 => '8月',
1793
- 13000 => '9月',
1794
- 13001 => '10月',
1795
- 13002 => '11月',
1796
- 13003 => '12月',
1797
- 13004 => 'hg',
1798
- 13005 => 'erg',
1799
- 13006 => 'ev',
1800
- 13007 => 'ltd',
1801
- 13008 => 'ア',
1802
- 13009 => 'イ',
1803
- 13010 => 'ウ',
1804
- 13011 => 'エ',
1805
- 13012 => 'オ',
1806
- 13013 => 'カ',
1807
- 13014 => 'キ',
1808
- 13015 => 'ク',
1809
- 13016 => 'ケ',
1810
- 13017 => 'コ',
1811
- 13018 => 'サ',
1812
- 13019 => 'シ',
1813
- 13020 => 'ス',
1814
- 13021 => 'セ',
1815
- 13022 => 'ソ',
1816
- 13023 => 'タ',
1817
- 13024 => 'チ',
1818
- 13025 => 'ツ',
1819
- 13026 => 'テ',
1820
- 13027 => 'ト',
1821
- 13028 => 'ナ',
1822
- 13029 => 'ニ',
1823
- 13030 => 'ヌ',
1824
- 13031 => 'ネ',
1825
- 13032 => 'ノ',
1826
- 13033 => 'ハ',
1827
- 13034 => 'ヒ',
1828
- 13035 => 'フ',
1829
- 13036 => 'ヘ',
1830
- 13037 => 'ホ',
1831
- 13038 => 'マ',
1832
- 13039 => 'ミ',
1833
- 13040 => 'ム',
1834
- 13041 => 'メ',
1835
- 13042 => 'モ',
1836
- 13043 => 'ヤ',
1837
- 13044 => 'ユ',
1838
- 13045 => 'ヨ',
1839
- 13046 => 'ラ',
1840
- 13047 => 'リ',
1841
- 13048 => 'ル',
1842
- 13049 => 'レ',
1843
- 13050 => 'ロ',
1844
- 13051 => 'ワ',
1845
- 13052 => 'ヰ',
1846
- 13053 => 'ヱ',
1847
- 13054 => 'ヲ',
1848
- 13055 => '令和',
1849
- 13056 => 'アパート',
1850
- 13057 => 'アルファ',
1851
- 13058 => 'アンペア',
1852
- 13059 => 'アール',
1853
- 13060 => 'イニング',
1854
- 13061 => 'インチ',
1855
- 13062 => 'ウォン',
1856
- 13063 => 'エスクード',
1857
- 13064 => 'エーカー',
1858
- 13065 => 'オンス',
1859
- 13066 => 'オーム',
1860
- 13067 => 'カイリ',
1861
- 13068 => 'カラット',
1862
- 13069 => 'カロリー',
1863
- 13070 => 'ガロン',
1864
- 13071 => 'ガンマ',
1865
- 13072 => 'ギガ',
1866
- 13073 => 'ギニー',
1867
- 13074 => 'キュリー',
1868
- 13075 => 'ギルダー',
1869
- 13076 => 'キロ',
1870
- 13077 => 'キログラム',
1871
- 13078 => 'キロメートル',
1872
- 13079 => 'キロワット',
1873
- 13080 => 'グラム',
1874
- 13081 => 'グラムトン',
1875
- 13082 => 'クルゼイロ',
1876
- 13083 => 'クローネ',
1877
- 13084 => 'ケース',
1878
- 13085 => 'コルナ',
1879
- 13086 => 'コーポ',
1880
- 13087 => 'サイクル',
1881
- 13088 => 'サンチーム',
1882
- 13089 => 'シリング',
1883
- 13090 => 'センチ',
1884
- 13091 => 'セント',
1885
- 13092 => 'ダース',
1886
- 13093 => 'デシ',
1887
- 13094 => 'ドル',
1888
- 13095 => 'トン',
1889
- 13096 => 'ナノ',
1890
- 13097 => 'ノット',
1891
- 13098 => 'ハイツ',
1892
- 13099 => 'パーセント',
1893
- 13100 => 'パーツ',
1894
- 13101 => 'バーレル',
1895
- 13102 => 'ピアストル',
1896
- 13103 => 'ピクル',
1897
- 13104 => 'ピコ',
1898
- 13105 => 'ビル',
1899
- 13106 => 'ファラッド',
1900
- 13107 => 'フィート',
1901
- 13108 => 'ブッシェル',
1902
- 13109 => 'フラン',
1903
- 13110 => 'ヘクタール',
1904
- 13111 => 'ペソ',
1905
- 13112 => 'ペニヒ',
1906
- 13113 => 'ヘルツ',
1907
- 13114 => 'ペンス',
1908
- 13115 => 'ページ',
1909
- 13116 => 'ベータ',
1910
- 13117 => 'ポイント',
1911
- 13118 => 'ボルト',
1912
- 13119 => 'ホン',
1913
- 13120 => 'ポンド',
1914
- 13121 => 'ホール',
1915
- 13122 => 'ホーン',
1916
- 13123 => 'マイクロ',
1917
- 13124 => 'マイル',
1918
- 13125 => 'マッハ',
1919
- 13126 => 'マルク',
1920
- 13127 => 'マンション',
1921
- 13128 => 'ミクロン',
1922
- 13129 => 'ミリ',
1923
- 13130 => 'ミリバール',
1924
- 13131 => 'メガ',
1925
- 13132 => 'メガトン',
1926
- 13133 => 'メートル',
1927
- 13134 => 'ヤード',
1928
- 13135 => 'ヤール',
1929
- 13136 => 'ユアン',
1930
- 13137 => 'リットル',
1931
- 13138 => 'リラ',
1932
- 13139 => 'ルピー',
1933
- 13140 => 'ルーブル',
1934
- 13141 => 'レム',
1935
- 13142 => 'レントゲン',
1936
- 13143 => 'ワット',
1937
- 13144 => '0点',
1938
- 13145 => '1点',
1939
- 13146 => '2点',
1940
- 13147 => '3点',
1941
- 13148 => '4点',
1942
- 13149 => '5点',
1943
- 13150 => '6点',
1944
- 13151 => '7点',
1945
- 13152 => '8点',
1946
- 13153 => '9点',
1947
- 13154 => '10点',
1948
- 13155 => '11点',
1949
- 13156 => '12点',
1950
- 13157 => '13点',
1951
- 13158 => '14点',
1952
- 13159 => '15点',
1953
- 13160 => '16点',
1954
- 13161 => '17点',
1955
- 13162 => '18点',
1956
- 13163 => '19点',
1957
- 13164 => '20点',
1958
- 13165 => '21点',
1959
- 13166 => '22点',
1960
- 13167 => '23点',
1961
- 13168 => '24点',
1962
- 13169 => 'hpa',
1963
- 13170 => 'da',
1964
- 13171 => 'au',
1965
- 13172 => 'bar',
1966
- 13173 => 'ov',
1967
- 13174 => 'pc',
1968
- 13175 => 'dm',
1969
- 13176 => 'dm2',
1970
- 13177 => 'dm3',
1971
- 13178 => 'iu',
1972
- 13179 => '平成',
1973
- 13180 => '昭和',
1974
- 13181 => '大正',
1975
- 13182 => '明治',
1976
- 13183 => '株式会社',
1977
- 13184 => 'pa',
1978
- 13185 => 'na',
1979
- 13186 => 'μa',
1980
- 13187 => 'ma',
1981
- 13188 => 'ka',
1982
- 13189 => 'kb',
1983
- 13190 => 'mb',
1984
- 13191 => 'gb',
1985
- 13192 => 'cal',
1986
- 13193 => 'kcal',
1987
- 13194 => 'pf',
1988
- 13195 => 'nf',
1989
- 13196 => 'μf',
1990
- 13197 => 'μg',
1991
- 13198 => 'mg',
1992
- 13199 => 'kg',
1993
- 13200 => 'hz',
1994
- 13201 => 'khz',
1995
- 13202 => 'mhz',
1996
- 13203 => 'ghz',
1997
- 13204 => 'thz',
1998
- 13205 => 'μl',
1999
- 13206 => 'ml',
2000
- 13207 => 'dl',
2001
- 13208 => 'kl',
2002
- 13209 => 'fm',
2003
- 13210 => 'nm',
2004
- 13211 => 'μm',
2005
- 13212 => 'mm',
2006
- 13213 => 'cm',
2007
- 13214 => 'km',
2008
- 13215 => 'mm2',
2009
- 13216 => 'cm2',
2010
- 13217 => 'm2',
2011
- 13218 => 'km2',
2012
- 13219 => 'mm3',
2013
- 13220 => 'cm3',
2014
- 13221 => 'm3',
2015
- 13222 => 'km3',
2016
- 13223 => 'm∕s',
2017
- 13224 => 'm∕s2',
2018
- 13225 => 'pa',
2019
- 13226 => 'kpa',
2020
- 13227 => 'mpa',
2021
- 13228 => 'gpa',
2022
- 13229 => 'rad',
2023
- 13230 => 'rad∕s',
2024
- 13231 => 'rad∕s2',
2025
- 13232 => 'ps',
2026
- 13233 => 'ns',
2027
- 13234 => 'μs',
2028
- 13235 => 'ms',
2029
- 13236 => 'pv',
2030
- 13237 => 'nv',
2031
- 13238 => 'μv',
2032
- 13239 => 'mv',
2033
- 13240 => 'kv',
2034
- 13241 => 'mv',
2035
- 13242 => 'pw',
2036
- 13243 => 'nw',
2037
- 13244 => 'μw',
2038
- 13245 => 'mw',
2039
- 13246 => 'kw',
2040
- 13247 => 'mw',
2041
- 13248 => 'kω',
2042
- 13249 => 'mω',
2043
- 13251 => 'bq',
2044
- 13252 => 'cc',
2045
- 13253 => 'cd',
2046
- 13254 => 'c∕kg',
2047
- 13256 => 'db',
2048
- 13257 => 'gy',
2049
- 13258 => 'ha',
2050
- 13259 => 'hp',
2051
- 13260 => 'in',
2052
- 13261 => 'kk',
2053
- 13262 => 'km',
2054
- 13263 => 'kt',
2055
- 13264 => 'lm',
2056
- 13265 => 'ln',
2057
- 13266 => 'log',
2058
- 13267 => 'lx',
2059
- 13268 => 'mb',
2060
- 13269 => 'mil',
2061
- 13270 => 'mol',
2062
- 13271 => 'ph',
2063
- 13273 => 'ppm',
2064
- 13274 => 'pr',
2065
- 13275 => 'sr',
2066
- 13276 => 'sv',
2067
- 13277 => 'wb',
2068
- 13278 => 'v∕m',
2069
- 13279 => 'a∕m',
2070
- 13280 => '1日',
2071
- 13281 => '2日',
2072
- 13282 => '3日',
2073
- 13283 => '4日',
2074
- 13284 => '5日',
2075
- 13285 => '6日',
2076
- 13286 => '7日',
2077
- 13287 => '8日',
2078
- 13288 => '9日',
2079
- 13289 => '10日',
2080
- 13290 => '11日',
2081
- 13291 => '12日',
2082
- 13292 => '13日',
2083
- 13293 => '14日',
2084
- 13294 => '15日',
2085
- 13295 => '16日',
2086
- 13296 => '17日',
2087
- 13297 => '18日',
2088
- 13298 => '19日',
2089
- 13299 => '20日',
2090
- 13300 => '21日',
2091
- 13301 => '22日',
2092
- 13302 => '23日',
2093
- 13303 => '24日',
2094
- 13304 => '25日',
2095
- 13305 => '26日',
2096
- 13306 => '27日',
2097
- 13307 => '28日',
2098
- 13308 => '29日',
2099
- 13309 => '30日',
2100
- 13310 => '31日',
2101
- 13311 => 'gal',
2102
- 42560 => 'ꙁ',
2103
- 42562 => 'ꙃ',
2104
- 42564 => 'ꙅ',
2105
- 42566 => 'ꙇ',
2106
- 42568 => 'ꙉ',
2107
- 42570 => 'ꙋ',
2108
- 42572 => 'ꙍ',
2109
- 42574 => 'ꙏ',
2110
- 42576 => 'ꙑ',
2111
- 42578 => 'ꙓ',
2112
- 42580 => 'ꙕ',
2113
- 42582 => 'ꙗ',
2114
- 42584 => 'ꙙ',
2115
- 42586 => 'ꙛ',
2116
- 42588 => 'ꙝ',
2117
- 42590 => 'ꙟ',
2118
- 42592 => 'ꙡ',
2119
- 42594 => 'ꙣ',
2120
- 42596 => 'ꙥ',
2121
- 42598 => 'ꙧ',
2122
- 42600 => 'ꙩ',
2123
- 42602 => 'ꙫ',
2124
- 42604 => 'ꙭ',
2125
- 42624 => 'ꚁ',
2126
- 42626 => 'ꚃ',
2127
- 42628 => 'ꚅ',
2128
- 42630 => 'ꚇ',
2129
- 42632 => 'ꚉ',
2130
- 42634 => 'ꚋ',
2131
- 42636 => 'ꚍ',
2132
- 42638 => 'ꚏ',
2133
- 42640 => 'ꚑ',
2134
- 42642 => 'ꚓ',
2135
- 42644 => 'ꚕ',
2136
- 42646 => 'ꚗ',
2137
- 42648 => 'ꚙ',
2138
- 42650 => 'ꚛ',
2139
- 42652 => 'ъ',
2140
- 42653 => 'ь',
2141
- 42786 => 'ꜣ',
2142
- 42788 => 'ꜥ',
2143
- 42790 => 'ꜧ',
2144
- 42792 => 'ꜩ',
2145
- 42794 => 'ꜫ',
2146
- 42796 => 'ꜭ',
2147
- 42798 => 'ꜯ',
2148
- 42802 => 'ꜳ',
2149
- 42804 => 'ꜵ',
2150
- 42806 => 'ꜷ',
2151
- 42808 => 'ꜹ',
2152
- 42810 => 'ꜻ',
2153
- 42812 => 'ꜽ',
2154
- 42814 => 'ꜿ',
2155
- 42816 => 'ꝁ',
2156
- 42818 => 'ꝃ',
2157
- 42820 => 'ꝅ',
2158
- 42822 => 'ꝇ',
2159
- 42824 => 'ꝉ',
2160
- 42826 => 'ꝋ',
2161
- 42828 => 'ꝍ',
2162
- 42830 => 'ꝏ',
2163
- 42832 => 'ꝑ',
2164
- 42834 => 'ꝓ',
2165
- 42836 => 'ꝕ',
2166
- 42838 => 'ꝗ',
2167
- 42840 => 'ꝙ',
2168
- 42842 => 'ꝛ',
2169
- 42844 => 'ꝝ',
2170
- 42846 => 'ꝟ',
2171
- 42848 => 'ꝡ',
2172
- 42850 => 'ꝣ',
2173
- 42852 => 'ꝥ',
2174
- 42854 => 'ꝧ',
2175
- 42856 => 'ꝩ',
2176
- 42858 => 'ꝫ',
2177
- 42860 => 'ꝭ',
2178
- 42862 => 'ꝯ',
2179
- 42864 => 'ꝯ',
2180
- 42873 => 'ꝺ',
2181
- 42875 => 'ꝼ',
2182
- 42877 => 'ᵹ',
2183
- 42878 => 'ꝿ',
2184
- 42880 => 'ꞁ',
2185
- 42882 => 'ꞃ',
2186
- 42884 => 'ꞅ',
2187
- 42886 => 'ꞇ',
2188
- 42891 => 'ꞌ',
2189
- 42893 => 'ɥ',
2190
- 42896 => 'ꞑ',
2191
- 42898 => 'ꞓ',
2192
- 42902 => 'ꞗ',
2193
- 42904 => 'ꞙ',
2194
- 42906 => 'ꞛ',
2195
- 42908 => 'ꞝ',
2196
- 42910 => 'ꞟ',
2197
- 42912 => 'ꞡ',
2198
- 42914 => 'ꞣ',
2199
- 42916 => 'ꞥ',
2200
- 42918 => 'ꞧ',
2201
- 42920 => 'ꞩ',
2202
- 42922 => 'ɦ',
2203
- 42923 => 'ɜ',
2204
- 42924 => 'ɡ',
2205
- 42925 => 'ɬ',
2206
- 42926 => 'ɪ',
2207
- 42928 => 'ʞ',
2208
- 42929 => 'ʇ',
2209
- 42930 => 'ʝ',
2210
- 42931 => 'ꭓ',
2211
- 42932 => 'ꞵ',
2212
- 42934 => 'ꞷ',
2213
- 42936 => 'ꞹ',
2214
- 42938 => 'ꞻ',
2215
- 42940 => 'ꞽ',
2216
- 42942 => 'ꞿ',
2217
- 42946 => 'ꟃ',
2218
- 42948 => 'ꞔ',
2219
- 42949 => 'ʂ',
2220
- 42950 => 'ᶎ',
2221
- 42951 => 'ꟈ',
2222
- 42953 => 'ꟊ',
2223
- 42997 => 'ꟶ',
2224
- 43000 => 'ħ',
2225
- 43001 => 'œ',
2226
- 43868 => 'ꜧ',
2227
- 43869 => 'ꬷ',
2228
- 43870 => 'ɫ',
2229
- 43871 => 'ꭒ',
2230
- 43881 => 'ʍ',
2231
- 43888 => 'Ꭰ',
2232
- 43889 => 'Ꭱ',
2233
- 43890 => 'Ꭲ',
2234
- 43891 => 'Ꭳ',
2235
- 43892 => 'Ꭴ',
2236
- 43893 => 'Ꭵ',
2237
- 43894 => 'Ꭶ',
2238
- 43895 => 'Ꭷ',
2239
- 43896 => 'Ꭸ',
2240
- 43897 => 'Ꭹ',
2241
- 43898 => 'Ꭺ',
2242
- 43899 => 'Ꭻ',
2243
- 43900 => 'Ꭼ',
2244
- 43901 => 'Ꭽ',
2245
- 43902 => 'Ꭾ',
2246
- 43903 => 'Ꭿ',
2247
- 43904 => 'Ꮀ',
2248
- 43905 => 'Ꮁ',
2249
- 43906 => 'Ꮂ',
2250
- 43907 => 'Ꮃ',
2251
- 43908 => 'Ꮄ',
2252
- 43909 => 'Ꮅ',
2253
- 43910 => 'Ꮆ',
2254
- 43911 => 'Ꮇ',
2255
- 43912 => 'Ꮈ',
2256
- 43913 => 'Ꮉ',
2257
- 43914 => 'Ꮊ',
2258
- 43915 => 'Ꮋ',
2259
- 43916 => 'Ꮌ',
2260
- 43917 => 'Ꮍ',
2261
- 43918 => 'Ꮎ',
2262
- 43919 => 'Ꮏ',
2263
- 43920 => 'Ꮐ',
2264
- 43921 => 'Ꮑ',
2265
- 43922 => 'Ꮒ',
2266
- 43923 => 'Ꮓ',
2267
- 43924 => 'Ꮔ',
2268
- 43925 => 'Ꮕ',
2269
- 43926 => 'Ꮖ',
2270
- 43927 => 'Ꮗ',
2271
- 43928 => 'Ꮘ',
2272
- 43929 => 'Ꮙ',
2273
- 43930 => 'Ꮚ',
2274
- 43931 => 'Ꮛ',
2275
- 43932 => 'Ꮜ',
2276
- 43933 => 'Ꮝ',
2277
- 43934 => 'Ꮞ',
2278
- 43935 => 'Ꮟ',
2279
- 43936 => 'Ꮠ',
2280
- 43937 => 'Ꮡ',
2281
- 43938 => 'Ꮢ',
2282
- 43939 => 'Ꮣ',
2283
- 43940 => 'Ꮤ',
2284
- 43941 => 'Ꮥ',
2285
- 43942 => 'Ꮦ',
2286
- 43943 => 'Ꮧ',
2287
- 43944 => 'Ꮨ',
2288
- 43945 => 'Ꮩ',
2289
- 43946 => 'Ꮪ',
2290
- 43947 => 'Ꮫ',
2291
- 43948 => 'Ꮬ',
2292
- 43949 => 'Ꮭ',
2293
- 43950 => 'Ꮮ',
2294
- 43951 => 'Ꮯ',
2295
- 43952 => 'Ꮰ',
2296
- 43953 => 'Ꮱ',
2297
- 43954 => 'Ꮲ',
2298
- 43955 => 'Ꮳ',
2299
- 43956 => 'Ꮴ',
2300
- 43957 => 'Ꮵ',
2301
- 43958 => 'Ꮶ',
2302
- 43959 => 'Ꮷ',
2303
- 43960 => 'Ꮸ',
2304
- 43961 => 'Ꮹ',
2305
- 43962 => 'Ꮺ',
2306
- 43963 => 'Ꮻ',
2307
- 43964 => 'Ꮼ',
2308
- 43965 => 'Ꮽ',
2309
- 43966 => 'Ꮾ',
2310
- 43967 => 'Ꮿ',
2311
- 63744 => '豈',
2312
- 63745 => '更',
2313
- 63746 => '車',
2314
- 63747 => '賈',
2315
- 63748 => '滑',
2316
- 63749 => '串',
2317
- 63750 => '句',
2318
- 63751 => '龜',
2319
- 63752 => '龜',
2320
- 63753 => '契',
2321
- 63754 => '金',
2322
- 63755 => '喇',
2323
- 63756 => '奈',
2324
- 63757 => '懶',
2325
- 63758 => '癩',
2326
- 63759 => '羅',
2327
- 63760 => '蘿',
2328
- 63761 => '螺',
2329
- 63762 => '裸',
2330
- 63763 => '邏',
2331
- 63764 => '樂',
2332
- 63765 => '洛',
2333
- 63766 => '烙',
2334
- 63767 => '珞',
2335
- 63768 => '落',
2336
- 63769 => '酪',
2337
- 63770 => '駱',
2338
- 63771 => '亂',
2339
- 63772 => '卵',
2340
- 63773 => '欄',
2341
- 63774 => '爛',
2342
- 63775 => '蘭',
2343
- 63776 => '鸞',
2344
- 63777 => '嵐',
2345
- 63778 => '濫',
2346
- 63779 => '藍',
2347
- 63780 => '襤',
2348
- 63781 => '拉',
2349
- 63782 => '臘',
2350
- 63783 => '蠟',
2351
- 63784 => '廊',
2352
- 63785 => '朗',
2353
- 63786 => '浪',
2354
- 63787 => '狼',
2355
- 63788 => '郎',
2356
- 63789 => '來',
2357
- 63790 => '冷',
2358
- 63791 => '勞',
2359
- 63792 => '擄',
2360
- 63793 => '櫓',
2361
- 63794 => '爐',
2362
- 63795 => '盧',
2363
- 63796 => '老',
2364
- 63797 => '蘆',
2365
- 63798 => '虜',
2366
- 63799 => '路',
2367
- 63800 => '露',
2368
- 63801 => '魯',
2369
- 63802 => '鷺',
2370
- 63803 => '碌',
2371
- 63804 => '祿',
2372
- 63805 => '綠',
2373
- 63806 => '菉',
2374
- 63807 => '錄',
2375
- 63808 => '鹿',
2376
- 63809 => '論',
2377
- 63810 => '壟',
2378
- 63811 => '弄',
2379
- 63812 => '籠',
2380
- 63813 => '聾',
2381
- 63814 => '牢',
2382
- 63815 => '磊',
2383
- 63816 => '賂',
2384
- 63817 => '雷',
2385
- 63818 => '壘',
2386
- 63819 => '屢',
2387
- 63820 => '樓',
2388
- 63821 => '淚',
2389
- 63822 => '漏',
2390
- 63823 => '累',
2391
- 63824 => '縷',
2392
- 63825 => '陋',
2393
- 63826 => '勒',
2394
- 63827 => '肋',
2395
- 63828 => '凜',
2396
- 63829 => '凌',
2397
- 63830 => '稜',
2398
- 63831 => '綾',
2399
- 63832 => '菱',
2400
- 63833 => '陵',
2401
- 63834 => '讀',
2402
- 63835 => '拏',
2403
- 63836 => '樂',
2404
- 63837 => '諾',
2405
- 63838 => '丹',
2406
- 63839 => '寧',
2407
- 63840 => '怒',
2408
- 63841 => '率',
2409
- 63842 => '異',
2410
- 63843 => '北',
2411
- 63844 => '磻',
2412
- 63845 => '便',
2413
- 63846 => '復',
2414
- 63847 => '不',
2415
- 63848 => '泌',
2416
- 63849 => '數',
2417
- 63850 => '索',
2418
- 63851 => '參',
2419
- 63852 => '塞',
2420
- 63853 => '省',
2421
- 63854 => '葉',
2422
- 63855 => '說',
2423
- 63856 => '殺',
2424
- 63857 => '辰',
2425
- 63858 => '沈',
2426
- 63859 => '拾',
2427
- 63860 => '若',
2428
- 63861 => '掠',
2429
- 63862 => '略',
2430
- 63863 => '亮',
2431
- 63864 => '兩',
2432
- 63865 => '凉',
2433
- 63866 => '梁',
2434
- 63867 => '糧',
2435
- 63868 => '良',
2436
- 63869 => '諒',
2437
- 63870 => '量',
2438
- 63871 => '勵',
2439
- 63872 => '呂',
2440
- 63873 => '女',
2441
- 63874 => '廬',
2442
- 63875 => '旅',
2443
- 63876 => '濾',
2444
- 63877 => '礪',
2445
- 63878 => '閭',
2446
- 63879 => '驪',
2447
- 63880 => '麗',
2448
- 63881 => '黎',
2449
- 63882 => '力',
2450
- 63883 => '曆',
2451
- 63884 => '歷',
2452
- 63885 => '轢',
2453
- 63886 => '年',
2454
- 63887 => '憐',
2455
- 63888 => '戀',
2456
- 63889 => '撚',
2457
- 63890 => '漣',
2458
- 63891 => '煉',
2459
- 63892 => '璉',
2460
- 63893 => '秊',
2461
- 63894 => '練',
2462
- 63895 => '聯',
2463
- 63896 => '輦',
2464
- 63897 => '蓮',
2465
- 63898 => '連',
2466
- 63899 => '鍊',
2467
- 63900 => '列',
2468
- 63901 => '劣',
2469
- 63902 => '咽',
2470
- 63903 => '烈',
2471
- 63904 => '裂',
2472
- 63905 => '說',
2473
- 63906 => '廉',
2474
- 63907 => '念',
2475
- 63908 => '捻',
2476
- 63909 => '殮',
2477
- 63910 => '簾',
2478
- 63911 => '獵',
2479
- 63912 => '令',
2480
- 63913 => '囹',
2481
- 63914 => '寧',
2482
- 63915 => '嶺',
2483
- 63916 => '怜',
2484
- 63917 => '玲',
2485
- 63918 => '瑩',
2486
- 63919 => '羚',
2487
- 63920 => '聆',
2488
- 63921 => '鈴',
2489
- 63922 => '零',
2490
- 63923 => '靈',
2491
- 63924 => '領',
2492
- 63925 => '例',
2493
- 63926 => '禮',
2494
- 63927 => '醴',
2495
- 63928 => '隸',
2496
- 63929 => '惡',
2497
- 63930 => '了',
2498
- 63931 => '僚',
2499
- 63932 => '寮',
2500
- 63933 => '尿',
2501
- 63934 => '料',
2502
- 63935 => '樂',
2503
- 63936 => '燎',
2504
- 63937 => '療',
2505
- 63938 => '蓼',
2506
- 63939 => '遼',
2507
- 63940 => '龍',
2508
- 63941 => '暈',
2509
- 63942 => '阮',
2510
- 63943 => '劉',
2511
- 63944 => '杻',
2512
- 63945 => '柳',
2513
- 63946 => '流',
2514
- 63947 => '溜',
2515
- 63948 => '琉',
2516
- 63949 => '留',
2517
- 63950 => '硫',
2518
- 63951 => '紐',
2519
- 63952 => '類',
2520
- 63953 => '六',
2521
- 63954 => '戮',
2522
- 63955 => '陸',
2523
- 63956 => '倫',
2524
- 63957 => '崙',
2525
- 63958 => '淪',
2526
- 63959 => '輪',
2527
- 63960 => '律',
2528
- 63961 => '慄',
2529
- 63962 => '栗',
2530
- 63963 => '率',
2531
- 63964 => '隆',
2532
- 63965 => '利',
2533
- 63966 => '吏',
2534
- 63967 => '履',
2535
- 63968 => '易',
2536
- 63969 => '李',
2537
- 63970 => '梨',
2538
- 63971 => '泥',
2539
- 63972 => '理',
2540
- 63973 => '痢',
2541
- 63974 => '罹',
2542
- 63975 => '裏',
2543
- 63976 => '裡',
2544
- 63977 => '里',
2545
- 63978 => '離',
2546
- 63979 => '匿',
2547
- 63980 => '溺',
2548
- 63981 => '吝',
2549
- 63982 => '燐',
2550
- 63983 => '璘',
2551
- 63984 => '藺',
2552
- 63985 => '隣',
2553
- 63986 => '鱗',
2554
- 63987 => '麟',
2555
- 63988 => '林',
2556
- 63989 => '淋',
2557
- 63990 => '臨',
2558
- 63991 => '立',
2559
- 63992 => '笠',
2560
- 63993 => '粒',
2561
- 63994 => '狀',
2562
- 63995 => '炙',
2563
- 63996 => '識',
2564
- 63997 => '什',
2565
- 63998 => '茶',
2566
- 63999 => '刺',
2567
- 64000 => '切',
2568
- 64001 => '度',
2569
- 64002 => '拓',
2570
- 64003 => '糖',
2571
- 64004 => '宅',
2572
- 64005 => '洞',
2573
- 64006 => '暴',
2574
- 64007 => '輻',
2575
- 64008 => '行',
2576
- 64009 => '降',
2577
- 64010 => '見',
2578
- 64011 => '廓',
2579
- 64012 => '兀',
2580
- 64013 => '嗀',
2581
- 64016 => '塚',
2582
- 64018 => '晴',
2583
- 64021 => '凞',
2584
- 64022 => '猪',
2585
- 64023 => '益',
2586
- 64024 => '礼',
2587
- 64025 => '神',
2588
- 64026 => '祥',
2589
- 64027 => '福',
2590
- 64028 => '靖',
2591
- 64029 => '精',
2592
- 64030 => '羽',
2593
- 64032 => '蘒',
2594
- 64034 => '諸',
2595
- 64037 => '逸',
2596
- 64038 => '都',
2597
- 64042 => '飯',
2598
- 64043 => '飼',
2599
- 64044 => '館',
2600
- 64045 => '鶴',
2601
- 64046 => '郞',
2602
- 64047 => '隷',
2603
- 64048 => '侮',
2604
- 64049 => '僧',
2605
- 64050 => '免',
2606
- 64051 => '勉',
2607
- 64052 => '勤',
2608
- 64053 => '卑',
2609
- 64054 => '喝',
2610
- 64055 => '嘆',
2611
- 64056 => '器',
2612
- 64057 => '塀',
2613
- 64058 => '墨',
2614
- 64059 => '層',
2615
- 64060 => '屮',
2616
- 64061 => '悔',
2617
- 64062 => '慨',
2618
- 64063 => '憎',
2619
- 64064 => '懲',
2620
- 64065 => '敏',
2621
- 64066 => '既',
2622
- 64067 => '暑',
2623
- 64068 => '梅',
2624
- 64069 => '海',
2625
- 64070 => '渚',
2626
- 64071 => '漢',
2627
- 64072 => '煮',
2628
- 64073 => '爫',
2629
- 64074 => '琢',
2630
- 64075 => '碑',
2631
- 64076 => '社',
2632
- 64077 => '祉',
2633
- 64078 => '祈',
2634
- 64079 => '祐',
2635
- 64080 => '祖',
2636
- 64081 => '祝',
2637
- 64082 => '禍',
2638
- 64083 => '禎',
2639
- 64084 => '穀',
2640
- 64085 => '突',
2641
- 64086 => '節',
2642
- 64087 => '練',
2643
- 64088 => '縉',
2644
- 64089 => '繁',
2645
- 64090 => '署',
2646
- 64091 => '者',
2647
- 64092 => '臭',
2648
- 64093 => '艹',
2649
- 64094 => '艹',
2650
- 64095 => '著',
2651
- 64096 => '褐',
2652
- 64097 => '視',
2653
- 64098 => '謁',
2654
- 64099 => '謹',
2655
- 64100 => '賓',
2656
- 64101 => '贈',
2657
- 64102 => '辶',
2658
- 64103 => '逸',
2659
- 64104 => '難',
2660
- 64105 => '響',
2661
- 64106 => '頻',
2662
- 64107 => '恵',
2663
- 64108 => '𤋮',
2664
- 64109 => '舘',
2665
- 64112 => '並',
2666
- 64113 => '况',
2667
- 64114 => '全',
2668
- 64115 => '侀',
2669
- 64116 => '充',
2670
- 64117 => '冀',
2671
- 64118 => '勇',
2672
- 64119 => '勺',
2673
- 64120 => '喝',
2674
- 64121 => '啕',
2675
- 64122 => '喙',
2676
- 64123 => '嗢',
2677
- 64124 => '塚',
2678
- 64125 => '墳',
2679
- 64126 => '奄',
2680
- 64127 => '奔',
2681
- 64128 => '婢',
2682
- 64129 => '嬨',
2683
- 64130 => '廒',
2684
- 64131 => '廙',
2685
- 64132 => '彩',
2686
- 64133 => '徭',
2687
- 64134 => '惘',
2688
- 64135 => '慎',
2689
- 64136 => '愈',
2690
- 64137 => '憎',
2691
- 64138 => '慠',
2692
- 64139 => '懲',
2693
- 64140 => '戴',
2694
- 64141 => '揄',
2695
- 64142 => '搜',
2696
- 64143 => '摒',
2697
- 64144 => '敖',
2698
- 64145 => '晴',
2699
- 64146 => '朗',
2700
- 64147 => '望',
2701
- 64148 => '杖',
2702
- 64149 => '歹',
2703
- 64150 => '殺',
2704
- 64151 => '流',
2705
- 64152 => '滛',
2706
- 64153 => '滋',
2707
- 64154 => '漢',
2708
- 64155 => '瀞',
2709
- 64156 => '煮',
2710
- 64157 => '瞧',
2711
- 64158 => '爵',
2712
- 64159 => '犯',
2713
- 64160 => '猪',
2714
- 64161 => '瑱',
2715
- 64162 => '甆',
2716
- 64163 => '画',
2717
- 64164 => '瘝',
2718
- 64165 => '瘟',
2719
- 64166 => '益',
2720
- 64167 => '盛',
2721
- 64168 => '直',
2722
- 64169 => '睊',
2723
- 64170 => '着',
2724
- 64171 => '磌',
2725
- 64172 => '窱',
2726
- 64173 => '節',
2727
- 64174 => '类',
2728
- 64175 => '絛',
2729
- 64176 => '練',
2730
- 64177 => '缾',
2731
- 64178 => '者',
2732
- 64179 => '荒',
2733
- 64180 => '華',
2734
- 64181 => '蝹',
2735
- 64182 => '襁',
2736
- 64183 => '覆',
2737
- 64184 => '視',
2738
- 64185 => '調',
2739
- 64186 => '諸',
2740
- 64187 => '請',
2741
- 64188 => '謁',
2742
- 64189 => '諾',
2743
- 64190 => '諭',
2744
- 64191 => '謹',
2745
- 64192 => '變',
2746
- 64193 => '贈',
2747
- 64194 => '輸',
2748
- 64195 => '遲',
2749
- 64196 => '醙',
2750
- 64197 => '鉶',
2751
- 64198 => '陼',
2752
- 64199 => '難',
2753
- 64200 => '靖',
2754
- 64201 => '韛',
2755
- 64202 => '響',
2756
- 64203 => '頋',
2757
- 64204 => '頻',
2758
- 64205 => '鬒',
2759
- 64206 => '龜',
2760
- 64207 => '𢡊',
2761
- 64208 => '𢡄',
2762
- 64209 => '𣏕',
2763
- 64210 => '㮝',
2764
- 64211 => '䀘',
2765
- 64212 => '䀹',
2766
- 64213 => '𥉉',
2767
- 64214 => '𥳐',
2768
- 64215 => '𧻓',
2769
- 64216 => '齃',
2770
- 64217 => '龎',
2771
- 64256 => 'ff',
2772
- 64257 => 'fi',
2773
- 64258 => 'fl',
2774
- 64259 => 'ffi',
2775
- 64260 => 'ffl',
2776
- 64261 => 'st',
2777
- 64262 => 'st',
2778
- 64275 => 'մն',
2779
- 64276 => 'մե',
2780
- 64277 => 'մի',
2781
- 64278 => 'վն',
2782
- 64279 => 'մխ',
2783
- 64285 => 'יִ',
2784
- 64287 => 'ײַ',
2785
- 64288 => 'ע',
2786
- 64289 => 'א',
2787
- 64290 => 'ד',
2788
- 64291 => 'ה',
2789
- 64292 => 'כ',
2790
- 64293 => 'ל',
2791
- 64294 => 'ם',
2792
- 64295 => 'ר',
2793
- 64296 => 'ת',
2794
- 64298 => 'שׁ',
2795
- 64299 => 'שׂ',
2796
- 64300 => 'שּׁ',
2797
- 64301 => 'שּׂ',
2798
- 64302 => 'אַ',
2799
- 64303 => 'אָ',
2800
- 64304 => 'אּ',
2801
- 64305 => 'בּ',
2802
- 64306 => 'גּ',
2803
- 64307 => 'דּ',
2804
- 64308 => 'הּ',
2805
- 64309 => 'וּ',
2806
- 64310 => 'זּ',
2807
- 64312 => 'טּ',
2808
- 64313 => 'יּ',
2809
- 64314 => 'ךּ',
2810
- 64315 => 'כּ',
2811
- 64316 => 'לּ',
2812
- 64318 => 'מּ',
2813
- 64320 => 'נּ',
2814
- 64321 => 'סּ',
2815
- 64323 => 'ףּ',
2816
- 64324 => 'פּ',
2817
- 64326 => 'צּ',
2818
- 64327 => 'קּ',
2819
- 64328 => 'רּ',
2820
- 64329 => 'שּ',
2821
- 64330 => 'תּ',
2822
- 64331 => 'וֹ',
2823
- 64332 => 'בֿ',
2824
- 64333 => 'כֿ',
2825
- 64334 => 'פֿ',
2826
- 64335 => 'אל',
2827
- 64336 => 'ٱ',
2828
- 64337 => 'ٱ',
2829
- 64338 => 'ٻ',
2830
- 64339 => 'ٻ',
2831
- 64340 => 'ٻ',
2832
- 64341 => 'ٻ',
2833
- 64342 => 'پ',
2834
- 64343 => 'پ',
2835
- 64344 => 'پ',
2836
- 64345 => 'پ',
2837
- 64346 => 'ڀ',
2838
- 64347 => 'ڀ',
2839
- 64348 => 'ڀ',
2840
- 64349 => 'ڀ',
2841
- 64350 => 'ٺ',
2842
- 64351 => 'ٺ',
2843
- 64352 => 'ٺ',
2844
- 64353 => 'ٺ',
2845
- 64354 => 'ٿ',
2846
- 64355 => 'ٿ',
2847
- 64356 => 'ٿ',
2848
- 64357 => 'ٿ',
2849
- 64358 => 'ٹ',
2850
- 64359 => 'ٹ',
2851
- 64360 => 'ٹ',
2852
- 64361 => 'ٹ',
2853
- 64362 => 'ڤ',
2854
- 64363 => 'ڤ',
2855
- 64364 => 'ڤ',
2856
- 64365 => 'ڤ',
2857
- 64366 => 'ڦ',
2858
- 64367 => 'ڦ',
2859
- 64368 => 'ڦ',
2860
- 64369 => 'ڦ',
2861
- 64370 => 'ڄ',
2862
- 64371 => 'ڄ',
2863
- 64372 => 'ڄ',
2864
- 64373 => 'ڄ',
2865
- 64374 => 'ڃ',
2866
- 64375 => 'ڃ',
2867
- 64376 => 'ڃ',
2868
- 64377 => 'ڃ',
2869
- 64378 => 'چ',
2870
- 64379 => 'چ',
2871
- 64380 => 'چ',
2872
- 64381 => 'چ',
2873
- 64382 => 'ڇ',
2874
- 64383 => 'ڇ',
2875
- 64384 => 'ڇ',
2876
- 64385 => 'ڇ',
2877
- 64386 => 'ڍ',
2878
- 64387 => 'ڍ',
2879
- 64388 => 'ڌ',
2880
- 64389 => 'ڌ',
2881
- 64390 => 'ڎ',
2882
- 64391 => 'ڎ',
2883
- 64392 => 'ڈ',
2884
- 64393 => 'ڈ',
2885
- 64394 => 'ژ',
2886
- 64395 => 'ژ',
2887
- 64396 => 'ڑ',
2888
- 64397 => 'ڑ',
2889
- 64398 => 'ک',
2890
- 64399 => 'ک',
2891
- 64400 => 'ک',
2892
- 64401 => 'ک',
2893
- 64402 => 'گ',
2894
- 64403 => 'گ',
2895
- 64404 => 'گ',
2896
- 64405 => 'گ',
2897
- 64406 => 'ڳ',
2898
- 64407 => 'ڳ',
2899
- 64408 => 'ڳ',
2900
- 64409 => 'ڳ',
2901
- 64410 => 'ڱ',
2902
- 64411 => 'ڱ',
2903
- 64412 => 'ڱ',
2904
- 64413 => 'ڱ',
2905
- 64414 => 'ں',
2906
- 64415 => 'ں',
2907
- 64416 => 'ڻ',
2908
- 64417 => 'ڻ',
2909
- 64418 => 'ڻ',
2910
- 64419 => 'ڻ',
2911
- 64420 => 'ۀ',
2912
- 64421 => 'ۀ',
2913
- 64422 => 'ہ',
2914
- 64423 => 'ہ',
2915
- 64424 => 'ہ',
2916
- 64425 => 'ہ',
2917
- 64426 => 'ھ',
2918
- 64427 => 'ھ',
2919
- 64428 => 'ھ',
2920
- 64429 => 'ھ',
2921
- 64430 => 'ے',
2922
- 64431 => 'ے',
2923
- 64432 => 'ۓ',
2924
- 64433 => 'ۓ',
2925
- 64467 => 'ڭ',
2926
- 64468 => 'ڭ',
2927
- 64469 => 'ڭ',
2928
- 64470 => 'ڭ',
2929
- 64471 => 'ۇ',
2930
- 64472 => 'ۇ',
2931
- 64473 => 'ۆ',
2932
- 64474 => 'ۆ',
2933
- 64475 => 'ۈ',
2934
- 64476 => 'ۈ',
2935
- 64477 => 'ۇٴ',
2936
- 64478 => 'ۋ',
2937
- 64479 => 'ۋ',
2938
- 64480 => 'ۅ',
2939
- 64481 => 'ۅ',
2940
- 64482 => 'ۉ',
2941
- 64483 => 'ۉ',
2942
- 64484 => 'ې',
2943
- 64485 => 'ې',
2944
- 64486 => 'ې',
2945
- 64487 => 'ې',
2946
- 64488 => 'ى',
2947
- 64489 => 'ى',
2948
- 64490 => 'ئا',
2949
- 64491 => 'ئا',
2950
- 64492 => 'ئە',
2951
- 64493 => 'ئە',
2952
- 64494 => 'ئو',
2953
- 64495 => 'ئو',
2954
- 64496 => 'ئۇ',
2955
- 64497 => 'ئۇ',
2956
- 64498 => 'ئۆ',
2957
- 64499 => 'ئۆ',
2958
- 64500 => 'ئۈ',
2959
- 64501 => 'ئۈ',
2960
- 64502 => 'ئې',
2961
- 64503 => 'ئې',
2962
- 64504 => 'ئې',
2963
- 64505 => 'ئى',
2964
- 64506 => 'ئى',
2965
- 64507 => 'ئى',
2966
- 64508 => 'ی',
2967
- 64509 => 'ی',
2968
- 64510 => 'ی',
2969
- 64511 => 'ی',
2970
- 64512 => 'ئج',
2971
- 64513 => 'ئح',
2972
- 64514 => 'ئم',
2973
- 64515 => 'ئى',
2974
- 64516 => 'ئي',
2975
- 64517 => 'بج',
2976
- 64518 => 'بح',
2977
- 64519 => 'بخ',
2978
- 64520 => 'بم',
2979
- 64521 => 'بى',
2980
- 64522 => 'بي',
2981
- 64523 => 'تج',
2982
- 64524 => 'تح',
2983
- 64525 => 'تخ',
2984
- 64526 => 'تم',
2985
- 64527 => 'تى',
2986
- 64528 => 'تي',
2987
- 64529 => 'ثج',
2988
- 64530 => 'ثم',
2989
- 64531 => 'ثى',
2990
- 64532 => 'ثي',
2991
- 64533 => 'جح',
2992
- 64534 => 'جم',
2993
- 64535 => 'حج',
2994
- 64536 => 'حم',
2995
- 64537 => 'خج',
2996
- 64538 => 'خح',
2997
- 64539 => 'خم',
2998
- 64540 => 'سج',
2999
- 64541 => 'سح',
3000
- 64542 => 'سخ',
3001
- 64543 => 'سم',
3002
- 64544 => 'صح',
3003
- 64545 => 'صم',
3004
- 64546 => 'ضج',
3005
- 64547 => 'ضح',
3006
- 64548 => 'ضخ',
3007
- 64549 => 'ضم',
3008
- 64550 => 'طح',
3009
- 64551 => 'طم',
3010
- 64552 => 'ظم',
3011
- 64553 => 'عج',
3012
- 64554 => 'عم',
3013
- 64555 => 'غج',
3014
- 64556 => 'غم',
3015
- 64557 => 'فج',
3016
- 64558 => 'فح',
3017
- 64559 => 'فخ',
3018
- 64560 => 'فم',
3019
- 64561 => 'فى',
3020
- 64562 => 'في',
3021
- 64563 => 'قح',
3022
- 64564 => 'قم',
3023
- 64565 => 'قى',
3024
- 64566 => 'قي',
3025
- 64567 => 'كا',
3026
- 64568 => 'كج',
3027
- 64569 => 'كح',
3028
- 64570 => 'كخ',
3029
- 64571 => 'كل',
3030
- 64572 => 'كم',
3031
- 64573 => 'كى',
3032
- 64574 => 'كي',
3033
- 64575 => 'لج',
3034
- 64576 => 'لح',
3035
- 64577 => 'لخ',
3036
- 64578 => 'لم',
3037
- 64579 => 'لى',
3038
- 64580 => 'لي',
3039
- 64581 => 'مج',
3040
- 64582 => 'مح',
3041
- 64583 => 'مخ',
3042
- 64584 => 'مم',
3043
- 64585 => 'مى',
3044
- 64586 => 'مي',
3045
- 64587 => 'نج',
3046
- 64588 => 'نح',
3047
- 64589 => 'نخ',
3048
- 64590 => 'نم',
3049
- 64591 => 'نى',
3050
- 64592 => 'ني',
3051
- 64593 => 'هج',
3052
- 64594 => 'هم',
3053
- 64595 => 'هى',
3054
- 64596 => 'هي',
3055
- 64597 => 'يج',
3056
- 64598 => 'يح',
3057
- 64599 => 'يخ',
3058
- 64600 => 'يم',
3059
- 64601 => 'يى',
3060
- 64602 => 'يي',
3061
- 64603 => 'ذٰ',
3062
- 64604 => 'رٰ',
3063
- 64605 => 'ىٰ',
3064
- 64612 => 'ئر',
3065
- 64613 => 'ئز',
3066
- 64614 => 'ئم',
3067
- 64615 => 'ئن',
3068
- 64616 => 'ئى',
3069
- 64617 => 'ئي',
3070
- 64618 => 'بر',
3071
- 64619 => 'بز',
3072
- 64620 => 'بم',
3073
- 64621 => 'بن',
3074
- 64622 => 'بى',
3075
- 64623 => 'بي',
3076
- 64624 => 'تر',
3077
- 64625 => 'تز',
3078
- 64626 => 'تم',
3079
- 64627 => 'تن',
3080
- 64628 => 'تى',
3081
- 64629 => 'تي',
3082
- 64630 => 'ثر',
3083
- 64631 => 'ثز',
3084
- 64632 => 'ثم',
3085
- 64633 => 'ثن',
3086
- 64634 => 'ثى',
3087
- 64635 => 'ثي',
3088
- 64636 => 'فى',
3089
- 64637 => 'في',
3090
- 64638 => 'قى',
3091
- 64639 => 'قي',
3092
- 64640 => 'كا',
3093
- 64641 => 'كل',
3094
- 64642 => 'كم',
3095
- 64643 => 'كى',
3096
- 64644 => 'كي',
3097
- 64645 => 'لم',
3098
- 64646 => 'لى',
3099
- 64647 => 'لي',
3100
- 64648 => 'ما',
3101
- 64649 => 'مم',
3102
- 64650 => 'نر',
3103
- 64651 => 'نز',
3104
- 64652 => 'نم',
3105
- 64653 => 'نن',
3106
- 64654 => 'نى',
3107
- 64655 => 'ني',
3108
- 64656 => 'ىٰ',
3109
- 64657 => 'ير',
3110
- 64658 => 'يز',
3111
- 64659 => 'يم',
3112
- 64660 => 'ين',
3113
- 64661 => 'يى',
3114
- 64662 => 'يي',
3115
- 64663 => 'ئج',
3116
- 64664 => 'ئح',
3117
- 64665 => 'ئخ',
3118
- 64666 => 'ئم',
3119
- 64667 => 'ئه',
3120
- 64668 => 'بج',
3121
- 64669 => 'بح',
3122
- 64670 => 'بخ',
3123
- 64671 => 'بم',
3124
- 64672 => 'به',
3125
- 64673 => 'تج',
3126
- 64674 => 'تح',
3127
- 64675 => 'تخ',
3128
- 64676 => 'تم',
3129
- 64677 => 'ته',
3130
- 64678 => 'ثم',
3131
- 64679 => 'جح',
3132
- 64680 => 'جم',
3133
- 64681 => 'حج',
3134
- 64682 => 'حم',
3135
- 64683 => 'خج',
3136
- 64684 => 'خم',
3137
- 64685 => 'سج',
3138
- 64686 => 'سح',
3139
- 64687 => 'سخ',
3140
- 64688 => 'سم',
3141
- 64689 => 'صح',
3142
- 64690 => 'صخ',
3143
- 64691 => 'صم',
3144
- 64692 => 'ضج',
3145
- 64693 => 'ضح',
3146
- 64694 => 'ضخ',
3147
- 64695 => 'ضم',
3148
- 64696 => 'طح',
3149
- 64697 => 'ظم',
3150
- 64698 => 'عج',
3151
- 64699 => 'عم',
3152
- 64700 => 'غج',
3153
- 64701 => 'غم',
3154
- 64702 => 'فج',
3155
- 64703 => 'فح',
3156
- 64704 => 'فخ',
3157
- 64705 => 'فم',
3158
- 64706 => 'قح',
3159
- 64707 => 'قم',
3160
- 64708 => 'كج',
3161
- 64709 => 'كح',
3162
- 64710 => 'كخ',
3163
- 64711 => 'كل',
3164
- 64712 => 'كم',
3165
- 64713 => 'لج',
3166
- 64714 => 'لح',
3167
- 64715 => 'لخ',
3168
- 64716 => 'لم',
3169
- 64717 => 'له',
3170
- 64718 => 'مج',
3171
- 64719 => 'مح',
3172
- 64720 => 'مخ',
3173
- 64721 => 'مم',
3174
- 64722 => 'نج',
3175
- 64723 => 'نح',
3176
- 64724 => 'نخ',
3177
- 64725 => 'نم',
3178
- 64726 => 'نه',
3179
- 64727 => 'هج',
3180
- 64728 => 'هم',
3181
- 64729 => 'هٰ',
3182
- 64730 => 'يج',
3183
- 64731 => 'يح',
3184
- 64732 => 'يخ',
3185
- 64733 => 'يم',
3186
- 64734 => 'يه',
3187
- 64735 => 'ئم',
3188
- 64736 => 'ئه',
3189
- 64737 => 'بم',
3190
- 64738 => 'به',
3191
- 64739 => 'تم',
3192
- 64740 => 'ته',
3193
- 64741 => 'ثم',
3194
- 64742 => 'ثه',
3195
- 64743 => 'سم',
3196
- 64744 => 'سه',
3197
- 64745 => 'شم',
3198
- 64746 => 'شه',
3199
- 64747 => 'كل',
3200
- 64748 => 'كم',
3201
- 64749 => 'لم',
3202
- 64750 => 'نم',
3203
- 64751 => 'نه',
3204
- 64752 => 'يم',
3205
- 64753 => 'يه',
3206
- 64754 => 'ـَّ',
3207
- 64755 => 'ـُّ',
3208
- 64756 => 'ـِّ',
3209
- 64757 => 'طى',
3210
- 64758 => 'طي',
3211
- 64759 => 'عى',
3212
- 64760 => 'عي',
3213
- 64761 => 'غى',
3214
- 64762 => 'غي',
3215
- 64763 => 'سى',
3216
- 64764 => 'سي',
3217
- 64765 => 'شى',
3218
- 64766 => 'شي',
3219
- 64767 => 'حى',
3220
- 64768 => 'حي',
3221
- 64769 => 'جى',
3222
- 64770 => 'جي',
3223
- 64771 => 'خى',
3224
- 64772 => 'خي',
3225
- 64773 => 'صى',
3226
- 64774 => 'صي',
3227
- 64775 => 'ضى',
3228
- 64776 => 'ضي',
3229
- 64777 => 'شج',
3230
- 64778 => 'شح',
3231
- 64779 => 'شخ',
3232
- 64780 => 'شم',
3233
- 64781 => 'شر',
3234
- 64782 => 'سر',
3235
- 64783 => 'صر',
3236
- 64784 => 'ضر',
3237
- 64785 => 'طى',
3238
- 64786 => 'طي',
3239
- 64787 => 'عى',
3240
- 64788 => 'عي',
3241
- 64789 => 'غى',
3242
- 64790 => 'غي',
3243
- 64791 => 'سى',
3244
- 64792 => 'سي',
3245
- 64793 => 'شى',
3246
- 64794 => 'شي',
3247
- 64795 => 'حى',
3248
- 64796 => 'حي',
3249
- 64797 => 'جى',
3250
- 64798 => 'جي',
3251
- 64799 => 'خى',
3252
- 64800 => 'خي',
3253
- 64801 => 'صى',
3254
- 64802 => 'صي',
3255
- 64803 => 'ضى',
3256
- 64804 => 'ضي',
3257
- 64805 => 'شج',
3258
- 64806 => 'شح',
3259
- 64807 => 'شخ',
3260
- 64808 => 'شم',
3261
- 64809 => 'شر',
3262
- 64810 => 'سر',
3263
- 64811 => 'صر',
3264
- 64812 => 'ضر',
3265
- 64813 => 'شج',
3266
- 64814 => 'شح',
3267
- 64815 => 'شخ',
3268
- 64816 => 'شم',
3269
- 64817 => 'سه',
3270
- 64818 => 'شه',
3271
- 64819 => 'طم',
3272
- 64820 => 'سج',
3273
- 64821 => 'سح',
3274
- 64822 => 'سخ',
3275
- 64823 => 'شج',
3276
- 64824 => 'شح',
3277
- 64825 => 'شخ',
3278
- 64826 => 'طم',
3279
- 64827 => 'ظم',
3280
- 64828 => 'اً',
3281
- 64829 => 'اً',
3282
- 64848 => 'تجم',
3283
- 64849 => 'تحج',
3284
- 64850 => 'تحج',
3285
- 64851 => 'تحم',
3286
- 64852 => 'تخم',
3287
- 64853 => 'تمج',
3288
- 64854 => 'تمح',
3289
- 64855 => 'تمخ',
3290
- 64856 => 'جمح',
3291
- 64857 => 'جمح',
3292
- 64858 => 'حمي',
3293
- 64859 => 'حمى',
3294
- 64860 => 'سحج',
3295
- 64861 => 'سجح',
3296
- 64862 => 'سجى',
3297
- 64863 => 'سمح',
3298
- 64864 => 'سمح',
3299
- 64865 => 'سمج',
3300
- 64866 => 'سمم',
3301
- 64867 => 'سمم',
3302
- 64868 => 'صحح',
3303
- 64869 => 'صحح',
3304
- 64870 => 'صمم',
3305
- 64871 => 'شحم',
3306
- 64872 => 'شحم',
3307
- 64873 => 'شجي',
3308
- 64874 => 'شمخ',
3309
- 64875 => 'شمخ',
3310
- 64876 => 'شمم',
3311
- 64877 => 'شمم',
3312
- 64878 => 'ضحى',
3313
- 64879 => 'ضخم',
3314
- 64880 => 'ضخم',
3315
- 64881 => 'طمح',
3316
- 64882 => 'طمح',
3317
- 64883 => 'طمم',
3318
- 64884 => 'طمي',
3319
- 64885 => 'عجم',
3320
- 64886 => 'عمم',
3321
- 64887 => 'عمم',
3322
- 64888 => 'عمى',
3323
- 64889 => 'غمم',
3324
- 64890 => 'غمي',
3325
- 64891 => 'غمى',
3326
- 64892 => 'فخم',
3327
- 64893 => 'فخم',
3328
- 64894 => 'قمح',
3329
- 64895 => 'قمم',
3330
- 64896 => 'لحم',
3331
- 64897 => 'لحي',
3332
- 64898 => 'لحى',
3333
- 64899 => 'لجج',
3334
- 64900 => 'لجج',
3335
- 64901 => 'لخم',
3336
- 64902 => 'لخم',
3337
- 64903 => 'لمح',
3338
- 64904 => 'لمح',
3339
- 64905 => 'محج',
3340
- 64906 => 'محم',
3341
- 64907 => 'محي',
3342
- 64908 => 'مجح',
3343
- 64909 => 'مجم',
3344
- 64910 => 'مخج',
3345
- 64911 => 'مخم',
3346
- 64914 => 'مجخ',
3347
- 64915 => 'همج',
3348
- 64916 => 'همم',
3349
- 64917 => 'نحم',
3350
- 64918 => 'نحى',
3351
- 64919 => 'نجم',
3352
- 64920 => 'نجم',
3353
- 64921 => 'نجى',
3354
- 64922 => 'نمي',
3355
- 64923 => 'نمى',
3356
- 64924 => 'يمم',
3357
- 64925 => 'يمم',
3358
- 64926 => 'بخي',
3359
- 64927 => 'تجي',
3360
- 64928 => 'تجى',
3361
- 64929 => 'تخي',
3362
- 64930 => 'تخى',
3363
- 64931 => 'تمي',
3364
- 64932 => 'تمى',
3365
- 64933 => 'جمي',
3366
- 64934 => 'جحى',
3367
- 64935 => 'جمى',
3368
- 64936 => 'سخى',
3369
- 64937 => 'صحي',
3370
- 64938 => 'شحي',
3371
- 64939 => 'ضحي',
3372
- 64940 => 'لجي',
3373
- 64941 => 'لمي',
3374
- 64942 => 'يحي',
3375
- 64943 => 'يجي',
3376
- 64944 => 'يمي',
3377
- 64945 => 'ممي',
3378
- 64946 => 'قمي',
3379
- 64947 => 'نحي',
3380
- 64948 => 'قمح',
3381
- 64949 => 'لحم',
3382
- 64950 => 'عمي',
3383
- 64951 => 'كمي',
3384
- 64952 => 'نجح',
3385
- 64953 => 'مخي',
3386
- 64954 => 'لجم',
3387
- 64955 => 'كمم',
3388
- 64956 => 'لجم',
3389
- 64957 => 'نجح',
3390
- 64958 => 'جحي',
3391
- 64959 => 'حجي',
3392
- 64960 => 'مجي',
3393
- 64961 => 'فمي',
3394
- 64962 => 'بحي',
3395
- 64963 => 'كمم',
3396
- 64964 => 'عجم',
3397
- 64965 => 'صمم',
3398
- 64966 => 'سخي',
3399
- 64967 => 'نجي',
3400
- 65008 => 'صلے',
3401
- 65009 => 'قلے',
3402
- 65010 => 'الله',
3403
- 65011 => 'اكبر',
3404
- 65012 => 'محمد',
3405
- 65013 => 'صلعم',
3406
- 65014 => 'رسول',
3407
- 65015 => 'عليه',
3408
- 65016 => 'وسلم',
3409
- 65017 => 'صلى',
3410
- 65020 => 'ریال',
3411
- 65041 => '、',
3412
- 65047 => '〖',
3413
- 65048 => '〗',
3414
- 65073 => '—',
3415
- 65074 => '–',
3416
- 65081 => '〔',
3417
- 65082 => '〕',
3418
- 65083 => '【',
3419
- 65084 => '】',
3420
- 65085 => '《',
3421
- 65086 => '》',
3422
- 65087 => '〈',
3423
- 65088 => '〉',
3424
- 65089 => '「',
3425
- 65090 => '」',
3426
- 65091 => '『',
3427
- 65092 => '』',
3428
- 65105 => '、',
3429
- 65112 => '—',
3430
- 65117 => '〔',
3431
- 65118 => '〕',
3432
- 65123 => '-',
3433
- 65137 => 'ـً',
3434
- 65143 => 'ـَ',
3435
- 65145 => 'ـُ',
3436
- 65147 => 'ـِ',
3437
- 65149 => 'ـّ',
3438
- 65151 => 'ـْ',
3439
- 65152 => 'ء',
3440
- 65153 => 'آ',
3441
- 65154 => 'آ',
3442
- 65155 => 'أ',
3443
- 65156 => 'أ',
3444
- 65157 => 'ؤ',
3445
- 65158 => 'ؤ',
3446
- 65159 => 'إ',
3447
- 65160 => 'إ',
3448
- 65161 => 'ئ',
3449
- 65162 => 'ئ',
3450
- 65163 => 'ئ',
3451
- 65164 => 'ئ',
3452
- 65165 => 'ا',
3453
- 65166 => 'ا',
3454
- 65167 => 'ب',
3455
- 65168 => 'ب',
3456
- 65169 => 'ب',
3457
- 65170 => 'ب',
3458
- 65171 => 'ة',
3459
- 65172 => 'ة',
3460
- 65173 => 'ت',
3461
- 65174 => 'ت',
3462
- 65175 => 'ت',
3463
- 65176 => 'ت',
3464
- 65177 => 'ث',
3465
- 65178 => 'ث',
3466
- 65179 => 'ث',
3467
- 65180 => 'ث',
3468
- 65181 => 'ج',
3469
- 65182 => 'ج',
3470
- 65183 => 'ج',
3471
- 65184 => 'ج',
3472
- 65185 => 'ح',
3473
- 65186 => 'ح',
3474
- 65187 => 'ح',
3475
- 65188 => 'ح',
3476
- 65189 => 'خ',
3477
- 65190 => 'خ',
3478
- 65191 => 'خ',
3479
- 65192 => 'خ',
3480
- 65193 => 'د',
3481
- 65194 => 'د',
3482
- 65195 => 'ذ',
3483
- 65196 => 'ذ',
3484
- 65197 => 'ر',
3485
- 65198 => 'ر',
3486
- 65199 => 'ز',
3487
- 65200 => 'ز',
3488
- 65201 => 'س',
3489
- 65202 => 'س',
3490
- 65203 => 'س',
3491
- 65204 => 'س',
3492
- 65205 => 'ش',
3493
- 65206 => 'ش',
3494
- 65207 => 'ش',
3495
- 65208 => 'ش',
3496
- 65209 => 'ص',
3497
- 65210 => 'ص',
3498
- 65211 => 'ص',
3499
- 65212 => 'ص',
3500
- 65213 => 'ض',
3501
- 65214 => 'ض',
3502
- 65215 => 'ض',
3503
- 65216 => 'ض',
3504
- 65217 => 'ط',
3505
- 65218 => 'ط',
3506
- 65219 => 'ط',
3507
- 65220 => 'ط',
3508
- 65221 => 'ظ',
3509
- 65222 => 'ظ',
3510
- 65223 => 'ظ',
3511
- 65224 => 'ظ',
3512
- 65225 => 'ع',
3513
- 65226 => 'ع',
3514
- 65227 => 'ع',
3515
- 65228 => 'ع',
3516
- 65229 => 'غ',
3517
- 65230 => 'غ',
3518
- 65231 => 'غ',
3519
- 65232 => 'غ',
3520
- 65233 => 'ف',
3521
- 65234 => 'ف',
3522
- 65235 => 'ف',
3523
- 65236 => 'ف',
3524
- 65237 => 'ق',
3525
- 65238 => 'ق',
3526
- 65239 => 'ق',
3527
- 65240 => 'ق',
3528
- 65241 => 'ك',
3529
- 65242 => 'ك',
3530
- 65243 => 'ك',
3531
- 65244 => 'ك',
3532
- 65245 => 'ل',
3533
- 65246 => 'ل',
3534
- 65247 => 'ل',
3535
- 65248 => 'ل',
3536
- 65249 => 'م',
3537
- 65250 => 'م',
3538
- 65251 => 'م',
3539
- 65252 => 'م',
3540
- 65253 => 'ن',
3541
- 65254 => 'ن',
3542
- 65255 => 'ن',
3543
- 65256 => 'ن',
3544
- 65257 => 'ه',
3545
- 65258 => 'ه',
3546
- 65259 => 'ه',
3547
- 65260 => 'ه',
3548
- 65261 => 'و',
3549
- 65262 => 'و',
3550
- 65263 => 'ى',
3551
- 65264 => 'ى',
3552
- 65265 => 'ي',
3553
- 65266 => 'ي',
3554
- 65267 => 'ي',
3555
- 65268 => 'ي',
3556
- 65269 => 'لآ',
3557
- 65270 => 'لآ',
3558
- 65271 => 'لأ',
3559
- 65272 => 'لأ',
3560
- 65273 => 'لإ',
3561
- 65274 => 'لإ',
3562
- 65275 => 'لا',
3563
- 65276 => 'لا',
3564
- 65293 => '-',
3565
- 65294 => '.',
3566
- 65296 => '0',
3567
- 65297 => '1',
3568
- 65298 => '2',
3569
- 65299 => '3',
3570
- 65300 => '4',
3571
- 65301 => '5',
3572
- 65302 => '6',
3573
- 65303 => '7',
3574
- 65304 => '8',
3575
- 65305 => '9',
3576
- 65313 => 'a',
3577
- 65314 => 'b',
3578
- 65315 => 'c',
3579
- 65316 => 'd',
3580
- 65317 => 'e',
3581
- 65318 => 'f',
3582
- 65319 => 'g',
3583
- 65320 => 'h',
3584
- 65321 => 'i',
3585
- 65322 => 'j',
3586
- 65323 => 'k',
3587
- 65324 => 'l',
3588
- 65325 => 'm',
3589
- 65326 => 'n',
3590
- 65327 => 'o',
3591
- 65328 => 'p',
3592
- 65329 => 'q',
3593
- 65330 => 'r',
3594
- 65331 => 's',
3595
- 65332 => 't',
3596
- 65333 => 'u',
3597
- 65334 => 'v',
3598
- 65335 => 'w',
3599
- 65336 => 'x',
3600
- 65337 => 'y',
3601
- 65338 => 'z',
3602
- 65345 => 'a',
3603
- 65346 => 'b',
3604
- 65347 => 'c',
3605
- 65348 => 'd',
3606
- 65349 => 'e',
3607
- 65350 => 'f',
3608
- 65351 => 'g',
3609
- 65352 => 'h',
3610
- 65353 => 'i',
3611
- 65354 => 'j',
3612
- 65355 => 'k',
3613
- 65356 => 'l',
3614
- 65357 => 'm',
3615
- 65358 => 'n',
3616
- 65359 => 'o',
3617
- 65360 => 'p',
3618
- 65361 => 'q',
3619
- 65362 => 'r',
3620
- 65363 => 's',
3621
- 65364 => 't',
3622
- 65365 => 'u',
3623
- 65366 => 'v',
3624
- 65367 => 'w',
3625
- 65368 => 'x',
3626
- 65369 => 'y',
3627
- 65370 => 'z',
3628
- 65375 => '⦅',
3629
- 65376 => '⦆',
3630
- 65377 => '.',
3631
- 65378 => '「',
3632
- 65379 => '」',
3633
- 65380 => '、',
3634
- 65381 => '・',
3635
- 65382 => 'ヲ',
3636
- 65383 => 'ァ',
3637
- 65384 => 'ィ',
3638
- 65385 => 'ゥ',
3639
- 65386 => 'ェ',
3640
- 65387 => 'ォ',
3641
- 65388 => 'ャ',
3642
- 65389 => 'ュ',
3643
- 65390 => 'ョ',
3644
- 65391 => 'ッ',
3645
- 65392 => 'ー',
3646
- 65393 => 'ア',
3647
- 65394 => 'イ',
3648
- 65395 => 'ウ',
3649
- 65396 => 'エ',
3650
- 65397 => 'オ',
3651
- 65398 => 'カ',
3652
- 65399 => 'キ',
3653
- 65400 => 'ク',
3654
- 65401 => 'ケ',
3655
- 65402 => 'コ',
3656
- 65403 => 'サ',
3657
- 65404 => 'シ',
3658
- 65405 => 'ス',
3659
- 65406 => 'セ',
3660
- 65407 => 'ソ',
3661
- 65408 => 'タ',
3662
- 65409 => 'チ',
3663
- 65410 => 'ツ',
3664
- 65411 => 'テ',
3665
- 65412 => 'ト',
3666
- 65413 => 'ナ',
3667
- 65414 => 'ニ',
3668
- 65415 => 'ヌ',
3669
- 65416 => 'ネ',
3670
- 65417 => 'ノ',
3671
- 65418 => 'ハ',
3672
- 65419 => 'ヒ',
3673
- 65420 => 'フ',
3674
- 65421 => 'ヘ',
3675
- 65422 => 'ホ',
3676
- 65423 => 'マ',
3677
- 65424 => 'ミ',
3678
- 65425 => 'ム',
3679
- 65426 => 'メ',
3680
- 65427 => 'モ',
3681
- 65428 => 'ヤ',
3682
- 65429 => 'ユ',
3683
- 65430 => 'ヨ',
3684
- 65431 => 'ラ',
3685
- 65432 => 'リ',
3686
- 65433 => 'ル',
3687
- 65434 => 'レ',
3688
- 65435 => 'ロ',
3689
- 65436 => 'ワ',
3690
- 65437 => 'ン',
3691
- 65438 => '゙',
3692
- 65439 => '゚',
3693
- 65441 => 'ᄀ',
3694
- 65442 => 'ᄁ',
3695
- 65443 => 'ᆪ',
3696
- 65444 => 'ᄂ',
3697
- 65445 => 'ᆬ',
3698
- 65446 => 'ᆭ',
3699
- 65447 => 'ᄃ',
3700
- 65448 => 'ᄄ',
3701
- 65449 => 'ᄅ',
3702
- 65450 => 'ᆰ',
3703
- 65451 => 'ᆱ',
3704
- 65452 => 'ᆲ',
3705
- 65453 => 'ᆳ',
3706
- 65454 => 'ᆴ',
3707
- 65455 => 'ᆵ',
3708
- 65456 => 'ᄚ',
3709
- 65457 => 'ᄆ',
3710
- 65458 => 'ᄇ',
3711
- 65459 => 'ᄈ',
3712
- 65460 => 'ᄡ',
3713
- 65461 => 'ᄉ',
3714
- 65462 => 'ᄊ',
3715
- 65463 => 'ᄋ',
3716
- 65464 => 'ᄌ',
3717
- 65465 => 'ᄍ',
3718
- 65466 => 'ᄎ',
3719
- 65467 => 'ᄏ',
3720
- 65468 => 'ᄐ',
3721
- 65469 => 'ᄑ',
3722
- 65470 => 'ᄒ',
3723
- 65474 => 'ᅡ',
3724
- 65475 => 'ᅢ',
3725
- 65476 => 'ᅣ',
3726
- 65477 => 'ᅤ',
3727
- 65478 => 'ᅥ',
3728
- 65479 => 'ᅦ',
3729
- 65482 => 'ᅧ',
3730
- 65483 => 'ᅨ',
3731
- 65484 => 'ᅩ',
3732
- 65485 => 'ᅪ',
3733
- 65486 => 'ᅫ',
3734
- 65487 => 'ᅬ',
3735
- 65490 => 'ᅭ',
3736
- 65491 => 'ᅮ',
3737
- 65492 => 'ᅯ',
3738
- 65493 => 'ᅰ',
3739
- 65494 => 'ᅱ',
3740
- 65495 => 'ᅲ',
3741
- 65498 => 'ᅳ',
3742
- 65499 => 'ᅴ',
3743
- 65500 => 'ᅵ',
3744
- 65504 => '¢',
3745
- 65505 => '£',
3746
- 65506 => '¬',
3747
- 65508 => '¦',
3748
- 65509 => '¥',
3749
- 65510 => '₩',
3750
- 65512 => '│',
3751
- 65513 => '←',
3752
- 65514 => '↑',
3753
- 65515 => '→',
3754
- 65516 => '↓',
3755
- 65517 => '■',
3756
- 65518 => '○',
3757
- 66560 => '𐐨',
3758
- 66561 => '𐐩',
3759
- 66562 => '𐐪',
3760
- 66563 => '𐐫',
3761
- 66564 => '𐐬',
3762
- 66565 => '𐐭',
3763
- 66566 => '𐐮',
3764
- 66567 => '𐐯',
3765
- 66568 => '𐐰',
3766
- 66569 => '𐐱',
3767
- 66570 => '𐐲',
3768
- 66571 => '𐐳',
3769
- 66572 => '𐐴',
3770
- 66573 => '𐐵',
3771
- 66574 => '𐐶',
3772
- 66575 => '𐐷',
3773
- 66576 => '𐐸',
3774
- 66577 => '𐐹',
3775
- 66578 => '𐐺',
3776
- 66579 => '𐐻',
3777
- 66580 => '𐐼',
3778
- 66581 => '𐐽',
3779
- 66582 => '𐐾',
3780
- 66583 => '𐐿',
3781
- 66584 => '𐑀',
3782
- 66585 => '𐑁',
3783
- 66586 => '𐑂',
3784
- 66587 => '𐑃',
3785
- 66588 => '𐑄',
3786
- 66589 => '𐑅',
3787
- 66590 => '𐑆',
3788
- 66591 => '𐑇',
3789
- 66592 => '𐑈',
3790
- 66593 => '𐑉',
3791
- 66594 => '𐑊',
3792
- 66595 => '𐑋',
3793
- 66596 => '𐑌',
3794
- 66597 => '𐑍',
3795
- 66598 => '𐑎',
3796
- 66599 => '𐑏',
3797
- 66736 => '𐓘',
3798
- 66737 => '𐓙',
3799
- 66738 => '𐓚',
3800
- 66739 => '𐓛',
3801
- 66740 => '𐓜',
3802
- 66741 => '𐓝',
3803
- 66742 => '𐓞',
3804
- 66743 => '𐓟',
3805
- 66744 => '𐓠',
3806
- 66745 => '𐓡',
3807
- 66746 => '𐓢',
3808
- 66747 => '𐓣',
3809
- 66748 => '𐓤',
3810
- 66749 => '𐓥',
3811
- 66750 => '𐓦',
3812
- 66751 => '𐓧',
3813
- 66752 => '𐓨',
3814
- 66753 => '𐓩',
3815
- 66754 => '𐓪',
3816
- 66755 => '𐓫',
3817
- 66756 => '𐓬',
3818
- 66757 => '𐓭',
3819
- 66758 => '𐓮',
3820
- 66759 => '𐓯',
3821
- 66760 => '𐓰',
3822
- 66761 => '𐓱',
3823
- 66762 => '𐓲',
3824
- 66763 => '𐓳',
3825
- 66764 => '𐓴',
3826
- 66765 => '𐓵',
3827
- 66766 => '𐓶',
3828
- 66767 => '𐓷',
3829
- 66768 => '𐓸',
3830
- 66769 => '𐓹',
3831
- 66770 => '𐓺',
3832
- 66771 => '𐓻',
3833
- 68736 => '𐳀',
3834
- 68737 => '𐳁',
3835
- 68738 => '𐳂',
3836
- 68739 => '𐳃',
3837
- 68740 => '𐳄',
3838
- 68741 => '𐳅',
3839
- 68742 => '𐳆',
3840
- 68743 => '𐳇',
3841
- 68744 => '𐳈',
3842
- 68745 => '𐳉',
3843
- 68746 => '𐳊',
3844
- 68747 => '𐳋',
3845
- 68748 => '𐳌',
3846
- 68749 => '𐳍',
3847
- 68750 => '𐳎',
3848
- 68751 => '𐳏',
3849
- 68752 => '𐳐',
3850
- 68753 => '𐳑',
3851
- 68754 => '𐳒',
3852
- 68755 => '𐳓',
3853
- 68756 => '𐳔',
3854
- 68757 => '𐳕',
3855
- 68758 => '𐳖',
3856
- 68759 => '𐳗',
3857
- 68760 => '𐳘',
3858
- 68761 => '𐳙',
3859
- 68762 => '𐳚',
3860
- 68763 => '𐳛',
3861
- 68764 => '𐳜',
3862
- 68765 => '𐳝',
3863
- 68766 => '𐳞',
3864
- 68767 => '𐳟',
3865
- 68768 => '𐳠',
3866
- 68769 => '𐳡',
3867
- 68770 => '𐳢',
3868
- 68771 => '𐳣',
3869
- 68772 => '𐳤',
3870
- 68773 => '𐳥',
3871
- 68774 => '𐳦',
3872
- 68775 => '𐳧',
3873
- 68776 => '𐳨',
3874
- 68777 => '𐳩',
3875
- 68778 => '𐳪',
3876
- 68779 => '𐳫',
3877
- 68780 => '𐳬',
3878
- 68781 => '𐳭',
3879
- 68782 => '𐳮',
3880
- 68783 => '𐳯',
3881
- 68784 => '𐳰',
3882
- 68785 => '𐳱',
3883
- 68786 => '𐳲',
3884
- 71840 => '𑣀',
3885
- 71841 => '𑣁',
3886
- 71842 => '𑣂',
3887
- 71843 => '𑣃',
3888
- 71844 => '𑣄',
3889
- 71845 => '𑣅',
3890
- 71846 => '𑣆',
3891
- 71847 => '𑣇',
3892
- 71848 => '𑣈',
3893
- 71849 => '𑣉',
3894
- 71850 => '𑣊',
3895
- 71851 => '𑣋',
3896
- 71852 => '𑣌',
3897
- 71853 => '𑣍',
3898
- 71854 => '𑣎',
3899
- 71855 => '𑣏',
3900
- 71856 => '𑣐',
3901
- 71857 => '𑣑',
3902
- 71858 => '𑣒',
3903
- 71859 => '𑣓',
3904
- 71860 => '𑣔',
3905
- 71861 => '𑣕',
3906
- 71862 => '𑣖',
3907
- 71863 => '𑣗',
3908
- 71864 => '𑣘',
3909
- 71865 => '𑣙',
3910
- 71866 => '𑣚',
3911
- 71867 => '𑣛',
3912
- 71868 => '𑣜',
3913
- 71869 => '𑣝',
3914
- 71870 => '𑣞',
3915
- 71871 => '𑣟',
3916
- 93760 => '𖹠',
3917
- 93761 => '𖹡',
3918
- 93762 => '𖹢',
3919
- 93763 => '𖹣',
3920
- 93764 => '𖹤',
3921
- 93765 => '𖹥',
3922
- 93766 => '𖹦',
3923
- 93767 => '𖹧',
3924
- 93768 => '𖹨',
3925
- 93769 => '𖹩',
3926
- 93770 => '𖹪',
3927
- 93771 => '𖹫',
3928
- 93772 => '𖹬',
3929
- 93773 => '𖹭',
3930
- 93774 => '𖹮',
3931
- 93775 => '𖹯',
3932
- 93776 => '𖹰',
3933
- 93777 => '𖹱',
3934
- 93778 => '𖹲',
3935
- 93779 => '𖹳',
3936
- 93780 => '𖹴',
3937
- 93781 => '𖹵',
3938
- 93782 => '𖹶',
3939
- 93783 => '𖹷',
3940
- 93784 => '𖹸',
3941
- 93785 => '𖹹',
3942
- 93786 => '𖹺',
3943
- 93787 => '𖹻',
3944
- 93788 => '𖹼',
3945
- 93789 => '𖹽',
3946
- 93790 => '𖹾',
3947
- 93791 => '𖹿',
3948
- 119134 => '𝅗𝅥',
3949
- 119135 => '𝅘𝅥',
3950
- 119136 => '𝅘𝅥𝅮',
3951
- 119137 => '𝅘𝅥𝅯',
3952
- 119138 => '𝅘𝅥𝅰',
3953
- 119139 => '𝅘𝅥𝅱',
3954
- 119140 => '𝅘𝅥𝅲',
3955
- 119227 => '𝆹𝅥',
3956
- 119228 => '𝆺𝅥',
3957
- 119229 => '𝆹𝅥𝅮',
3958
- 119230 => '𝆺𝅥𝅮',
3959
- 119231 => '𝆹𝅥𝅯',
3960
- 119232 => '𝆺𝅥𝅯',
3961
- 119808 => 'a',
3962
- 119809 => 'b',
3963
- 119810 => 'c',
3964
- 119811 => 'd',
3965
- 119812 => 'e',
3966
- 119813 => 'f',
3967
- 119814 => 'g',
3968
- 119815 => 'h',
3969
- 119816 => 'i',
3970
- 119817 => 'j',
3971
- 119818 => 'k',
3972
- 119819 => 'l',
3973
- 119820 => 'm',
3974
- 119821 => 'n',
3975
- 119822 => 'o',
3976
- 119823 => 'p',
3977
- 119824 => 'q',
3978
- 119825 => 'r',
3979
- 119826 => 's',
3980
- 119827 => 't',
3981
- 119828 => 'u',
3982
- 119829 => 'v',
3983
- 119830 => 'w',
3984
- 119831 => 'x',
3985
- 119832 => 'y',
3986
- 119833 => 'z',
3987
- 119834 => 'a',
3988
- 119835 => 'b',
3989
- 119836 => 'c',
3990
- 119837 => 'd',
3991
- 119838 => 'e',
3992
- 119839 => 'f',
3993
- 119840 => 'g',
3994
- 119841 => 'h',
3995
- 119842 => 'i',
3996
- 119843 => 'j',
3997
- 119844 => 'k',
3998
- 119845 => 'l',
3999
- 119846 => 'm',
4000
- 119847 => 'n',
4001
- 119848 => 'o',
4002
- 119849 => 'p',
4003
- 119850 => 'q',
4004
- 119851 => 'r',
4005
- 119852 => 's',
4006
- 119853 => 't',
4007
- 119854 => 'u',
4008
- 119855 => 'v',
4009
- 119856 => 'w',
4010
- 119857 => 'x',
4011
- 119858 => 'y',
4012
- 119859 => 'z',
4013
- 119860 => 'a',
4014
- 119861 => 'b',
4015
- 119862 => 'c',
4016
- 119863 => 'd',
4017
- 119864 => 'e',
4018
- 119865 => 'f',
4019
- 119866 => 'g',
4020
- 119867 => 'h',
4021
- 119868 => 'i',
4022
- 119869 => 'j',
4023
- 119870 => 'k',
4024
- 119871 => 'l',
4025
- 119872 => 'm',
4026
- 119873 => 'n',
4027
- 119874 => 'o',
4028
- 119875 => 'p',
4029
- 119876 => 'q',
4030
- 119877 => 'r',
4031
- 119878 => 's',
4032
- 119879 => 't',
4033
- 119880 => 'u',
4034
- 119881 => 'v',
4035
- 119882 => 'w',
4036
- 119883 => 'x',
4037
- 119884 => 'y',
4038
- 119885 => 'z',
4039
- 119886 => 'a',
4040
- 119887 => 'b',
4041
- 119888 => 'c',
4042
- 119889 => 'd',
4043
- 119890 => 'e',
4044
- 119891 => 'f',
4045
- 119892 => 'g',
4046
- 119894 => 'i',
4047
- 119895 => 'j',
4048
- 119896 => 'k',
4049
- 119897 => 'l',
4050
- 119898 => 'm',
4051
- 119899 => 'n',
4052
- 119900 => 'o',
4053
- 119901 => 'p',
4054
- 119902 => 'q',
4055
- 119903 => 'r',
4056
- 119904 => 's',
4057
- 119905 => 't',
4058
- 119906 => 'u',
4059
- 119907 => 'v',
4060
- 119908 => 'w',
4061
- 119909 => 'x',
4062
- 119910 => 'y',
4063
- 119911 => 'z',
4064
- 119912 => 'a',
4065
- 119913 => 'b',
4066
- 119914 => 'c',
4067
- 119915 => 'd',
4068
- 119916 => 'e',
4069
- 119917 => 'f',
4070
- 119918 => 'g',
4071
- 119919 => 'h',
4072
- 119920 => 'i',
4073
- 119921 => 'j',
4074
- 119922 => 'k',
4075
- 119923 => 'l',
4076
- 119924 => 'm',
4077
- 119925 => 'n',
4078
- 119926 => 'o',
4079
- 119927 => 'p',
4080
- 119928 => 'q',
4081
- 119929 => 'r',
4082
- 119930 => 's',
4083
- 119931 => 't',
4084
- 119932 => 'u',
4085
- 119933 => 'v',
4086
- 119934 => 'w',
4087
- 119935 => 'x',
4088
- 119936 => 'y',
4089
- 119937 => 'z',
4090
- 119938 => 'a',
4091
- 119939 => 'b',
4092
- 119940 => 'c',
4093
- 119941 => 'd',
4094
- 119942 => 'e',
4095
- 119943 => 'f',
4096
- 119944 => 'g',
4097
- 119945 => 'h',
4098
- 119946 => 'i',
4099
- 119947 => 'j',
4100
- 119948 => 'k',
4101
- 119949 => 'l',
4102
- 119950 => 'm',
4103
- 119951 => 'n',
4104
- 119952 => 'o',
4105
- 119953 => 'p',
4106
- 119954 => 'q',
4107
- 119955 => 'r',
4108
- 119956 => 's',
4109
- 119957 => 't',
4110
- 119958 => 'u',
4111
- 119959 => 'v',
4112
- 119960 => 'w',
4113
- 119961 => 'x',
4114
- 119962 => 'y',
4115
- 119963 => 'z',
4116
- 119964 => 'a',
4117
- 119966 => 'c',
4118
- 119967 => 'd',
4119
- 119970 => 'g',
4120
- 119973 => 'j',
4121
- 119974 => 'k',
4122
- 119977 => 'n',
4123
- 119978 => 'o',
4124
- 119979 => 'p',
4125
- 119980 => 'q',
4126
- 119982 => 's',
4127
- 119983 => 't',
4128
- 119984 => 'u',
4129
- 119985 => 'v',
4130
- 119986 => 'w',
4131
- 119987 => 'x',
4132
- 119988 => 'y',
4133
- 119989 => 'z',
4134
- 119990 => 'a',
4135
- 119991 => 'b',
4136
- 119992 => 'c',
4137
- 119993 => 'd',
4138
- 119995 => 'f',
4139
- 119997 => 'h',
4140
- 119998 => 'i',
4141
- 119999 => 'j',
4142
- 120000 => 'k',
4143
- 120001 => 'l',
4144
- 120002 => 'm',
4145
- 120003 => 'n',
4146
- 120005 => 'p',
4147
- 120006 => 'q',
4148
- 120007 => 'r',
4149
- 120008 => 's',
4150
- 120009 => 't',
4151
- 120010 => 'u',
4152
- 120011 => 'v',
4153
- 120012 => 'w',
4154
- 120013 => 'x',
4155
- 120014 => 'y',
4156
- 120015 => 'z',
4157
- 120016 => 'a',
4158
- 120017 => 'b',
4159
- 120018 => 'c',
4160
- 120019 => 'd',
4161
- 120020 => 'e',
4162
- 120021 => 'f',
4163
- 120022 => 'g',
4164
- 120023 => 'h',
4165
- 120024 => 'i',
4166
- 120025 => 'j',
4167
- 120026 => 'k',
4168
- 120027 => 'l',
4169
- 120028 => 'm',
4170
- 120029 => 'n',
4171
- 120030 => 'o',
4172
- 120031 => 'p',
4173
- 120032 => 'q',
4174
- 120033 => 'r',
4175
- 120034 => 's',
4176
- 120035 => 't',
4177
- 120036 => 'u',
4178
- 120037 => 'v',
4179
- 120038 => 'w',
4180
- 120039 => 'x',
4181
- 120040 => 'y',
4182
- 120041 => 'z',
4183
- 120042 => 'a',
4184
- 120043 => 'b',
4185
- 120044 => 'c',
4186
- 120045 => 'd',
4187
- 120046 => 'e',
4188
- 120047 => 'f',
4189
- 120048 => 'g',
4190
- 120049 => 'h',
4191
- 120050 => 'i',
4192
- 120051 => 'j',
4193
- 120052 => 'k',
4194
- 120053 => 'l',
4195
- 120054 => 'm',
4196
- 120055 => 'n',
4197
- 120056 => 'o',
4198
- 120057 => 'p',
4199
- 120058 => 'q',
4200
- 120059 => 'r',
4201
- 120060 => 's',
4202
- 120061 => 't',
4203
- 120062 => 'u',
4204
- 120063 => 'v',
4205
- 120064 => 'w',
4206
- 120065 => 'x',
4207
- 120066 => 'y',
4208
- 120067 => 'z',
4209
- 120068 => 'a',
4210
- 120069 => 'b',
4211
- 120071 => 'd',
4212
- 120072 => 'e',
4213
- 120073 => 'f',
4214
- 120074 => 'g',
4215
- 120077 => 'j',
4216
- 120078 => 'k',
4217
- 120079 => 'l',
4218
- 120080 => 'm',
4219
- 120081 => 'n',
4220
- 120082 => 'o',
4221
- 120083 => 'p',
4222
- 120084 => 'q',
4223
- 120086 => 's',
4224
- 120087 => 't',
4225
- 120088 => 'u',
4226
- 120089 => 'v',
4227
- 120090 => 'w',
4228
- 120091 => 'x',
4229
- 120092 => 'y',
4230
- 120094 => 'a',
4231
- 120095 => 'b',
4232
- 120096 => 'c',
4233
- 120097 => 'd',
4234
- 120098 => 'e',
4235
- 120099 => 'f',
4236
- 120100 => 'g',
4237
- 120101 => 'h',
4238
- 120102 => 'i',
4239
- 120103 => 'j',
4240
- 120104 => 'k',
4241
- 120105 => 'l',
4242
- 120106 => 'm',
4243
- 120107 => 'n',
4244
- 120108 => 'o',
4245
- 120109 => 'p',
4246
- 120110 => 'q',
4247
- 120111 => 'r',
4248
- 120112 => 's',
4249
- 120113 => 't',
4250
- 120114 => 'u',
4251
- 120115 => 'v',
4252
- 120116 => 'w',
4253
- 120117 => 'x',
4254
- 120118 => 'y',
4255
- 120119 => 'z',
4256
- 120120 => 'a',
4257
- 120121 => 'b',
4258
- 120123 => 'd',
4259
- 120124 => 'e',
4260
- 120125 => 'f',
4261
- 120126 => 'g',
4262
- 120128 => 'i',
4263
- 120129 => 'j',
4264
- 120130 => 'k',
4265
- 120131 => 'l',
4266
- 120132 => 'm',
4267
- 120134 => 'o',
4268
- 120138 => 's',
4269
- 120139 => 't',
4270
- 120140 => 'u',
4271
- 120141 => 'v',
4272
- 120142 => 'w',
4273
- 120143 => 'x',
4274
- 120144 => 'y',
4275
- 120146 => 'a',
4276
- 120147 => 'b',
4277
- 120148 => 'c',
4278
- 120149 => 'd',
4279
- 120150 => 'e',
4280
- 120151 => 'f',
4281
- 120152 => 'g',
4282
- 120153 => 'h',
4283
- 120154 => 'i',
4284
- 120155 => 'j',
4285
- 120156 => 'k',
4286
- 120157 => 'l',
4287
- 120158 => 'm',
4288
- 120159 => 'n',
4289
- 120160 => 'o',
4290
- 120161 => 'p',
4291
- 120162 => 'q',
4292
- 120163 => 'r',
4293
- 120164 => 's',
4294
- 120165 => 't',
4295
- 120166 => 'u',
4296
- 120167 => 'v',
4297
- 120168 => 'w',
4298
- 120169 => 'x',
4299
- 120170 => 'y',
4300
- 120171 => 'z',
4301
- 120172 => 'a',
4302
- 120173 => 'b',
4303
- 120174 => 'c',
4304
- 120175 => 'd',
4305
- 120176 => 'e',
4306
- 120177 => 'f',
4307
- 120178 => 'g',
4308
- 120179 => 'h',
4309
- 120180 => 'i',
4310
- 120181 => 'j',
4311
- 120182 => 'k',
4312
- 120183 => 'l',
4313
- 120184 => 'm',
4314
- 120185 => 'n',
4315
- 120186 => 'o',
4316
- 120187 => 'p',
4317
- 120188 => 'q',
4318
- 120189 => 'r',
4319
- 120190 => 's',
4320
- 120191 => 't',
4321
- 120192 => 'u',
4322
- 120193 => 'v',
4323
- 120194 => 'w',
4324
- 120195 => 'x',
4325
- 120196 => 'y',
4326
- 120197 => 'z',
4327
- 120198 => 'a',
4328
- 120199 => 'b',
4329
- 120200 => 'c',
4330
- 120201 => 'd',
4331
- 120202 => 'e',
4332
- 120203 => 'f',
4333
- 120204 => 'g',
4334
- 120205 => 'h',
4335
- 120206 => 'i',
4336
- 120207 => 'j',
4337
- 120208 => 'k',
4338
- 120209 => 'l',
4339
- 120210 => 'm',
4340
- 120211 => 'n',
4341
- 120212 => 'o',
4342
- 120213 => 'p',
4343
- 120214 => 'q',
4344
- 120215 => 'r',
4345
- 120216 => 's',
4346
- 120217 => 't',
4347
- 120218 => 'u',
4348
- 120219 => 'v',
4349
- 120220 => 'w',
4350
- 120221 => 'x',
4351
- 120222 => 'y',
4352
- 120223 => 'z',
4353
- 120224 => 'a',
4354
- 120225 => 'b',
4355
- 120226 => 'c',
4356
- 120227 => 'd',
4357
- 120228 => 'e',
4358
- 120229 => 'f',
4359
- 120230 => 'g',
4360
- 120231 => 'h',
4361
- 120232 => 'i',
4362
- 120233 => 'j',
4363
- 120234 => 'k',
4364
- 120235 => 'l',
4365
- 120236 => 'm',
4366
- 120237 => 'n',
4367
- 120238 => 'o',
4368
- 120239 => 'p',
4369
- 120240 => 'q',
4370
- 120241 => 'r',
4371
- 120242 => 's',
4372
- 120243 => 't',
4373
- 120244 => 'u',
4374
- 120245 => 'v',
4375
- 120246 => 'w',
4376
- 120247 => 'x',
4377
- 120248 => 'y',
4378
- 120249 => 'z',
4379
- 120250 => 'a',
4380
- 120251 => 'b',
4381
- 120252 => 'c',
4382
- 120253 => 'd',
4383
- 120254 => 'e',
4384
- 120255 => 'f',
4385
- 120256 => 'g',
4386
- 120257 => 'h',
4387
- 120258 => 'i',
4388
- 120259 => 'j',
4389
- 120260 => 'k',
4390
- 120261 => 'l',
4391
- 120262 => 'm',
4392
- 120263 => 'n',
4393
- 120264 => 'o',
4394
- 120265 => 'p',
4395
- 120266 => 'q',
4396
- 120267 => 'r',
4397
- 120268 => 's',
4398
- 120269 => 't',
4399
- 120270 => 'u',
4400
- 120271 => 'v',
4401
- 120272 => 'w',
4402
- 120273 => 'x',
4403
- 120274 => 'y',
4404
- 120275 => 'z',
4405
- 120276 => 'a',
4406
- 120277 => 'b',
4407
- 120278 => 'c',
4408
- 120279 => 'd',
4409
- 120280 => 'e',
4410
- 120281 => 'f',
4411
- 120282 => 'g',
4412
- 120283 => 'h',
4413
- 120284 => 'i',
4414
- 120285 => 'j',
4415
- 120286 => 'k',
4416
- 120287 => 'l',
4417
- 120288 => 'm',
4418
- 120289 => 'n',
4419
- 120290 => 'o',
4420
- 120291 => 'p',
4421
- 120292 => 'q',
4422
- 120293 => 'r',
4423
- 120294 => 's',
4424
- 120295 => 't',
4425
- 120296 => 'u',
4426
- 120297 => 'v',
4427
- 120298 => 'w',
4428
- 120299 => 'x',
4429
- 120300 => 'y',
4430
- 120301 => 'z',
4431
- 120302 => 'a',
4432
- 120303 => 'b',
4433
- 120304 => 'c',
4434
- 120305 => 'd',
4435
- 120306 => 'e',
4436
- 120307 => 'f',
4437
- 120308 => 'g',
4438
- 120309 => 'h',
4439
- 120310 => 'i',
4440
- 120311 => 'j',
4441
- 120312 => 'k',
4442
- 120313 => 'l',
4443
- 120314 => 'm',
4444
- 120315 => 'n',
4445
- 120316 => 'o',
4446
- 120317 => 'p',
4447
- 120318 => 'q',
4448
- 120319 => 'r',
4449
- 120320 => 's',
4450
- 120321 => 't',
4451
- 120322 => 'u',
4452
- 120323 => 'v',
4453
- 120324 => 'w',
4454
- 120325 => 'x',
4455
- 120326 => 'y',
4456
- 120327 => 'z',
4457
- 120328 => 'a',
4458
- 120329 => 'b',
4459
- 120330 => 'c',
4460
- 120331 => 'd',
4461
- 120332 => 'e',
4462
- 120333 => 'f',
4463
- 120334 => 'g',
4464
- 120335 => 'h',
4465
- 120336 => 'i',
4466
- 120337 => 'j',
4467
- 120338 => 'k',
4468
- 120339 => 'l',
4469
- 120340 => 'm',
4470
- 120341 => 'n',
4471
- 120342 => 'o',
4472
- 120343 => 'p',
4473
- 120344 => 'q',
4474
- 120345 => 'r',
4475
- 120346 => 's',
4476
- 120347 => 't',
4477
- 120348 => 'u',
4478
- 120349 => 'v',
4479
- 120350 => 'w',
4480
- 120351 => 'x',
4481
- 120352 => 'y',
4482
- 120353 => 'z',
4483
- 120354 => 'a',
4484
- 120355 => 'b',
4485
- 120356 => 'c',
4486
- 120357 => 'd',
4487
- 120358 => 'e',
4488
- 120359 => 'f',
4489
- 120360 => 'g',
4490
- 120361 => 'h',
4491
- 120362 => 'i',
4492
- 120363 => 'j',
4493
- 120364 => 'k',
4494
- 120365 => 'l',
4495
- 120366 => 'm',
4496
- 120367 => 'n',
4497
- 120368 => 'o',
4498
- 120369 => 'p',
4499
- 120370 => 'q',
4500
- 120371 => 'r',
4501
- 120372 => 's',
4502
- 120373 => 't',
4503
- 120374 => 'u',
4504
- 120375 => 'v',
4505
- 120376 => 'w',
4506
- 120377 => 'x',
4507
- 120378 => 'y',
4508
- 120379 => 'z',
4509
- 120380 => 'a',
4510
- 120381 => 'b',
4511
- 120382 => 'c',
4512
- 120383 => 'd',
4513
- 120384 => 'e',
4514
- 120385 => 'f',
4515
- 120386 => 'g',
4516
- 120387 => 'h',
4517
- 120388 => 'i',
4518
- 120389 => 'j',
4519
- 120390 => 'k',
4520
- 120391 => 'l',
4521
- 120392 => 'm',
4522
- 120393 => 'n',
4523
- 120394 => 'o',
4524
- 120395 => 'p',
4525
- 120396 => 'q',
4526
- 120397 => 'r',
4527
- 120398 => 's',
4528
- 120399 => 't',
4529
- 120400 => 'u',
4530
- 120401 => 'v',
4531
- 120402 => 'w',
4532
- 120403 => 'x',
4533
- 120404 => 'y',
4534
- 120405 => 'z',
4535
- 120406 => 'a',
4536
- 120407 => 'b',
4537
- 120408 => 'c',
4538
- 120409 => 'd',
4539
- 120410 => 'e',
4540
- 120411 => 'f',
4541
- 120412 => 'g',
4542
- 120413 => 'h',
4543
- 120414 => 'i',
4544
- 120415 => 'j',
4545
- 120416 => 'k',
4546
- 120417 => 'l',
4547
- 120418 => 'm',
4548
- 120419 => 'n',
4549
- 120420 => 'o',
4550
- 120421 => 'p',
4551
- 120422 => 'q',
4552
- 120423 => 'r',
4553
- 120424 => 's',
4554
- 120425 => 't',
4555
- 120426 => 'u',
4556
- 120427 => 'v',
4557
- 120428 => 'w',
4558
- 120429 => 'x',
4559
- 120430 => 'y',
4560
- 120431 => 'z',
4561
- 120432 => 'a',
4562
- 120433 => 'b',
4563
- 120434 => 'c',
4564
- 120435 => 'd',
4565
- 120436 => 'e',
4566
- 120437 => 'f',
4567
- 120438 => 'g',
4568
- 120439 => 'h',
4569
- 120440 => 'i',
4570
- 120441 => 'j',
4571
- 120442 => 'k',
4572
- 120443 => 'l',
4573
- 120444 => 'm',
4574
- 120445 => 'n',
4575
- 120446 => 'o',
4576
- 120447 => 'p',
4577
- 120448 => 'q',
4578
- 120449 => 'r',
4579
- 120450 => 's',
4580
- 120451 => 't',
4581
- 120452 => 'u',
4582
- 120453 => 'v',
4583
- 120454 => 'w',
4584
- 120455 => 'x',
4585
- 120456 => 'y',
4586
- 120457 => 'z',
4587
- 120458 => 'a',
4588
- 120459 => 'b',
4589
- 120460 => 'c',
4590
- 120461 => 'd',
4591
- 120462 => 'e',
4592
- 120463 => 'f',
4593
- 120464 => 'g',
4594
- 120465 => 'h',
4595
- 120466 => 'i',
4596
- 120467 => 'j',
4597
- 120468 => 'k',
4598
- 120469 => 'l',
4599
- 120470 => 'm',
4600
- 120471 => 'n',
4601
- 120472 => 'o',
4602
- 120473 => 'p',
4603
- 120474 => 'q',
4604
- 120475 => 'r',
4605
- 120476 => 's',
4606
- 120477 => 't',
4607
- 120478 => 'u',
4608
- 120479 => 'v',
4609
- 120480 => 'w',
4610
- 120481 => 'x',
4611
- 120482 => 'y',
4612
- 120483 => 'z',
4613
- 120484 => 'ı',
4614
- 120485 => 'ȷ',
4615
- 120488 => 'α',
4616
- 120489 => 'β',
4617
- 120490 => 'γ',
4618
- 120491 => 'δ',
4619
- 120492 => 'ε',
4620
- 120493 => 'ζ',
4621
- 120494 => 'η',
4622
- 120495 => 'θ',
4623
- 120496 => 'ι',
4624
- 120497 => 'κ',
4625
- 120498 => 'λ',
4626
- 120499 => 'μ',
4627
- 120500 => 'ν',
4628
- 120501 => 'ξ',
4629
- 120502 => 'ο',
4630
- 120503 => 'π',
4631
- 120504 => 'ρ',
4632
- 120505 => 'θ',
4633
- 120506 => 'σ',
4634
- 120507 => 'τ',
4635
- 120508 => 'υ',
4636
- 120509 => 'φ',
4637
- 120510 => 'χ',
4638
- 120511 => 'ψ',
4639
- 120512 => 'ω',
4640
- 120513 => '∇',
4641
- 120514 => 'α',
4642
- 120515 => 'β',
4643
- 120516 => 'γ',
4644
- 120517 => 'δ',
4645
- 120518 => 'ε',
4646
- 120519 => 'ζ',
4647
- 120520 => 'η',
4648
- 120521 => 'θ',
4649
- 120522 => 'ι',
4650
- 120523 => 'κ',
4651
- 120524 => 'λ',
4652
- 120525 => 'μ',
4653
- 120526 => 'ν',
4654
- 120527 => 'ξ',
4655
- 120528 => 'ο',
4656
- 120529 => 'π',
4657
- 120530 => 'ρ',
4658
- 120531 => 'σ',
4659
- 120532 => 'σ',
4660
- 120533 => 'τ',
4661
- 120534 => 'υ',
4662
- 120535 => 'φ',
4663
- 120536 => 'χ',
4664
- 120537 => 'ψ',
4665
- 120538 => 'ω',
4666
- 120539 => '∂',
4667
- 120540 => 'ε',
4668
- 120541 => 'θ',
4669
- 120542 => 'κ',
4670
- 120543 => 'φ',
4671
- 120544 => 'ρ',
4672
- 120545 => 'π',
4673
- 120546 => 'α',
4674
- 120547 => 'β',
4675
- 120548 => 'γ',
4676
- 120549 => 'δ',
4677
- 120550 => 'ε',
4678
- 120551 => 'ζ',
4679
- 120552 => 'η',
4680
- 120553 => 'θ',
4681
- 120554 => 'ι',
4682
- 120555 => 'κ',
4683
- 120556 => 'λ',
4684
- 120557 => 'μ',
4685
- 120558 => 'ν',
4686
- 120559 => 'ξ',
4687
- 120560 => 'ο',
4688
- 120561 => 'π',
4689
- 120562 => 'ρ',
4690
- 120563 => 'θ',
4691
- 120564 => 'σ',
4692
- 120565 => 'τ',
4693
- 120566 => 'υ',
4694
- 120567 => 'φ',
4695
- 120568 => 'χ',
4696
- 120569 => 'ψ',
4697
- 120570 => 'ω',
4698
- 120571 => '∇',
4699
- 120572 => 'α',
4700
- 120573 => 'β',
4701
- 120574 => 'γ',
4702
- 120575 => 'δ',
4703
- 120576 => 'ε',
4704
- 120577 => 'ζ',
4705
- 120578 => 'η',
4706
- 120579 => 'θ',
4707
- 120580 => 'ι',
4708
- 120581 => 'κ',
4709
- 120582 => 'λ',
4710
- 120583 => 'μ',
4711
- 120584 => 'ν',
4712
- 120585 => 'ξ',
4713
- 120586 => 'ο',
4714
- 120587 => 'π',
4715
- 120588 => 'ρ',
4716
- 120589 => 'σ',
4717
- 120590 => 'σ',
4718
- 120591 => 'τ',
4719
- 120592 => 'υ',
4720
- 120593 => 'φ',
4721
- 120594 => 'χ',
4722
- 120595 => 'ψ',
4723
- 120596 => 'ω',
4724
- 120597 => '∂',
4725
- 120598 => 'ε',
4726
- 120599 => 'θ',
4727
- 120600 => 'κ',
4728
- 120601 => 'φ',
4729
- 120602 => 'ρ',
4730
- 120603 => 'π',
4731
- 120604 => 'α',
4732
- 120605 => 'β',
4733
- 120606 => 'γ',
4734
- 120607 => 'δ',
4735
- 120608 => 'ε',
4736
- 120609 => 'ζ',
4737
- 120610 => 'η',
4738
- 120611 => 'θ',
4739
- 120612 => 'ι',
4740
- 120613 => 'κ',
4741
- 120614 => 'λ',
4742
- 120615 => 'μ',
4743
- 120616 => 'ν',
4744
- 120617 => 'ξ',
4745
- 120618 => 'ο',
4746
- 120619 => 'π',
4747
- 120620 => 'ρ',
4748
- 120621 => 'θ',
4749
- 120622 => 'σ',
4750
- 120623 => 'τ',
4751
- 120624 => 'υ',
4752
- 120625 => 'φ',
4753
- 120626 => 'χ',
4754
- 120627 => 'ψ',
4755
- 120628 => 'ω',
4756
- 120629 => '∇',
4757
- 120630 => 'α',
4758
- 120631 => 'β',
4759
- 120632 => 'γ',
4760
- 120633 => 'δ',
4761
- 120634 => 'ε',
4762
- 120635 => 'ζ',
4763
- 120636 => 'η',
4764
- 120637 => 'θ',
4765
- 120638 => 'ι',
4766
- 120639 => 'κ',
4767
- 120640 => 'λ',
4768
- 120641 => 'μ',
4769
- 120642 => 'ν',
4770
- 120643 => 'ξ',
4771
- 120644 => 'ο',
4772
- 120645 => 'π',
4773
- 120646 => 'ρ',
4774
- 120647 => 'σ',
4775
- 120648 => 'σ',
4776
- 120649 => 'τ',
4777
- 120650 => 'υ',
4778
- 120651 => 'φ',
4779
- 120652 => 'χ',
4780
- 120653 => 'ψ',
4781
- 120654 => 'ω',
4782
- 120655 => '∂',
4783
- 120656 => 'ε',
4784
- 120657 => 'θ',
4785
- 120658 => 'κ',
4786
- 120659 => 'φ',
4787
- 120660 => 'ρ',
4788
- 120661 => 'π',
4789
- 120662 => 'α',
4790
- 120663 => 'β',
4791
- 120664 => 'γ',
4792
- 120665 => 'δ',
4793
- 120666 => 'ε',
4794
- 120667 => 'ζ',
4795
- 120668 => 'η',
4796
- 120669 => 'θ',
4797
- 120670 => 'ι',
4798
- 120671 => 'κ',
4799
- 120672 => 'λ',
4800
- 120673 => 'μ',
4801
- 120674 => 'ν',
4802
- 120675 => 'ξ',
4803
- 120676 => 'ο',
4804
- 120677 => 'π',
4805
- 120678 => 'ρ',
4806
- 120679 => 'θ',
4807
- 120680 => 'σ',
4808
- 120681 => 'τ',
4809
- 120682 => 'υ',
4810
- 120683 => 'φ',
4811
- 120684 => 'χ',
4812
- 120685 => 'ψ',
4813
- 120686 => 'ω',
4814
- 120687 => '∇',
4815
- 120688 => 'α',
4816
- 120689 => 'β',
4817
- 120690 => 'γ',
4818
- 120691 => 'δ',
4819
- 120692 => 'ε',
4820
- 120693 => 'ζ',
4821
- 120694 => 'η',
4822
- 120695 => 'θ',
4823
- 120696 => 'ι',
4824
- 120697 => 'κ',
4825
- 120698 => 'λ',
4826
- 120699 => 'μ',
4827
- 120700 => 'ν',
4828
- 120701 => 'ξ',
4829
- 120702 => 'ο',
4830
- 120703 => 'π',
4831
- 120704 => 'ρ',
4832
- 120705 => 'σ',
4833
- 120706 => 'σ',
4834
- 120707 => 'τ',
4835
- 120708 => 'υ',
4836
- 120709 => 'φ',
4837
- 120710 => 'χ',
4838
- 120711 => 'ψ',
4839
- 120712 => 'ω',
4840
- 120713 => '∂',
4841
- 120714 => 'ε',
4842
- 120715 => 'θ',
4843
- 120716 => 'κ',
4844
- 120717 => 'φ',
4845
- 120718 => 'ρ',
4846
- 120719 => 'π',
4847
- 120720 => 'α',
4848
- 120721 => 'β',
4849
- 120722 => 'γ',
4850
- 120723 => 'δ',
4851
- 120724 => 'ε',
4852
- 120725 => 'ζ',
4853
- 120726 => 'η',
4854
- 120727 => 'θ',
4855
- 120728 => 'ι',
4856
- 120729 => 'κ',
4857
- 120730 => 'λ',
4858
- 120731 => 'μ',
4859
- 120732 => 'ν',
4860
- 120733 => 'ξ',
4861
- 120734 => 'ο',
4862
- 120735 => 'π',
4863
- 120736 => 'ρ',
4864
- 120737 => 'θ',
4865
- 120738 => 'σ',
4866
- 120739 => 'τ',
4867
- 120740 => 'υ',
4868
- 120741 => 'φ',
4869
- 120742 => 'χ',
4870
- 120743 => 'ψ',
4871
- 120744 => 'ω',
4872
- 120745 => '∇',
4873
- 120746 => 'α',
4874
- 120747 => 'β',
4875
- 120748 => 'γ',
4876
- 120749 => 'δ',
4877
- 120750 => 'ε',
4878
- 120751 => 'ζ',
4879
- 120752 => 'η',
4880
- 120753 => 'θ',
4881
- 120754 => 'ι',
4882
- 120755 => 'κ',
4883
- 120756 => 'λ',
4884
- 120757 => 'μ',
4885
- 120758 => 'ν',
4886
- 120759 => 'ξ',
4887
- 120760 => 'ο',
4888
- 120761 => 'π',
4889
- 120762 => 'ρ',
4890
- 120763 => 'σ',
4891
- 120764 => 'σ',
4892
- 120765 => 'τ',
4893
- 120766 => 'υ',
4894
- 120767 => 'φ',
4895
- 120768 => 'χ',
4896
- 120769 => 'ψ',
4897
- 120770 => 'ω',
4898
- 120771 => '∂',
4899
- 120772 => 'ε',
4900
- 120773 => 'θ',
4901
- 120774 => 'κ',
4902
- 120775 => 'φ',
4903
- 120776 => 'ρ',
4904
- 120777 => 'π',
4905
- 120778 => 'ϝ',
4906
- 120779 => 'ϝ',
4907
- 120782 => '0',
4908
- 120783 => '1',
4909
- 120784 => '2',
4910
- 120785 => '3',
4911
- 120786 => '4',
4912
- 120787 => '5',
4913
- 120788 => '6',
4914
- 120789 => '7',
4915
- 120790 => '8',
4916
- 120791 => '9',
4917
- 120792 => '0',
4918
- 120793 => '1',
4919
- 120794 => '2',
4920
- 120795 => '3',
4921
- 120796 => '4',
4922
- 120797 => '5',
4923
- 120798 => '6',
4924
- 120799 => '7',
4925
- 120800 => '8',
4926
- 120801 => '9',
4927
- 120802 => '0',
4928
- 120803 => '1',
4929
- 120804 => '2',
4930
- 120805 => '3',
4931
- 120806 => '4',
4932
- 120807 => '5',
4933
- 120808 => '6',
4934
- 120809 => '7',
4935
- 120810 => '8',
4936
- 120811 => '9',
4937
- 120812 => '0',
4938
- 120813 => '1',
4939
- 120814 => '2',
4940
- 120815 => '3',
4941
- 120816 => '4',
4942
- 120817 => '5',
4943
- 120818 => '6',
4944
- 120819 => '7',
4945
- 120820 => '8',
4946
- 120821 => '9',
4947
- 120822 => '0',
4948
- 120823 => '1',
4949
- 120824 => '2',
4950
- 120825 => '3',
4951
- 120826 => '4',
4952
- 120827 => '5',
4953
- 120828 => '6',
4954
- 120829 => '7',
4955
- 120830 => '8',
4956
- 120831 => '9',
4957
- 125184 => '𞤢',
4958
- 125185 => '𞤣',
4959
- 125186 => '𞤤',
4960
- 125187 => '𞤥',
4961
- 125188 => '𞤦',
4962
- 125189 => '𞤧',
4963
- 125190 => '𞤨',
4964
- 125191 => '𞤩',
4965
- 125192 => '𞤪',
4966
- 125193 => '𞤫',
4967
- 125194 => '𞤬',
4968
- 125195 => '𞤭',
4969
- 125196 => '𞤮',
4970
- 125197 => '𞤯',
4971
- 125198 => '𞤰',
4972
- 125199 => '𞤱',
4973
- 125200 => '𞤲',
4974
- 125201 => '𞤳',
4975
- 125202 => '𞤴',
4976
- 125203 => '𞤵',
4977
- 125204 => '𞤶',
4978
- 125205 => '𞤷',
4979
- 125206 => '𞤸',
4980
- 125207 => '𞤹',
4981
- 125208 => '𞤺',
4982
- 125209 => '𞤻',
4983
- 125210 => '𞤼',
4984
- 125211 => '𞤽',
4985
- 125212 => '𞤾',
4986
- 125213 => '𞤿',
4987
- 125214 => '𞥀',
4988
- 125215 => '𞥁',
4989
- 125216 => '𞥂',
4990
- 125217 => '𞥃',
4991
- 126464 => 'ا',
4992
- 126465 => 'ب',
4993
- 126466 => 'ج',
4994
- 126467 => 'د',
4995
- 126469 => 'و',
4996
- 126470 => 'ز',
4997
- 126471 => 'ح',
4998
- 126472 => 'ط',
4999
- 126473 => 'ي',
5000
- 126474 => 'ك',
5001
- 126475 => 'ل',
5002
- 126476 => 'م',
5003
- 126477 => 'ن',
5004
- 126478 => 'س',
5005
- 126479 => 'ع',
5006
- 126480 => 'ف',
5007
- 126481 => 'ص',
5008
- 126482 => 'ق',
5009
- 126483 => 'ر',
5010
- 126484 => 'ش',
5011
- 126485 => 'ت',
5012
- 126486 => 'ث',
5013
- 126487 => 'خ',
5014
- 126488 => 'ذ',
5015
- 126489 => 'ض',
5016
- 126490 => 'ظ',
5017
- 126491 => 'غ',
5018
- 126492 => 'ٮ',
5019
- 126493 => 'ں',
5020
- 126494 => 'ڡ',
5021
- 126495 => 'ٯ',
5022
- 126497 => 'ب',
5023
- 126498 => 'ج',
5024
- 126500 => 'ه',
5025
- 126503 => 'ح',
5026
- 126505 => 'ي',
5027
- 126506 => 'ك',
5028
- 126507 => 'ل',
5029
- 126508 => 'م',
5030
- 126509 => 'ن',
5031
- 126510 => 'س',
5032
- 126511 => 'ع',
5033
- 126512 => 'ف',
5034
- 126513 => 'ص',
5035
- 126514 => 'ق',
5036
- 126516 => 'ش',
5037
- 126517 => 'ت',
5038
- 126518 => 'ث',
5039
- 126519 => 'خ',
5040
- 126521 => 'ض',
5041
- 126523 => 'غ',
5042
- 126530 => 'ج',
5043
- 126535 => 'ح',
5044
- 126537 => 'ي',
5045
- 126539 => 'ل',
5046
- 126541 => 'ن',
5047
- 126542 => 'س',
5048
- 126543 => 'ع',
5049
- 126545 => 'ص',
5050
- 126546 => 'ق',
5051
- 126548 => 'ش',
5052
- 126551 => 'خ',
5053
- 126553 => 'ض',
5054
- 126555 => 'غ',
5055
- 126557 => 'ں',
5056
- 126559 => 'ٯ',
5057
- 126561 => 'ب',
5058
- 126562 => 'ج',
5059
- 126564 => 'ه',
5060
- 126567 => 'ح',
5061
- 126568 => 'ط',
5062
- 126569 => 'ي',
5063
- 126570 => 'ك',
5064
- 126572 => 'م',
5065
- 126573 => 'ن',
5066
- 126574 => 'س',
5067
- 126575 => 'ع',
5068
- 126576 => 'ف',
5069
- 126577 => 'ص',
5070
- 126578 => 'ق',
5071
- 126580 => 'ش',
5072
- 126581 => 'ت',
5073
- 126582 => 'ث',
5074
- 126583 => 'خ',
5075
- 126585 => 'ض',
5076
- 126586 => 'ظ',
5077
- 126587 => 'غ',
5078
- 126588 => 'ٮ',
5079
- 126590 => 'ڡ',
5080
- 126592 => 'ا',
5081
- 126593 => 'ب',
5082
- 126594 => 'ج',
5083
- 126595 => 'د',
5084
- 126596 => 'ه',
5085
- 126597 => 'و',
5086
- 126598 => 'ز',
5087
- 126599 => 'ح',
5088
- 126600 => 'ط',
5089
- 126601 => 'ي',
5090
- 126603 => 'ل',
5091
- 126604 => 'م',
5092
- 126605 => 'ن',
5093
- 126606 => 'س',
5094
- 126607 => 'ع',
5095
- 126608 => 'ف',
5096
- 126609 => 'ص',
5097
- 126610 => 'ق',
5098
- 126611 => 'ر',
5099
- 126612 => 'ش',
5100
- 126613 => 'ت',
5101
- 126614 => 'ث',
5102
- 126615 => 'خ',
5103
- 126616 => 'ذ',
5104
- 126617 => 'ض',
5105
- 126618 => 'ظ',
5106
- 126619 => 'غ',
5107
- 126625 => 'ب',
5108
- 126626 => 'ج',
5109
- 126627 => 'د',
5110
- 126629 => 'و',
5111
- 126630 => 'ز',
5112
- 126631 => 'ح',
5113
- 126632 => 'ط',
5114
- 126633 => 'ي',
5115
- 126635 => 'ل',
5116
- 126636 => 'م',
5117
- 126637 => 'ن',
5118
- 126638 => 'س',
5119
- 126639 => 'ع',
5120
- 126640 => 'ف',
5121
- 126641 => 'ص',
5122
- 126642 => 'ق',
5123
- 126643 => 'ر',
5124
- 126644 => 'ش',
5125
- 126645 => 'ت',
5126
- 126646 => 'ث',
5127
- 126647 => 'خ',
5128
- 126648 => 'ذ',
5129
- 126649 => 'ض',
5130
- 126650 => 'ظ',
5131
- 126651 => 'غ',
5132
- 127274 => '〔s〕',
5133
- 127275 => 'c',
5134
- 127276 => 'r',
5135
- 127277 => 'cd',
5136
- 127278 => 'wz',
5137
- 127280 => 'a',
5138
- 127281 => 'b',
5139
- 127282 => 'c',
5140
- 127283 => 'd',
5141
- 127284 => 'e',
5142
- 127285 => 'f',
5143
- 127286 => 'g',
5144
- 127287 => 'h',
5145
- 127288 => 'i',
5146
- 127289 => 'j',
5147
- 127290 => 'k',
5148
- 127291 => 'l',
5149
- 127292 => 'm',
5150
- 127293 => 'n',
5151
- 127294 => 'o',
5152
- 127295 => 'p',
5153
- 127296 => 'q',
5154
- 127297 => 'r',
5155
- 127298 => 's',
5156
- 127299 => 't',
5157
- 127300 => 'u',
5158
- 127301 => 'v',
5159
- 127302 => 'w',
5160
- 127303 => 'x',
5161
- 127304 => 'y',
5162
- 127305 => 'z',
5163
- 127306 => 'hv',
5164
- 127307 => 'mv',
5165
- 127308 => 'sd',
5166
- 127309 => 'ss',
5167
- 127310 => 'ppv',
5168
- 127311 => 'wc',
5169
- 127338 => 'mc',
5170
- 127339 => 'md',
5171
- 127340 => 'mr',
5172
- 127376 => 'dj',
5173
- 127488 => 'ほか',
5174
- 127489 => 'ココ',
5175
- 127490 => 'サ',
5176
- 127504 => '手',
5177
- 127505 => '字',
5178
- 127506 => '双',
5179
- 127507 => 'デ',
5180
- 127508 => '二',
5181
- 127509 => '多',
5182
- 127510 => '解',
5183
- 127511 => '天',
5184
- 127512 => '交',
5185
- 127513 => '映',
5186
- 127514 => '無',
5187
- 127515 => '料',
5188
- 127516 => '前',
5189
- 127517 => '後',
5190
- 127518 => '再',
5191
- 127519 => '新',
5192
- 127520 => '初',
5193
- 127521 => '終',
5194
- 127522 => '生',
5195
- 127523 => '販',
5196
- 127524 => '声',
5197
- 127525 => '吹',
5198
- 127526 => '演',
5199
- 127527 => '投',
5200
- 127528 => '捕',
5201
- 127529 => '一',
5202
- 127530 => '三',
5203
- 127531 => '遊',
5204
- 127532 => '左',
5205
- 127533 => '中',
5206
- 127534 => '右',
5207
- 127535 => '指',
5208
- 127536 => '走',
5209
- 127537 => '打',
5210
- 127538 => '禁',
5211
- 127539 => '空',
5212
- 127540 => '合',
5213
- 127541 => '満',
5214
- 127542 => '有',
5215
- 127543 => '月',
5216
- 127544 => '申',
5217
- 127545 => '割',
5218
- 127546 => '営',
5219
- 127547 => '配',
5220
- 127552 => '〔本〕',
5221
- 127553 => '〔三〕',
5222
- 127554 => '〔二〕',
5223
- 127555 => '〔安〕',
5224
- 127556 => '〔点〕',
5225
- 127557 => '〔打〕',
5226
- 127558 => '〔盗〕',
5227
- 127559 => '〔勝〕',
5228
- 127560 => '〔敗〕',
5229
- 127568 => '得',
5230
- 127569 => '可',
5231
- 130032 => '0',
5232
- 130033 => '1',
5233
- 130034 => '2',
5234
- 130035 => '3',
5235
- 130036 => '4',
5236
- 130037 => '5',
5237
- 130038 => '6',
5238
- 130039 => '7',
5239
- 130040 => '8',
5240
- 130041 => '9',
5241
- 194560 => '丽',
5242
- 194561 => '丸',
5243
- 194562 => '乁',
5244
- 194563 => '𠄢',
5245
- 194564 => '你',
5246
- 194565 => '侮',
5247
- 194566 => '侻',
5248
- 194567 => '倂',
5249
- 194568 => '偺',
5250
- 194569 => '備',
5251
- 194570 => '僧',
5252
- 194571 => '像',
5253
- 194572 => '㒞',
5254
- 194573 => '𠘺',
5255
- 194574 => '免',
5256
- 194575 => '兔',
5257
- 194576 => '兤',
5258
- 194577 => '具',
5259
- 194578 => '𠔜',
5260
- 194579 => '㒹',
5261
- 194580 => '內',
5262
- 194581 => '再',
5263
- 194582 => '𠕋',
5264
- 194583 => '冗',
5265
- 194584 => '冤',
5266
- 194585 => '仌',
5267
- 194586 => '冬',
5268
- 194587 => '况',
5269
- 194588 => '𩇟',
5270
- 194589 => '凵',
5271
- 194590 => '刃',
5272
- 194591 => '㓟',
5273
- 194592 => '刻',
5274
- 194593 => '剆',
5275
- 194594 => '割',
5276
- 194595 => '剷',
5277
- 194596 => '㔕',
5278
- 194597 => '勇',
5279
- 194598 => '勉',
5280
- 194599 => '勤',
5281
- 194600 => '勺',
5282
- 194601 => '包',
5283
- 194602 => '匆',
5284
- 194603 => '北',
5285
- 194604 => '卉',
5286
- 194605 => '卑',
5287
- 194606 => '博',
5288
- 194607 => '即',
5289
- 194608 => '卽',
5290
- 194609 => '卿',
5291
- 194610 => '卿',
5292
- 194611 => '卿',
5293
- 194612 => '𠨬',
5294
- 194613 => '灰',
5295
- 194614 => '及',
5296
- 194615 => '叟',
5297
- 194616 => '𠭣',
5298
- 194617 => '叫',
5299
- 194618 => '叱',
5300
- 194619 => '吆',
5301
- 194620 => '咞',
5302
- 194621 => '吸',
5303
- 194622 => '呈',
5304
- 194623 => '周',
5305
- 194624 => '咢',
5306
- 194625 => '哶',
5307
- 194626 => '唐',
5308
- 194627 => '啓',
5309
- 194628 => '啣',
5310
- 194629 => '善',
5311
- 194630 => '善',
5312
- 194631 => '喙',
5313
- 194632 => '喫',
5314
- 194633 => '喳',
5315
- 194634 => '嗂',
5316
- 194635 => '圖',
5317
- 194636 => '嘆',
5318
- 194637 => '圗',
5319
- 194638 => '噑',
5320
- 194639 => '噴',
5321
- 194640 => '切',
5322
- 194641 => '壮',
5323
- 194642 => '城',
5324
- 194643 => '埴',
5325
- 194644 => '堍',
5326
- 194645 => '型',
5327
- 194646 => '堲',
5328
- 194647 => '報',
5329
- 194648 => '墬',
5330
- 194649 => '𡓤',
5331
- 194650 => '売',
5332
- 194651 => '壷',
5333
- 194652 => '夆',
5334
- 194653 => '多',
5335
- 194654 => '夢',
5336
- 194655 => '奢',
5337
- 194656 => '𡚨',
5338
- 194657 => '𡛪',
5339
- 194658 => '姬',
5340
- 194659 => '娛',
5341
- 194660 => '娧',
5342
- 194661 => '姘',
5343
- 194662 => '婦',
5344
- 194663 => '㛮',
5345
- 194665 => '嬈',
5346
- 194666 => '嬾',
5347
- 194667 => '嬾',
5348
- 194668 => '𡧈',
5349
- 194669 => '寃',
5350
- 194670 => '寘',
5351
- 194671 => '寧',
5352
- 194672 => '寳',
5353
- 194673 => '𡬘',
5354
- 194674 => '寿',
5355
- 194675 => '将',
5356
- 194677 => '尢',
5357
- 194678 => '㞁',
5358
- 194679 => '屠',
5359
- 194680 => '屮',
5360
- 194681 => '峀',
5361
- 194682 => '岍',
5362
- 194683 => '𡷤',
5363
- 194684 => '嵃',
5364
- 194685 => '𡷦',
5365
- 194686 => '嵮',
5366
- 194687 => '嵫',
5367
- 194688 => '嵼',
5368
- 194689 => '巡',
5369
- 194690 => '巢',
5370
- 194691 => '㠯',
5371
- 194692 => '巽',
5372
- 194693 => '帨',
5373
- 194694 => '帽',
5374
- 194695 => '幩',
5375
- 194696 => '㡢',
5376
- 194697 => '𢆃',
5377
- 194698 => '㡼',
5378
- 194699 => '庰',
5379
- 194700 => '庳',
5380
- 194701 => '庶',
5381
- 194702 => '廊',
5382
- 194703 => '𪎒',
5383
- 194704 => '廾',
5384
- 194705 => '𢌱',
5385
- 194706 => '𢌱',
5386
- 194707 => '舁',
5387
- 194708 => '弢',
5388
- 194709 => '弢',
5389
- 194710 => '㣇',
5390
- 194711 => '𣊸',
5391
- 194712 => '𦇚',
5392
- 194713 => '形',
5393
- 194714 => '彫',
5394
- 194715 => '㣣',
5395
- 194716 => '徚',
5396
- 194717 => '忍',
5397
- 194718 => '志',
5398
- 194719 => '忹',
5399
- 194720 => '悁',
5400
- 194721 => '㤺',
5401
- 194722 => '㤜',
5402
- 194723 => '悔',
5403
- 194724 => '𢛔',
5404
- 194725 => '惇',
5405
- 194726 => '慈',
5406
- 194727 => '慌',
5407
- 194728 => '慎',
5408
- 194729 => '慌',
5409
- 194730 => '慺',
5410
- 194731 => '憎',
5411
- 194732 => '憲',
5412
- 194733 => '憤',
5413
- 194734 => '憯',
5414
- 194735 => '懞',
5415
- 194736 => '懲',
5416
- 194737 => '懶',
5417
- 194738 => '成',
5418
- 194739 => '戛',
5419
- 194740 => '扝',
5420
- 194741 => '抱',
5421
- 194742 => '拔',
5422
- 194743 => '捐',
5423
- 194744 => '𢬌',
5424
- 194745 => '挽',
5425
- 194746 => '拼',
5426
- 194747 => '捨',
5427
- 194748 => '掃',
5428
- 194749 => '揤',
5429
- 194750 => '𢯱',
5430
- 194751 => '搢',
5431
- 194752 => '揅',
5432
- 194753 => '掩',
5433
- 194754 => '㨮',
5434
- 194755 => '摩',
5435
- 194756 => '摾',
5436
- 194757 => '撝',
5437
- 194758 => '摷',
5438
- 194759 => '㩬',
5439
- 194760 => '敏',
5440
- 194761 => '敬',
5441
- 194762 => '𣀊',
5442
- 194763 => '旣',
5443
- 194764 => '書',
5444
- 194765 => '晉',
5445
- 194766 => '㬙',
5446
- 194767 => '暑',
5447
- 194768 => '㬈',
5448
- 194769 => '㫤',
5449
- 194770 => '冒',
5450
- 194771 => '冕',
5451
- 194772 => '最',
5452
- 194773 => '暜',
5453
- 194774 => '肭',
5454
- 194775 => '䏙',
5455
- 194776 => '朗',
5456
- 194777 => '望',
5457
- 194778 => '朡',
5458
- 194779 => '杞',
5459
- 194780 => '杓',
5460
- 194781 => '𣏃',
5461
- 194782 => '㭉',
5462
- 194783 => '柺',
5463
- 194784 => '枅',
5464
- 194785 => '桒',
5465
- 194786 => '梅',
5466
- 194787 => '𣑭',
5467
- 194788 => '梎',
5468
- 194789 => '栟',
5469
- 194790 => '椔',
5470
- 194791 => '㮝',
5471
- 194792 => '楂',
5472
- 194793 => '榣',
5473
- 194794 => '槪',
5474
- 194795 => '檨',
5475
- 194796 => '𣚣',
5476
- 194797 => '櫛',
5477
- 194798 => '㰘',
5478
- 194799 => '次',
5479
- 194800 => '𣢧',
5480
- 194801 => '歔',
5481
- 194802 => '㱎',
5482
- 194803 => '歲',
5483
- 194804 => '殟',
5484
- 194805 => '殺',
5485
- 194806 => '殻',
5486
- 194807 => '𣪍',
5487
- 194808 => '𡴋',
5488
- 194809 => '𣫺',
5489
- 194810 => '汎',
5490
- 194811 => '𣲼',
5491
- 194812 => '沿',
5492
- 194813 => '泍',
5493
- 194814 => '汧',
5494
- 194815 => '洖',
5495
- 194816 => '派',
5496
- 194817 => '海',
5497
- 194818 => '流',
5498
- 194819 => '浩',
5499
- 194820 => '浸',
5500
- 194821 => '涅',
5501
- 194822 => '𣴞',
5502
- 194823 => '洴',
5503
- 194824 => '港',
5504
- 194825 => '湮',
5505
- 194826 => '㴳',
5506
- 194827 => '滋',
5507
- 194828 => '滇',
5508
- 194829 => '𣻑',
5509
- 194830 => '淹',
5510
- 194831 => '潮',
5511
- 194832 => '𣽞',
5512
- 194833 => '𣾎',
5513
- 194834 => '濆',
5514
- 194835 => '瀹',
5515
- 194836 => '瀞',
5516
- 194837 => '瀛',
5517
- 194838 => '㶖',
5518
- 194839 => '灊',
5519
- 194840 => '災',
5520
- 194841 => '灷',
5521
- 194842 => '炭',
5522
- 194843 => '𠔥',
5523
- 194844 => '煅',
5524
- 194845 => '𤉣',
5525
- 194846 => '熜',
5526
- 194848 => '爨',
5527
- 194849 => '爵',
5528
- 194850 => '牐',
5529
- 194851 => '𤘈',
5530
- 194852 => '犀',
5531
- 194853 => '犕',
5532
- 194854 => '𤜵',
5533
- 194855 => '𤠔',
5534
- 194856 => '獺',
5535
- 194857 => '王',
5536
- 194858 => '㺬',
5537
- 194859 => '玥',
5538
- 194860 => '㺸',
5539
- 194861 => '㺸',
5540
- 194862 => '瑇',
5541
- 194863 => '瑜',
5542
- 194864 => '瑱',
5543
- 194865 => '璅',
5544
- 194866 => '瓊',
5545
- 194867 => '㼛',
5546
- 194868 => '甤',
5547
- 194869 => '𤰶',
5548
- 194870 => '甾',
5549
- 194871 => '𤲒',
5550
- 194872 => '異',
5551
- 194873 => '𢆟',
5552
- 194874 => '瘐',
5553
- 194875 => '𤾡',
5554
- 194876 => '𤾸',
5555
- 194877 => '𥁄',
5556
- 194878 => '㿼',
5557
- 194879 => '䀈',
5558
- 194880 => '直',
5559
- 194881 => '𥃳',
5560
- 194882 => '𥃲',
5561
- 194883 => '𥄙',
5562
- 194884 => '𥄳',
5563
- 194885 => '眞',
5564
- 194886 => '真',
5565
- 194887 => '真',
5566
- 194888 => '睊',
5567
- 194889 => '䀹',
5568
- 194890 => '瞋',
5569
- 194891 => '䁆',
5570
- 194892 => '䂖',
5571
- 194893 => '𥐝',
5572
- 194894 => '硎',
5573
- 194895 => '碌',
5574
- 194896 => '磌',
5575
- 194897 => '䃣',
5576
- 194898 => '𥘦',
5577
- 194899 => '祖',
5578
- 194900 => '𥚚',
5579
- 194901 => '𥛅',
5580
- 194902 => '福',
5581
- 194903 => '秫',
5582
- 194904 => '䄯',
5583
- 194905 => '穀',
5584
- 194906 => '穊',
5585
- 194907 => '穏',
5586
- 194908 => '𥥼',
5587
- 194909 => '𥪧',
5588
- 194910 => '𥪧',
5589
- 194912 => '䈂',
5590
- 194913 => '𥮫',
5591
- 194914 => '篆',
5592
- 194915 => '築',
5593
- 194916 => '䈧',
5594
- 194917 => '𥲀',
5595
- 194918 => '糒',
5596
- 194919 => '䊠',
5597
- 194920 => '糨',
5598
- 194921 => '糣',
5599
- 194922 => '紀',
5600
- 194923 => '𥾆',
5601
- 194924 => '絣',
5602
- 194925 => '䌁',
5603
- 194926 => '緇',
5604
- 194927 => '縂',
5605
- 194928 => '繅',
5606
- 194929 => '䌴',
5607
- 194930 => '𦈨',
5608
- 194931 => '𦉇',
5609
- 194932 => '䍙',
5610
- 194933 => '𦋙',
5611
- 194934 => '罺',
5612
- 194935 => '𦌾',
5613
- 194936 => '羕',
5614
- 194937 => '翺',
5615
- 194938 => '者',
5616
- 194939 => '𦓚',
5617
- 194940 => '𦔣',
5618
- 194941 => '聠',
5619
- 194942 => '𦖨',
5620
- 194943 => '聰',
5621
- 194944 => '𣍟',
5622
- 194945 => '䏕',
5623
- 194946 => '育',
5624
- 194947 => '脃',
5625
- 194948 => '䐋',
5626
- 194949 => '脾',
5627
- 194950 => '媵',
5628
- 194951 => '𦞧',
5629
- 194952 => '𦞵',
5630
- 194953 => '𣎓',
5631
- 194954 => '𣎜',
5632
- 194955 => '舁',
5633
- 194956 => '舄',
5634
- 194957 => '辞',
5635
- 194958 => '䑫',
5636
- 194959 => '芑',
5637
- 194960 => '芋',
5638
- 194961 => '芝',
5639
- 194962 => '劳',
5640
- 194963 => '花',
5641
- 194964 => '芳',
5642
- 194965 => '芽',
5643
- 194966 => '苦',
5644
- 194967 => '𦬼',
5645
- 194968 => '若',
5646
- 194969 => '茝',
5647
- 194970 => '荣',
5648
- 194971 => '莭',
5649
- 194972 => '茣',
5650
- 194973 => '莽',
5651
- 194974 => '菧',
5652
- 194975 => '著',
5653
- 194976 => '荓',
5654
- 194977 => '菊',
5655
- 194978 => '菌',
5656
- 194979 => '菜',
5657
- 194980 => '𦰶',
5658
- 194981 => '𦵫',
5659
- 194982 => '𦳕',
5660
- 194983 => '䔫',
5661
- 194984 => '蓱',
5662
- 194985 => '蓳',
5663
- 194986 => '蔖',
5664
- 194987 => '𧏊',
5665
- 194988 => '蕤',
5666
- 194989 => '𦼬',
5667
- 194990 => '䕝',
5668
- 194991 => '䕡',
5669
- 194992 => '𦾱',
5670
- 194993 => '𧃒',
5671
- 194994 => '䕫',
5672
- 194995 => '虐',
5673
- 194996 => '虜',
5674
- 194997 => '虧',
5675
- 194998 => '虩',
5676
- 194999 => '蚩',
5677
- 195000 => '蚈',
5678
- 195001 => '蜎',
5679
- 195002 => '蛢',
5680
- 195003 => '蝹',
5681
- 195004 => '蜨',
5682
- 195005 => '蝫',
5683
- 195006 => '螆',
5684
- 195008 => '蟡',
5685
- 195009 => '蠁',
5686
- 195010 => '䗹',
5687
- 195011 => '衠',
5688
- 195012 => '衣',
5689
- 195013 => '𧙧',
5690
- 195014 => '裗',
5691
- 195015 => '裞',
5692
- 195016 => '䘵',
5693
- 195017 => '裺',
5694
- 195018 => '㒻',
5695
- 195019 => '𧢮',
5696
- 195020 => '𧥦',
5697
- 195021 => '䚾',
5698
- 195022 => '䛇',
5699
- 195023 => '誠',
5700
- 195024 => '諭',
5701
- 195025 => '變',
5702
- 195026 => '豕',
5703
- 195027 => '𧲨',
5704
- 195028 => '貫',
5705
- 195029 => '賁',
5706
- 195030 => '贛',
5707
- 195031 => '起',
5708
- 195032 => '𧼯',
5709
- 195033 => '𠠄',
5710
- 195034 => '跋',
5711
- 195035 => '趼',
5712
- 195036 => '跰',
5713
- 195037 => '𠣞',
5714
- 195038 => '軔',
5715
- 195039 => '輸',
5716
- 195040 => '𨗒',
5717
- 195041 => '𨗭',
5718
- 195042 => '邔',
5719
- 195043 => '郱',
5720
- 195044 => '鄑',
5721
- 195045 => '𨜮',
5722
- 195046 => '鄛',
5723
- 195047 => '鈸',
5724
- 195048 => '鋗',
5725
- 195049 => '鋘',
5726
- 195050 => '鉼',
5727
- 195051 => '鏹',
5728
- 195052 => '鐕',
5729
- 195053 => '𨯺',
5730
- 195054 => '開',
5731
- 195055 => '䦕',
5732
- 195056 => '閷',
5733
- 195057 => '𨵷',
5734
- 195058 => '䧦',
5735
- 195059 => '雃',
5736
- 195060 => '嶲',
5737
- 195061 => '霣',
5738
- 195062 => '𩅅',
5739
- 195063 => '𩈚',
5740
- 195064 => '䩮',
5741
- 195065 => '䩶',
5742
- 195066 => '韠',
5743
- 195067 => '𩐊',
5744
- 195068 => '䪲',
5745
- 195069 => '𩒖',
5746
- 195070 => '頋',
5747
- 195071 => '頋',
5748
- 195072 => '頩',
5749
- 195073 => '𩖶',
5750
- 195074 => '飢',
5751
- 195075 => '䬳',
5752
- 195076 => '餩',
5753
- 195077 => '馧',
5754
- 195078 => '駂',
5755
- 195079 => '駾',
5756
- 195080 => '䯎',
5757
- 195081 => '𩬰',
5758
- 195082 => '鬒',
5759
- 195083 => '鱀',
5760
- 195084 => '鳽',
5761
- 195085 => '䳎',
5762
- 195086 => '䳭',
5763
- 195087 => '鵧',
5764
- 195088 => '𪃎',
5765
- 195089 => '䳸',
5766
- 195090 => '𪄅',
5767
- 195091 => '𪈎',
5768
- 195092 => '𪊑',
5769
- 195093 => '麻',
5770
- 195094 => '䵖',
5771
- 195095 => '黹',
5772
- 195096 => '黾',
5773
- 195097 => '鼅',
5774
- 195098 => '鼏',
5775
- 195099 => '鼖',
5776
- 195100 => '鼻',
5777
- 195101 => '𪘀',
5778
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/Resources/unidata/virama.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- 2381 => 9,
5
- 2509 => 9,
6
- 2637 => 9,
7
- 2765 => 9,
8
- 2893 => 9,
9
- 3021 => 9,
10
- 3149 => 9,
11
- 3277 => 9,
12
- 3387 => 9,
13
- 3388 => 9,
14
- 3405 => 9,
15
- 3530 => 9,
16
- 3642 => 9,
17
- 3770 => 9,
18
- 3972 => 9,
19
- 4153 => 9,
20
- 4154 => 9,
21
- 5908 => 9,
22
- 5940 => 9,
23
- 6098 => 9,
24
- 6752 => 9,
25
- 6980 => 9,
26
- 7082 => 9,
27
- 7083 => 9,
28
- 7154 => 9,
29
- 7155 => 9,
30
- 11647 => 9,
31
- 43014 => 9,
32
- 43052 => 9,
33
- 43204 => 9,
34
- 43347 => 9,
35
- 43456 => 9,
36
- 43766 => 9,
37
- 44013 => 9,
38
- 68159 => 9,
39
- 69702 => 9,
40
- 69759 => 9,
41
- 69817 => 9,
42
- 69939 => 9,
43
- 69940 => 9,
44
- 70080 => 9,
45
- 70197 => 9,
46
- 70378 => 9,
47
- 70477 => 9,
48
- 70722 => 9,
49
- 70850 => 9,
50
- 71103 => 9,
51
- 71231 => 9,
52
- 71350 => 9,
53
- 71467 => 9,
54
- 71737 => 9,
55
- 71997 => 9,
56
- 71998 => 9,
57
- 72160 => 9,
58
- 72244 => 9,
59
- 72263 => 9,
60
- 72345 => 9,
61
- 72767 => 9,
62
- 73028 => 9,
63
- 73029 => 9,
64
- 73111 => 9,
65
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/bootstrap.php DELETED
@@ -1,145 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Intl\Idn as p;
13
-
14
- if (extension_loaded('intl')) {
15
- return;
16
- }
17
-
18
- if (\PHP_VERSION_ID >= 80000) {
19
- return require __DIR__.'/bootstrap80.php';
20
- }
21
-
22
- if (!defined('U_IDNA_PROHIBITED_ERROR')) {
23
- define('U_IDNA_PROHIBITED_ERROR', 66560);
24
- }
25
- if (!defined('U_IDNA_ERROR_START')) {
26
- define('U_IDNA_ERROR_START', 66560);
27
- }
28
- if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
29
- define('U_IDNA_UNASSIGNED_ERROR', 66561);
30
- }
31
- if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
32
- define('U_IDNA_CHECK_BIDI_ERROR', 66562);
33
- }
34
- if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
35
- define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
36
- }
37
- if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
38
- define('U_IDNA_ACE_PREFIX_ERROR', 66564);
39
- }
40
- if (!defined('U_IDNA_VERIFICATION_ERROR')) {
41
- define('U_IDNA_VERIFICATION_ERROR', 66565);
42
- }
43
- if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
44
- define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
45
- }
46
- if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
47
- define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
48
- }
49
- if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
50
- define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
51
- }
52
- if (!defined('U_IDNA_ERROR_LIMIT')) {
53
- define('U_IDNA_ERROR_LIMIT', 66569);
54
- }
55
- if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
56
- define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
57
- }
58
- if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
59
- define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
60
- }
61
- if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
62
- define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
63
- }
64
- if (!defined('IDNA_DEFAULT')) {
65
- define('IDNA_DEFAULT', 0);
66
- }
67
- if (!defined('IDNA_ALLOW_UNASSIGNED')) {
68
- define('IDNA_ALLOW_UNASSIGNED', 1);
69
- }
70
- if (!defined('IDNA_USE_STD3_RULES')) {
71
- define('IDNA_USE_STD3_RULES', 2);
72
- }
73
- if (!defined('IDNA_CHECK_BIDI')) {
74
- define('IDNA_CHECK_BIDI', 4);
75
- }
76
- if (!defined('IDNA_CHECK_CONTEXTJ')) {
77
- define('IDNA_CHECK_CONTEXTJ', 8);
78
- }
79
- if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
80
- define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
81
- }
82
- if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
83
- define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
84
- }
85
- if (!defined('INTL_IDNA_VARIANT_2003')) {
86
- define('INTL_IDNA_VARIANT_2003', 0);
87
- }
88
- if (!defined('INTL_IDNA_VARIANT_UTS46')) {
89
- define('INTL_IDNA_VARIANT_UTS46', 1);
90
- }
91
- if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
92
- define('IDNA_ERROR_EMPTY_LABEL', 1);
93
- }
94
- if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
95
- define('IDNA_ERROR_LABEL_TOO_LONG', 2);
96
- }
97
- if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
98
- define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
99
- }
100
- if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
101
- define('IDNA_ERROR_LEADING_HYPHEN', 8);
102
- }
103
- if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
104
- define('IDNA_ERROR_TRAILING_HYPHEN', 16);
105
- }
106
- if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
107
- define('IDNA_ERROR_HYPHEN_3_4', 32);
108
- }
109
- if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
110
- define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
111
- }
112
- if (!defined('IDNA_ERROR_DISALLOWED')) {
113
- define('IDNA_ERROR_DISALLOWED', 128);
114
- }
115
- if (!defined('IDNA_ERROR_PUNYCODE')) {
116
- define('IDNA_ERROR_PUNYCODE', 256);
117
- }
118
- if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
119
- define('IDNA_ERROR_LABEL_HAS_DOT', 512);
120
- }
121
- if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
122
- define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
123
- }
124
- if (!defined('IDNA_ERROR_BIDI')) {
125
- define('IDNA_ERROR_BIDI', 2048);
126
- }
127
- if (!defined('IDNA_ERROR_CONTEXTJ')) {
128
- define('IDNA_ERROR_CONTEXTJ', 4096);
129
- }
130
-
131
- if (\PHP_VERSION_ID < 70400) {
132
- if (!function_exists('idn_to_ascii')) {
133
- function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
134
- }
135
- if (!function_exists('idn_to_utf8')) {
136
- function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_2003, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
137
- }
138
- } else {
139
- if (!function_exists('idn_to_ascii')) {
140
- function idn_to_ascii($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_ascii($domain, $flags, $variant, $idna_info); }
141
- }
142
- if (!function_exists('idn_to_utf8')) {
143
- function idn_to_utf8($domain, $flags = 0, $variant = \INTL_IDNA_VARIANT_UTS46, &$idna_info = null) { return p\Idn::idn_to_utf8($domain, $flags, $variant, $idna_info); }
144
- }
145
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-idn/bootstrap80.php DELETED
@@ -1,125 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Intl\Idn as p;
13
-
14
- if (!defined('U_IDNA_PROHIBITED_ERROR')) {
15
- define('U_IDNA_PROHIBITED_ERROR', 66560);
16
- }
17
- if (!defined('U_IDNA_ERROR_START')) {
18
- define('U_IDNA_ERROR_START', 66560);
19
- }
20
- if (!defined('U_IDNA_UNASSIGNED_ERROR')) {
21
- define('U_IDNA_UNASSIGNED_ERROR', 66561);
22
- }
23
- if (!defined('U_IDNA_CHECK_BIDI_ERROR')) {
24
- define('U_IDNA_CHECK_BIDI_ERROR', 66562);
25
- }
26
- if (!defined('U_IDNA_STD3_ASCII_RULES_ERROR')) {
27
- define('U_IDNA_STD3_ASCII_RULES_ERROR', 66563);
28
- }
29
- if (!defined('U_IDNA_ACE_PREFIX_ERROR')) {
30
- define('U_IDNA_ACE_PREFIX_ERROR', 66564);
31
- }
32
- if (!defined('U_IDNA_VERIFICATION_ERROR')) {
33
- define('U_IDNA_VERIFICATION_ERROR', 66565);
34
- }
35
- if (!defined('U_IDNA_LABEL_TOO_LONG_ERROR')) {
36
- define('U_IDNA_LABEL_TOO_LONG_ERROR', 66566);
37
- }
38
- if (!defined('U_IDNA_ZERO_LENGTH_LABEL_ERROR')) {
39
- define('U_IDNA_ZERO_LENGTH_LABEL_ERROR', 66567);
40
- }
41
- if (!defined('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR')) {
42
- define('U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR', 66568);
43
- }
44
- if (!defined('U_IDNA_ERROR_LIMIT')) {
45
- define('U_IDNA_ERROR_LIMIT', 66569);
46
- }
47
- if (!defined('U_STRINGPREP_PROHIBITED_ERROR')) {
48
- define('U_STRINGPREP_PROHIBITED_ERROR', 66560);
49
- }
50
- if (!defined('U_STRINGPREP_UNASSIGNED_ERROR')) {
51
- define('U_STRINGPREP_UNASSIGNED_ERROR', 66561);
52
- }
53
- if (!defined('U_STRINGPREP_CHECK_BIDI_ERROR')) {
54
- define('U_STRINGPREP_CHECK_BIDI_ERROR', 66562);
55
- }
56
- if (!defined('IDNA_DEFAULT')) {
57
- define('IDNA_DEFAULT', 0);
58
- }
59
- if (!defined('IDNA_ALLOW_UNASSIGNED')) {
60
- define('IDNA_ALLOW_UNASSIGNED', 1);
61
- }
62
- if (!defined('IDNA_USE_STD3_RULES')) {
63
- define('IDNA_USE_STD3_RULES', 2);
64
- }
65
- if (!defined('IDNA_CHECK_BIDI')) {
66
- define('IDNA_CHECK_BIDI', 4);
67
- }
68
- if (!defined('IDNA_CHECK_CONTEXTJ')) {
69
- define('IDNA_CHECK_CONTEXTJ', 8);
70
- }
71
- if (!defined('IDNA_NONTRANSITIONAL_TO_ASCII')) {
72
- define('IDNA_NONTRANSITIONAL_TO_ASCII', 16);
73
- }
74
- if (!defined('IDNA_NONTRANSITIONAL_TO_UNICODE')) {
75
- define('IDNA_NONTRANSITIONAL_TO_UNICODE', 32);
76
- }
77
- if (!defined('INTL_IDNA_VARIANT_UTS46')) {
78
- define('INTL_IDNA_VARIANT_UTS46', 1);
79
- }
80
- if (!defined('IDNA_ERROR_EMPTY_LABEL')) {
81
- define('IDNA_ERROR_EMPTY_LABEL', 1);
82
- }
83
- if (!defined('IDNA_ERROR_LABEL_TOO_LONG')) {
84
- define('IDNA_ERROR_LABEL_TOO_LONG', 2);
85
- }
86
- if (!defined('IDNA_ERROR_DOMAIN_NAME_TOO_LONG')) {
87
- define('IDNA_ERROR_DOMAIN_NAME_TOO_LONG', 4);
88
- }
89
- if (!defined('IDNA_ERROR_LEADING_HYPHEN')) {
90
- define('IDNA_ERROR_LEADING_HYPHEN', 8);
91
- }
92
- if (!defined('IDNA_ERROR_TRAILING_HYPHEN')) {
93
- define('IDNA_ERROR_TRAILING_HYPHEN', 16);
94
- }
95
- if (!defined('IDNA_ERROR_HYPHEN_3_4')) {
96
- define('IDNA_ERROR_HYPHEN_3_4', 32);
97
- }
98
- if (!defined('IDNA_ERROR_LEADING_COMBINING_MARK')) {
99
- define('IDNA_ERROR_LEADING_COMBINING_MARK', 64);
100
- }
101
- if (!defined('IDNA_ERROR_DISALLOWED')) {
102
- define('IDNA_ERROR_DISALLOWED', 128);
103
- }
104
- if (!defined('IDNA_ERROR_PUNYCODE')) {
105
- define('IDNA_ERROR_PUNYCODE', 256);
106
- }
107
- if (!defined('IDNA_ERROR_LABEL_HAS_DOT')) {
108
- define('IDNA_ERROR_LABEL_HAS_DOT', 512);
109
- }
110
- if (!defined('IDNA_ERROR_INVALID_ACE_LABEL')) {
111
- define('IDNA_ERROR_INVALID_ACE_LABEL', 1024);
112
- }
113
- if (!defined('IDNA_ERROR_BIDI')) {
114
- define('IDNA_ERROR_BIDI', 2048);
115
- }
116
- if (!defined('IDNA_ERROR_CONTEXTJ')) {
117
- define('IDNA_ERROR_CONTEXTJ', 4096);
118
- }
119
-
120
- if (!function_exists('idn_to_ascii')) {
121
- function idn_to_ascii(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_ascii((string) $domain, (int) $flags, (int) $variant, $idna_info); }
122
- }
123
- if (!function_exists('idn_to_utf8')) {
124
- function idn_to_utf8(?string $domain, ?int $flags = IDNA_DEFAULT, ?int $variant = INTL_IDNA_VARIANT_UTS46, &$idna_info = null): string|false { return p\Idn::idn_to_utf8((string) $domain, (int) $flags, (int) $variant, $idna_info); }
125
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Normalizer.php DELETED
@@ -1,310 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Intl\Normalizer;
13
-
14
- /**
15
- * Normalizer is a PHP fallback implementation of the Normalizer class provided by the intl extension.
16
- *
17
- * It has been validated with Unicode 6.3 Normalization Conformance Test.
18
- * See http://www.unicode.org/reports/tr15/ for detailed info about Unicode normalizations.
19
- *
20
- * @author Nicolas Grekas <p@tchwork.com>
21
- *
22
- * @internal
23
- */
24
- class Normalizer
25
- {
26
- public const FORM_D = \Normalizer::FORM_D;
27
- public const FORM_KD = \Normalizer::FORM_KD;
28
- public const FORM_C = \Normalizer::FORM_C;
29
- public const FORM_KC = \Normalizer::FORM_KC;
30
- public const NFD = \Normalizer::NFD;
31
- public const NFKD = \Normalizer::NFKD;
32
- public const NFC = \Normalizer::NFC;
33
- public const NFKC = \Normalizer::NFKC;
34
-
35
- private static $C;
36
- private static $D;
37
- private static $KD;
38
- private static $cC;
39
- private static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4];
40
- private static $ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
41
-
42
- public static function isNormalized(string $s, int $form = self::FORM_C)
43
- {
44
- if (!\in_array($form, [self::NFD, self::NFKD, self::NFC, self::NFKC])) {
45
- return false;
46
- }
47
- if (!isset($s[strspn($s, self::$ASCII)])) {
48
- return true;
49
- }
50
- if (self::NFC == $form && preg_match('//u', $s) && !preg_match('/[^\x00-\x{2FF}]/u', $s)) {
51
- return true;
52
- }
53
-
54
- return self::normalize($s, $form) === $s;
55
- }
56
-
57
- public static function normalize(string $s, int $form = self::FORM_C)
58
- {
59
- if (!preg_match('//u', $s)) {
60
- return false;
61
- }
62
-
63
- switch ($form) {
64
- case self::NFC: $C = true; $K = false; break;
65
- case self::NFD: $C = false; $K = false; break;
66
- case self::NFKC: $C = true; $K = true; break;
67
- case self::NFKD: $C = false; $K = true; break;
68
- default:
69
- if (\defined('Normalizer::NONE') && \Normalizer::NONE == $form) {
70
- return $s;
71
- }
72
-
73
- if (80000 > \PHP_VERSION_ID) {
74
- return false;
75
- }
76
-
77
- throw new \ValueError('normalizer_normalize(): Argument #2 ($form) must be a a valid normalization form');
78
- }
79
-
80
- if ('' === $s) {
81
- return '';
82
- }
83
-
84
- if ($K && null === self::$KD) {
85
- self::$KD = self::getData('compatibilityDecomposition');
86
- }
87
-
88
- if (null === self::$D) {
89
- self::$D = self::getData('canonicalDecomposition');
90
- self::$cC = self::getData('combiningClass');
91
- }
92
-
93
- if (null !== $mbEncoding = (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) ? mb_internal_encoding() : null) {
94
- mb_internal_encoding('8bit');
95
- }
96
-
97
- $r = self::decompose($s, $K);
98
-
99
- if ($C) {
100
- if (null === self::$C) {
101
- self::$C = self::getData('canonicalComposition');
102
- }
103
-
104
- $r = self::recompose($r);
105
- }
106
- if (null !== $mbEncoding) {
107
- mb_internal_encoding($mbEncoding);
108
- }
109
-
110
- return $r;
111
- }
112
-
113
- private static function recompose($s)
114
- {
115
- $ASCII = self::$ASCII;
116
- $compMap = self::$C;
117
- $combClass = self::$cC;
118
- $ulenMask = self::$ulenMask;
119
-
120
- $result = $tail = '';
121
-
122
- $i = $s[0] < "\x80" ? 1 : $ulenMask[$s[0] & "\xF0"];
123
- $len = \strlen($s);
124
-
125
- $lastUchr = substr($s, 0, $i);
126
- $lastUcls = isset($combClass[$lastUchr]) ? 256 : 0;
127
-
128
- while ($i < $len) {
129
- if ($s[$i] < "\x80") {
130
- // ASCII chars
131
-
132
- if ($tail) {
133
- $lastUchr .= $tail;
134
- $tail = '';
135
- }
136
-
137
- if ($j = strspn($s, $ASCII, $i + 1)) {
138
- $lastUchr .= substr($s, $i, $j);
139
- $i += $j;
140
- }
141
-
142
- $result .= $lastUchr;
143
- $lastUchr = $s[$i];
144
- $lastUcls = 0;
145
- ++$i;
146
- continue;
147
- }
148
-
149
- $ulen = $ulenMask[$s[$i] & "\xF0"];
150
- $uchr = substr($s, $i, $ulen);
151
-
152
- if ($lastUchr < "\xE1\x84\x80" || "\xE1\x84\x92" < $lastUchr
153
- || $uchr < "\xE1\x85\xA1" || "\xE1\x85\xB5" < $uchr
154
- || $lastUcls) {
155
- // Table lookup and combining chars composition
156
-
157
- $ucls = $combClass[$uchr] ?? 0;
158
-
159
- if (isset($compMap[$lastUchr.$uchr]) && (!$lastUcls || $lastUcls < $ucls)) {
160
- $lastUchr = $compMap[$lastUchr.$uchr];
161
- } elseif ($lastUcls = $ucls) {
162
- $tail .= $uchr;
163
- } else {
164
- if ($tail) {
165
- $lastUchr .= $tail;
166
- $tail = '';
167
- }
168
-
169
- $result .= $lastUchr;
170
- $lastUchr = $uchr;
171
- }
172
- } else {
173
- // Hangul chars
174
-
175
- $L = \ord($lastUchr[2]) - 0x80;
176
- $V = \ord($uchr[2]) - 0xA1;
177
- $T = 0;
178
-
179
- $uchr = substr($s, $i + $ulen, 3);
180
-
181
- if ("\xE1\x86\xA7" <= $uchr && $uchr <= "\xE1\x87\x82") {
182
- $T = \ord($uchr[2]) - 0xA7;
183
- 0 > $T && $T += 0x40;
184
- $ulen += 3;
185
- }
186
-
187
- $L = 0xAC00 + ($L * 21 + $V) * 28 + $T;
188
- $lastUchr = \chr(0xE0 | $L >> 12).\chr(0x80 | $L >> 6 & 0x3F).\chr(0x80 | $L & 0x3F);
189
- }
190
-
191
- $i += $ulen;
192
- }
193
-
194
- return $result.$lastUchr.$tail;
195
- }
196
-
197
- private static function decompose($s, $c)
198
- {
199
- $result = '';
200
-
201
- $ASCII = self::$ASCII;
202
- $decompMap = self::$D;
203
- $combClass = self::$cC;
204
- $ulenMask = self::$ulenMask;
205
- if ($c) {
206
- $compatMap = self::$KD;
207
- }
208
-
209
- $c = [];
210
- $i = 0;
211
- $len = \strlen($s);
212
-
213
- while ($i < $len) {
214
- if ($s[$i] < "\x80") {
215
- // ASCII chars
216
-
217
- if ($c) {
218
- ksort($c);
219
- $result .= implode('', $c);
220
- $c = [];
221
- }
222
-
223
- $j = 1 + strspn($s, $ASCII, $i + 1);
224
- $result .= substr($s, $i, $j);
225
- $i += $j;
226
- continue;
227
- }
228
-
229
- $ulen = $ulenMask[$s[$i] & "\xF0"];
230
- $uchr = substr($s, $i, $ulen);
231
- $i += $ulen;
232
-
233
- if ($uchr < "\xEA\xB0\x80" || "\xED\x9E\xA3" < $uchr) {
234
- // Table lookup
235
-
236
- if ($uchr !== $j = $compatMap[$uchr] ?? ($decompMap[$uchr] ?? $uchr)) {
237
- $uchr = $j;
238
-
239
- $j = \strlen($uchr);
240
- $ulen = $uchr[0] < "\x80" ? 1 : $ulenMask[$uchr[0] & "\xF0"];
241
-
242
- if ($ulen != $j) {
243
- // Put trailing chars in $s
244
-
245
- $j -= $ulen;
246
- $i -= $j;
247
-
248
- if (0 > $i) {
249
- $s = str_repeat(' ', -$i).$s;
250
- $len -= $i;
251
- $i = 0;
252
- }
253
-
254
- while ($j--) {
255
- $s[$i + $j] = $uchr[$ulen + $j];
256
- }
257
-
258
- $uchr = substr($uchr, 0, $ulen);
259
- }
260
- }
261
- if (isset($combClass[$uchr])) {
262
- // Combining chars, for sorting
263
-
264
- if (!isset($c[$combClass[$uchr]])) {
265
- $c[$combClass[$uchr]] = '';
266
- }
267
- $c[$combClass[$uchr]] .= $uchr;
268
- continue;
269
- }
270
- } else {
271
- // Hangul chars
272
-
273
- $uchr = unpack('C*', $uchr);
274
- $j = (($uchr[1] - 224) << 12) + (($uchr[2] - 128) << 6) + $uchr[3] - 0xAC80;
275
-
276
- $uchr = "\xE1\x84".\chr(0x80 + (int) ($j / 588))
277
- ."\xE1\x85".\chr(0xA1 + (int) (($j % 588) / 28));
278
-
279
- if ($j %= 28) {
280
- $uchr .= $j < 25
281
- ? ("\xE1\x86".\chr(0xA7 + $j))
282
- : ("\xE1\x87".\chr(0x67 + $j));
283
- }
284
- }
285
- if ($c) {
286
- ksort($c);
287
- $result .= implode('', $c);
288
- $c = [];
289
- }
290
-
291
- $result .= $uchr;
292
- }
293
-
294
- if ($c) {
295
- ksort($c);
296
- $result .= implode('', $c);
297
- }
298
-
299
- return $result;
300
- }
301
-
302
- private static function getData($file)
303
- {
304
- if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) {
305
- return require $file;
306
- }
307
-
308
- return false;
309
- }
310
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Resources/stubs/Normalizer.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- class Normalizer extends Symfony\Polyfill\Intl\Normalizer\Normalizer
4
- {
5
- /**
6
- * @deprecated since ICU 56 and removed in PHP 8
7
- */
8
- public const NONE = 2;
9
- public const FORM_D = 4;
10
- public const FORM_KD = 8;
11
- public const FORM_C = 16;
12
- public const FORM_KC = 32;
13
- public const NFD = 4;
14
- public const NFKD = 8;
15
- public const NFC = 16;
16
- public const NFKC = 32;
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalComposition.php DELETED
@@ -1,945 +0,0 @@
1
- <?php
2
-
3
- return array (
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
- 'á' => 'á',
32
- 'â' => 'â',
33
- 'ã' => 'ã',
34
- 'ä' => 'ä',
35
- 'å' => 'å',
36
- 'ç' => 'ç',
37
- 'è' => 'è',
38
- 'é' => 'é',
39
- 'ê' => 'ê',
40
- 'ë' => 'ë',
41
- 'ì' => 'ì',
42
- 'í' => 'í',
43
- 'î' => 'î',
44
- 'ï' => 'ï',
45
- 'ñ' => 'ñ',
46
- 'ò' => 'ò',
47
- 'ó' => 'ó',
48
- 'ô' => 'ô',
49
- 'õ' => 'õ',
50
- 'ö' => 'ö',
51
- 'ù' => 'ù',
52
- 'ú' => 'ú',
53
- 'û' => 'û',
54
- 'ü' => 'ü',
55
- 'ý' => 'ý',
56
- 'ÿ' => 'ÿ',
57
- 'Ā' => 'Ā',
58
- 'ā' => 'ā',
59
- 'Ă' => 'Ă',
60
- 'ă' => 'ă',
61
- 'Ą' => 'Ą',
62
- 'ą' => 'ą',
63
- 'Ć' => 'Ć',
64
- 'ć' => 'ć',
65
- 'Ĉ' => 'Ĉ',
66
- 'ĉ' => 'ĉ',
67
- 'Ċ' => 'Ċ',
68
- 'ċ' => 'ċ',
69
- 'Č' => 'Č',
70
- 'č' => 'č',
71
- 'Ď' => 'Ď',
72
- 'ď' => 'ď',
73
- 'Ē' => 'Ē',
74
- 'ē' => 'ē',
75
- 'Ĕ' => 'Ĕ',
76
- 'ĕ' => 'ĕ',
77
- 'Ė' => 'Ė',
78
- 'ė' => 'ė',
79
- 'Ę' => 'Ę',
80
- 'ę' => 'ę',
81
- 'Ě' => 'Ě',
82
- 'ě' => 'ě',
83
- 'Ĝ' => 'Ĝ',
84
- 'ĝ' => 'ĝ',
85
- 'Ğ' => 'Ğ',
86
- 'ğ' => 'ğ',
87
- 'Ġ' => 'Ġ',
88
- 'ġ' => 'ġ',
89
- 'Ģ' => 'Ģ',
90
- 'ģ' => 'ģ',
91
- 'Ĥ' => 'Ĥ',
92
- 'ĥ' => 'ĥ',
93
- 'Ĩ' => 'Ĩ',
94
- 'ĩ' => 'ĩ',
95
- 'Ī' => 'Ī',
96
- 'ī' => 'ī',
97
- 'Ĭ' => 'Ĭ',
98
- 'ĭ' => 'ĭ',
99
- 'Į' => 'Į',
100
- 'į' => 'į',
101
- 'İ' => 'İ',
102
- 'Ĵ' => 'Ĵ',
103
- 'ĵ' => 'ĵ',
104
- 'Ķ' => 'Ķ',
105
- 'ķ' => 'ķ',
106
- 'Ĺ' => 'Ĺ',
107
- 'ĺ' => 'ĺ',
108
- 'Ļ' => 'Ļ',
109
- 'ļ' => 'ļ',
110
- 'Ľ' => 'Ľ',
111
- 'ľ' => 'ľ',
112
- 'Ń' => 'Ń',
113
- 'ń' => 'ń',
114
- 'Ņ' => 'Ņ',
115
- 'ņ' => 'ņ',
116
- 'Ň' => 'Ň',
117
- 'ň' => 'ň',
118
- 'Ō' => 'Ō',
119
- 'ō' => 'ō',
120
- 'Ŏ' => 'Ŏ',
121
- 'ŏ' => 'ŏ',
122
- 'Ő' => 'Ő',
123
- 'ő' => 'ő',
124
- 'Ŕ' => 'Ŕ',
125
- 'ŕ' => 'ŕ',
126
- 'Ŗ' => 'Ŗ',
127
- 'ŗ' => 'ŗ',
128
- 'Ř' => 'Ř',
129
- 'ř' => 'ř',
130
- 'Ś' => 'Ś',
131
- 'ś' => 'ś',
132
- 'Ŝ' => 'Ŝ',
133
- 'ŝ' => 'ŝ',
134
- 'Ş' => 'Ş',
135
- 'ş' => 'ş',
136
- 'Š' => 'Š',
137
- 'š' => 'š',
138
- 'Ţ' => 'Ţ',
139
- 'ţ' => 'ţ',
140
- 'Ť' => 'Ť',
141
- 'ť' => 'ť',
142
- 'Ũ' => 'Ũ',
143
- 'ũ' => 'ũ',
144
- 'Ū' => 'Ū',
145
- 'ū' => 'ū',
146
- 'Ŭ' => 'Ŭ',
147
- 'ŭ' => 'ŭ',
148
- 'Ů' => 'Ů',
149
- 'ů' => 'ů',
150
- 'Ű' => 'Ű',
151
- 'ű' => 'ű',
152
- 'Ų' => 'Ų',
153
- 'ų' => 'ų',
154
- 'Ŵ' => 'Ŵ',
155
- 'ŵ' => 'ŵ',
156
- 'Ŷ' => 'Ŷ',
157
- 'ŷ' => 'ŷ',
158
- 'Ÿ' => 'Ÿ',
159
- 'Ź' => 'Ź',
160
- 'ź' => 'ź',
161
- 'Ż' => 'Ż',
162
- 'ż' => 'ż',
163
- 'Ž' => 'Ž',
164
- 'ž' => 'ž',
165
- 'Ơ' => 'Ơ',
166
- 'ơ' => 'ơ',
167
- 'Ư' => 'Ư',
168
- 'ư' => 'ư',
169
- 'Ǎ' => 'Ǎ',
170
- 'ǎ' => 'ǎ',
171
- 'Ǐ' => 'Ǐ',
172
- 'ǐ' => 'ǐ',
173
- 'Ǒ' => 'Ǒ',
174
- 'ǒ' => 'ǒ',
175
- 'Ǔ' => 'Ǔ',
176
- 'ǔ' => 'ǔ',
177
- 'Ǖ' => 'Ǖ',
178
- 'ǖ' => 'ǖ',
179
- 'Ǘ' => 'Ǘ',
180
- 'ǘ' => 'ǘ',
181
- 'Ǚ' => 'Ǚ',
182
- 'ǚ' => 'ǚ',
183
- 'Ǜ' => 'Ǜ',
184
- 'ǜ' => 'ǜ',
185
- 'Ǟ' => 'Ǟ',
186
- 'ǟ' => 'ǟ',
187
- 'Ǡ' => 'Ǡ',
188
- 'ǡ' => 'ǡ',
189
- 'Ǣ' => 'Ǣ',
190
- 'ǣ' => 'ǣ',
191
- 'Ǧ' => 'Ǧ',
192
- 'ǧ' => 'ǧ',
193
- 'Ǩ' => 'Ǩ',
194
- 'ǩ' => 'ǩ',
195
- 'Ǫ' => 'Ǫ',
196
- 'ǫ' => 'ǫ',
197
- 'Ǭ' => 'Ǭ',
198
- 'ǭ' => 'ǭ',
199
- 'Ǯ' => 'Ǯ',
200
- 'ǯ' => 'ǯ',
201
- 'ǰ' => 'ǰ',
202
- 'Ǵ' => 'Ǵ',
203
- 'ǵ' => 'ǵ',
204
- 'Ǹ' => 'Ǹ',
205
- 'ǹ' => 'ǹ',
206
- 'Ǻ' => 'Ǻ',
207
- 'ǻ' => 'ǻ',
208
- 'Ǽ' => 'Ǽ',
209
- 'ǽ' => 'ǽ',
210
- 'Ǿ' => 'Ǿ',
211
- 'ǿ' => 'ǿ',
212
- 'Ȁ' => 'Ȁ',
213
- 'ȁ' => 'ȁ',
214
- 'Ȃ' => 'Ȃ',
215
- 'ȃ' => 'ȃ',
216
- 'Ȅ' => 'Ȅ',
217
- 'ȅ' => 'ȅ',
218
- 'Ȇ' => 'Ȇ',
219
- 'ȇ' => 'ȇ',
220
- 'Ȉ' => 'Ȉ',
221
- 'ȉ' => 'ȉ',
222
- 'Ȋ' => 'Ȋ',
223
- 'ȋ' => 'ȋ',
224
- 'Ȍ' => 'Ȍ',
225
- 'ȍ' => 'ȍ',
226
- 'Ȏ' => 'Ȏ',
227
- 'ȏ' => 'ȏ',
228
- 'Ȑ' => 'Ȑ',
229
- 'ȑ' => 'ȑ',
230
- 'Ȓ' => 'Ȓ',
231
- 'ȓ' => 'ȓ',
232
- 'Ȕ' => 'Ȕ',
233
- 'ȕ' => 'ȕ',
234
- 'Ȗ' => 'Ȗ',
235
- 'ȗ' => 'ȗ',
236
- 'Ș' => 'Ș',
237
- 'ș' => 'ș',
238
- 'Ț' => 'Ț',
239
- 'ț' => 'ț',
240
- 'Ȟ' => 'Ȟ',
241
- 'ȟ' => 'ȟ',
242
- 'Ȧ' => 'Ȧ',
243
- 'ȧ' => 'ȧ',
244
- 'Ȩ' => 'Ȩ',
245
- 'ȩ' => 'ȩ',
246
- 'Ȫ' => 'Ȫ',
247
- 'ȫ' => 'ȫ',
248
- 'Ȭ' => 'Ȭ',
249
- 'ȭ' => 'ȭ',
250
- 'Ȯ' => 'Ȯ',
251
- 'ȯ' => 'ȯ',
252
- 'Ȱ' => 'Ȱ',
253
- 'ȱ' => 'ȱ',
254
- 'Ȳ' => 'Ȳ',
255
- 'ȳ' => 'ȳ',
256
- '΅' => '΅',
257
- 'Ά' => 'Ά',
258
- 'Έ' => 'Έ',
259
- 'Ή' => 'Ή',
260
- 'Ί' => 'Ί',
261
- 'Ό' => 'Ό',
262
- 'Ύ' => 'Ύ',
263
- 'Ώ' => 'Ώ',
264
- 'ΐ' => 'ΐ',
265
- 'Ϊ' => 'Ϊ',
266
- 'Ϋ' => 'Ϋ',
267
- 'ά' => 'ά',
268
- 'έ' => 'έ',
269
- 'ή' => 'ή',
270
- 'ί' => 'ί',
271
- 'ΰ' => 'ΰ',
272
- 'ϊ' => 'ϊ',
273
- 'ϋ' => 'ϋ',
274
- 'ό' => 'ό',
275
- 'ύ' => 'ύ',
276
- 'ώ' => 'ώ',
277
- 'ϓ' => 'ϓ',
278
- 'ϔ' => 'ϔ',
279
- 'Ѐ' => 'Ѐ',
280
- 'Ё' => 'Ё',
281
- 'Ѓ' => 'Ѓ',
282
- 'Ї' => 'Ї',
283
- 'Ќ' => 'Ќ',
284
- 'Ѝ' => 'Ѝ',
285
- 'Ў' => 'Ў',
286
- 'Й' => 'Й',
287
- 'й' => 'й',
288
- 'ѐ' => 'ѐ',
289
- 'ё' => 'ё',
290
- 'ѓ' => 'ѓ',
291
- 'ї' => 'ї',
292
- 'ќ' => 'ќ',
293
- 'ѝ' => 'ѝ',
294
- 'ў' => 'ў',
295
- 'Ѷ' => 'Ѷ',
296
- 'ѷ' => 'ѷ',
297
- 'Ӂ' => 'Ӂ',
298
- 'ӂ' => 'ӂ',
299
- 'Ӑ' => 'Ӑ',
300
- 'ӑ' => 'ӑ',
301
- 'Ӓ' => 'Ӓ',
302
- 'ӓ' => 'ӓ',
303
- 'Ӗ' => 'Ӗ',
304
- 'ӗ' => 'ӗ',
305
- 'Ӛ' => 'Ӛ',
306
- 'ӛ' => 'ӛ',
307
- 'Ӝ' => 'Ӝ',
308
- 'ӝ' => 'ӝ',
309
- 'Ӟ' => 'Ӟ',
310
- 'ӟ' => 'ӟ',
311
- 'Ӣ' => 'Ӣ',
312
- 'ӣ' => 'ӣ',
313
- 'Ӥ' => 'Ӥ',
314
- 'ӥ' => 'ӥ',
315
- 'Ӧ' => 'Ӧ',
316
- 'ӧ' => 'ӧ',
317
- 'Ӫ' => 'Ӫ',
318
- 'ӫ' => 'ӫ',
319
- 'Ӭ' => 'Ӭ',
320
- 'ӭ' => 'ӭ',
321
- 'Ӯ' => 'Ӯ',
322
- 'ӯ' => 'ӯ',
323
- 'Ӱ' => 'Ӱ',
324
- 'ӱ' => 'ӱ',
325
- 'Ӳ' => 'Ӳ',
326
- 'ӳ' => 'ӳ',
327
- 'Ӵ' => 'Ӵ',
328
- 'ӵ' => 'ӵ',
329
- 'Ӹ' => 'Ӹ',
330
- 'ӹ' => 'ӹ',
331
- 'آ' => 'آ',
332
- 'أ' => 'أ',
333
- 'ؤ' => 'ؤ',
334
- 'إ' => 'إ',
335
- 'ئ' => 'ئ',
336
- 'ۀ' => 'ۀ',
337
- 'ۂ' => 'ۂ',
338
- 'ۓ' => 'ۓ',
339
- 'ऩ' => 'ऩ',
340
- 'ऱ' => 'ऱ',
341
- 'ऴ' => 'ऴ',
342
- 'ো' => 'ো',
343
- 'ৌ' => 'ৌ',
344
- 'ୈ' => 'ୈ',
345
- 'ୋ' => 'ୋ',
346
- 'ୌ' => 'ୌ',
347
- 'ஔ' => 'ஔ',
348
- 'ொ' => 'ொ',
349
- 'ோ' => 'ோ',
350
- 'ௌ' => 'ௌ',
351
- 'ై' => 'ై',
352
- 'ೀ' => 'ೀ',
353
- 'ೇ' => 'ೇ',
354
- 'ೈ' => 'ೈ',
355
- 'ೊ' => 'ೊ',
356
- 'ೋ' => 'ೋ',
357
- 'ൊ' => 'ൊ',
358
- 'ോ' => 'ോ',
359
- 'ൌ' => 'ൌ',
360
- 'ේ' => 'ේ',
361
- 'ො' => 'ො',
362
- 'ෝ' => 'ෝ',
363
- 'ෞ' => 'ෞ',
364
- 'ဦ' => 'ဦ',
365
- 'ᬆ' => 'ᬆ',
366
- 'ᬈ' => 'ᬈ',
367
- 'ᬊ' => 'ᬊ',
368
- 'ᬌ' => 'ᬌ',
369
- 'ᬎ' => 'ᬎ',
370
- 'ᬒ' => 'ᬒ',
371
- 'ᬻ' => 'ᬻ',
372
- 'ᬽ' => 'ᬽ',
373
- 'ᭀ' => 'ᭀ',
374
- 'ᭁ' => 'ᭁ',
375
- 'ᭃ' => 'ᭃ',
376
- 'Ḁ' => 'Ḁ',
377
- 'ḁ' => 'ḁ',
378
- 'Ḃ' => 'Ḃ',
379
- 'ḃ' => 'ḃ',
380
- 'Ḅ' => 'Ḅ',
381
- 'ḅ' => 'ḅ',
382
- 'Ḇ' => 'Ḇ',
383
- 'ḇ' => 'ḇ',
384
- 'Ḉ' => 'Ḉ',
385
- 'ḉ' => 'ḉ',
386
- 'Ḋ' => 'Ḋ',
387
- 'ḋ' => 'ḋ',
388
- 'Ḍ' => 'Ḍ',
389
- 'ḍ' => 'ḍ',
390
- 'Ḏ' => 'Ḏ',
391
- 'ḏ' => 'ḏ',
392
- 'Ḑ' => 'Ḑ',
393
- 'ḑ' => 'ḑ',
394
- 'Ḓ' => 'Ḓ',
395
- 'ḓ' => 'ḓ',
396
- 'Ḕ' => 'Ḕ',
397
- 'ḕ' => 'ḕ',
398
- 'Ḗ' => 'Ḗ',
399
- 'ḗ' => 'ḗ',
400
- 'Ḙ' => 'Ḙ',
401
- 'ḙ' => 'ḙ',
402
- 'Ḛ' => 'Ḛ',
403
- 'ḛ' => 'ḛ',
404
- 'Ḝ' => 'Ḝ',
405
- 'ḝ' => 'ḝ',
406
- 'Ḟ' => 'Ḟ',
407
- 'ḟ' => 'ḟ',
408
- 'Ḡ' => 'Ḡ',
409
- 'ḡ' => 'ḡ',
410
- 'Ḣ' => 'Ḣ',
411
- 'ḣ' => 'ḣ',
412
- 'Ḥ' => 'Ḥ',
413
- 'ḥ' => 'ḥ',
414
- 'Ḧ' => 'Ḧ',
415
- 'ḧ' => 'ḧ',
416
- 'Ḩ' => 'Ḩ',
417
- 'ḩ' => 'ḩ',
418
- 'Ḫ' => 'Ḫ',
419
- 'ḫ' => 'ḫ',
420
- 'Ḭ' => 'Ḭ',
421
- 'ḭ' => 'ḭ',
422
- 'Ḯ' => 'Ḯ',
423
- 'ḯ' => 'ḯ',
424
- 'Ḱ' => 'Ḱ',
425
- 'ḱ' => 'ḱ',
426
- 'Ḳ' => 'Ḳ',
427
- 'ḳ' => 'ḳ',
428
- 'Ḵ' => 'Ḵ',
429
- 'ḵ' => 'ḵ',
430
- 'Ḷ' => 'Ḷ',
431
- 'ḷ' => 'ḷ',
432
- 'Ḹ' => 'Ḹ',
433
- 'ḹ' => 'ḹ',
434
- 'Ḻ' => 'Ḻ',
435
- 'ḻ' => 'ḻ',
436
- 'Ḽ' => 'Ḽ',
437
- 'ḽ' => 'ḽ',
438
- 'Ḿ' => 'Ḿ',
439
- 'ḿ' => 'ḿ',
440
- 'Ṁ' => 'Ṁ',
441
- 'ṁ' => 'ṁ',
442
- 'Ṃ' => 'Ṃ',
443
- 'ṃ' => 'ṃ',
444
- 'Ṅ' => 'Ṅ',
445
- 'ṅ' => 'ṅ',
446
- 'Ṇ' => 'Ṇ',
447
- 'ṇ' => 'ṇ',
448
- 'Ṉ' => 'Ṉ',
449
- 'ṉ' => 'ṉ',
450
- 'Ṋ' => 'Ṋ',
451
- 'ṋ' => 'ṋ',
452
- 'Ṍ' => 'Ṍ',
453
- 'ṍ' => 'ṍ',
454
- 'Ṏ' => 'Ṏ',
455
- 'ṏ' => 'ṏ',
456
- 'Ṑ' => 'Ṑ',
457
- 'ṑ' => 'ṑ',
458
- 'Ṓ' => 'Ṓ',
459
- 'ṓ' => 'ṓ',
460
- 'Ṕ' => 'Ṕ',
461
- 'ṕ' => 'ṕ',
462
- 'Ṗ' => 'Ṗ',
463
- 'ṗ' => 'ṗ',
464
- 'Ṙ' => 'Ṙ',
465
- 'ṙ' => 'ṙ',
466
- 'Ṛ' => 'Ṛ',
467
- 'ṛ' => 'ṛ',
468
- 'Ṝ' => 'Ṝ',
469
- 'ṝ' => 'ṝ',
470
- 'Ṟ' => 'Ṟ',
471
- 'ṟ' => 'ṟ',
472
- 'Ṡ' => 'Ṡ',
473
- 'ṡ' => 'ṡ',
474
- 'Ṣ' => 'Ṣ',
475
- 'ṣ' => 'ṣ',
476
- 'Ṥ' => 'Ṥ',
477
- 'ṥ' => 'ṥ',
478
- 'Ṧ' => 'Ṧ',
479
- 'ṧ' => 'ṧ',
480
- 'Ṩ' => 'Ṩ',
481
- 'ṩ' => 'ṩ',
482
- 'Ṫ' => 'Ṫ',
483
- 'ṫ' => 'ṫ',
484
- 'Ṭ' => 'Ṭ',
485
- 'ṭ' => 'ṭ',
486
- 'Ṯ' => 'Ṯ',
487
- 'ṯ' => 'ṯ',
488
- 'Ṱ' => 'Ṱ',
489
- 'ṱ' => 'ṱ',
490
- 'Ṳ' => 'Ṳ',
491
- 'ṳ' => 'ṳ',
492
- 'Ṵ' => 'Ṵ',
493
- 'ṵ' => 'ṵ',
494
- 'Ṷ' => 'Ṷ',
495
- 'ṷ' => 'ṷ',
496
- 'Ṹ' => 'Ṹ',
497
- 'ṹ' => 'ṹ',
498
- 'Ṻ' => 'Ṻ',
499
- 'ṻ' => 'ṻ',
500
- 'Ṽ' => 'Ṽ',
501
- 'ṽ' => 'ṽ',
502
- 'Ṿ' => 'Ṿ',
503
- 'ṿ' => 'ṿ',
504
- 'Ẁ' => 'Ẁ',
505
- 'ẁ' => 'ẁ',
506
- 'Ẃ' => 'Ẃ',
507
- 'ẃ' => 'ẃ',
508
- 'Ẅ' => 'Ẅ',
509
- 'ẅ' => 'ẅ',
510
- 'Ẇ' => 'Ẇ',
511
- 'ẇ' => 'ẇ',
512
- 'Ẉ' => 'Ẉ',
513
- 'ẉ' => 'ẉ',
514
- 'Ẋ' => 'Ẋ',
515
- 'ẋ' => 'ẋ',
516
- 'Ẍ' => 'Ẍ',
517
- 'ẍ' => 'ẍ',
518
- 'Ẏ' => 'Ẏ',
519
- 'ẏ' => 'ẏ',
520
- 'Ẑ' => 'Ẑ',
521
- 'ẑ' => 'ẑ',
522
- 'Ẓ' => 'Ẓ',
523
- 'ẓ' => 'ẓ',
524
- 'Ẕ' => 'Ẕ',
525
- 'ẕ' => 'ẕ',
526
- 'ẖ' => 'ẖ',
527
- 'ẗ' => 'ẗ',
528
- 'ẘ' => 'ẘ',
529
- 'ẙ' => 'ẙ',
530
- 'ẛ' => 'ẛ',
531
- 'Ạ' => 'Ạ',
532
- 'ạ' => 'ạ',
533
- 'Ả' => 'Ả',
534
- 'ả' => 'ả',
535
- 'Ấ' => 'Ấ',
536
- 'ấ' => 'ấ',
537
- 'Ầ' => 'Ầ',
538
- 'ầ' => 'ầ',
539
- 'Ẩ' => 'Ẩ',
540
- 'ẩ' => 'ẩ',
541
- 'Ẫ' => 'Ẫ',
542
- 'ẫ' => 'ẫ',
543
- 'Ậ' => 'Ậ',
544
- 'ậ' => 'ậ',
545
- 'Ắ' => 'Ắ',
546
- 'ắ' => 'ắ',
547
- 'Ằ' => 'Ằ',
548
- 'ằ' => 'ằ',
549
- 'Ẳ' => 'Ẳ',
550
- 'ẳ' => 'ẳ',
551
- 'Ẵ' => 'Ẵ',
552
- 'ẵ' => 'ẵ',
553
- 'Ặ' => 'Ặ',
554
- 'ặ' => 'ặ',
555
- 'Ẹ' => 'Ẹ',
556
- 'ẹ' => 'ẹ',
557
- 'Ẻ' => 'Ẻ',
558
- 'ẻ' => 'ẻ',
559
- 'Ẽ' => 'Ẽ',
560
- 'ẽ' => 'ẽ',
561
- 'Ế' => 'Ế',
562
- 'ế' => 'ế',
563
- 'Ề' => 'Ề',
564
- 'ề' => 'ề',
565
- 'Ể' => 'Ể',
566
- 'ể' => 'ể',
567
- 'Ễ' => 'Ễ',
568
- 'ễ' => 'ễ',
569
- 'Ệ' => 'Ệ',
570
- 'ệ' => 'ệ',
571
- 'Ỉ' => 'Ỉ',
572
- 'ỉ' => 'ỉ',
573
- 'Ị' => 'Ị',
574
- 'ị' => 'ị',
575
- 'Ọ' => 'Ọ',
576
- 'ọ' => 'ọ',
577
- 'Ỏ' => 'Ỏ',
578
- 'ỏ' => 'ỏ',
579
- 'Ố' => 'Ố',
580
- 'ố' => 'ố',
581
- 'Ồ' => 'Ồ',
582
- 'ồ' => 'ồ',
583
- 'Ổ' => 'Ổ',
584
- 'ổ' => 'ổ',
585
- 'Ỗ' => 'Ỗ',
586
- 'ỗ' => 'ỗ',
587
- 'Ộ' => 'Ộ',
588
- 'ộ' => 'ộ',
589
- 'Ớ' => 'Ớ',
590
- 'ớ' => 'ớ',
591
- 'Ờ' => 'Ờ',
592
- 'ờ' => 'ờ',
593
- 'Ở' => 'Ở',
594
- 'ở' => 'ở',
595
- 'Ỡ' => 'Ỡ',
596
- 'ỡ' => 'ỡ',
597
- 'Ợ' => 'Ợ',
598
- 'ợ' => 'ợ',
599
- 'Ụ' => 'Ụ',
600
- 'ụ' => 'ụ',
601
- 'Ủ' => 'Ủ',
602
- 'ủ' => 'ủ',
603
- 'Ứ' => 'Ứ',
604
- 'ứ' => 'ứ',
605
- 'Ừ' => 'Ừ',
606
- 'ừ' => 'ừ',
607
- 'Ử' => 'Ử',
608
- 'ử' => 'ử',
609
- 'Ữ' => 'Ữ',
610
- 'ữ' => 'ữ',
611
- 'Ự' => 'Ự',
612
- 'ự' => 'ự',
613
- 'Ỳ' => 'Ỳ',
614
- 'ỳ' => 'ỳ',
615
- 'Ỵ' => 'Ỵ',
616
- 'ỵ' => 'ỵ',
617
- 'Ỷ' => 'Ỷ',
618
- 'ỷ' => 'ỷ',
619
- 'Ỹ' => 'Ỹ',
620
- 'ỹ' => 'ỹ',
621
- 'ἀ' => 'ἀ',
622
- 'ἁ' => 'ἁ',
623
- 'ἂ' => 'ἂ',
624
- 'ἃ' => 'ἃ',
625
- 'ἄ' => 'ἄ',
626
- 'ἅ' => 'ἅ',
627
- 'ἆ' => 'ἆ',
628
- 'ἇ' => 'ἇ',
629
- 'Ἀ' => 'Ἀ',
630
- 'Ἁ' => 'Ἁ',
631
- 'Ἂ' => 'Ἂ',
632
- 'Ἃ' => 'Ἃ',
633
- 'Ἄ' => 'Ἄ',
634
- 'Ἅ' => 'Ἅ',
635
- 'Ἆ' => 'Ἆ',
636
- 'Ἇ' => 'Ἇ',
637
- 'ἐ' => 'ἐ',
638
- 'ἑ' => 'ἑ',
639
- 'ἒ' => 'ἒ',
640
- 'ἓ' => 'ἓ',
641
- 'ἔ' => 'ἔ',
642
- 'ἕ' => 'ἕ',
643
- 'Ἐ' => 'Ἐ',
644
- 'Ἑ' => 'Ἑ',
645
- 'Ἒ' => 'Ἒ',
646
- 'Ἓ' => 'Ἓ',
647
- 'Ἔ' => 'Ἔ',
648
- 'Ἕ' => 'Ἕ',
649
- 'ἠ' => 'ἠ',
650
- 'ἡ' => 'ἡ',
651
- 'ἢ' => 'ἢ',
652
- 'ἣ' => 'ἣ',
653
- 'ἤ' => 'ἤ',
654
- 'ἥ' => 'ἥ',
655
- 'ἦ' => 'ἦ',
656
- 'ἧ' => 'ἧ',
657
- 'Ἠ' => 'Ἠ',
658
- 'Ἡ' => 'Ἡ',
659
- 'Ἢ' => 'Ἢ',
660
- 'Ἣ' => 'Ἣ',
661
- 'Ἤ' => 'Ἤ',
662
- 'Ἥ' => 'Ἥ',
663
- 'Ἦ' => 'Ἦ',
664
- 'Ἧ' => 'Ἧ',
665
- 'ἰ' => 'ἰ',
666
- 'ἱ' => 'ἱ',
667
- 'ἲ' => 'ἲ',
668
- 'ἳ' => 'ἳ',
669
- 'ἴ' => 'ἴ',
670
- 'ἵ' => 'ἵ',
671
- 'ἶ' => 'ἶ',
672
- 'ἷ' => 'ἷ',
673
- 'Ἰ' => 'Ἰ',
674
- 'Ἱ' => 'Ἱ',
675
- 'Ἲ' => 'Ἲ',
676
- 'Ἳ' => 'Ἳ',
677
- 'Ἴ' => 'Ἴ',
678
- 'Ἵ' => 'Ἵ',
679
- 'Ἶ' => 'Ἶ',
680
- 'Ἷ' => 'Ἷ',
681
- 'ὀ' => 'ὀ',
682
- 'ὁ' => 'ὁ',
683
- 'ὂ' => 'ὂ',
684
- 'ὃ' => 'ὃ',
685
- 'ὄ' => 'ὄ',
686
- 'ὅ' => 'ὅ',
687
- 'Ὀ' => 'Ὀ',
688
- 'Ὁ' => 'Ὁ',
689
- 'Ὂ' => 'Ὂ',
690
- 'Ὃ' => 'Ὃ',
691
- 'Ὄ' => 'Ὄ',
692
- 'Ὅ' => 'Ὅ',
693
- 'ὐ' => 'ὐ',
694
- 'ὑ' => 'ὑ',
695
- 'ὒ' => 'ὒ',
696
- 'ὓ' => 'ὓ',
697
- 'ὔ' => 'ὔ',
698
- 'ὕ' => 'ὕ',
699
- 'ὖ' => 'ὖ',
700
- 'ὗ' => 'ὗ',
701
- 'Ὑ' => 'Ὑ',
702
- 'Ὓ' => 'Ὓ',
703
- 'Ὕ' => 'Ὕ',
704
- 'Ὗ' => 'Ὗ',
705
- 'ὠ' => 'ὠ',
706
- 'ὡ' => 'ὡ',
707
- 'ὢ' => 'ὢ',
708
- 'ὣ' => 'ὣ',
709
- 'ὤ' => 'ὤ',
710
- 'ὥ' => 'ὥ',
711
- 'ὦ' => 'ὦ',
712
- 'ὧ' => 'ὧ',
713
- 'Ὠ' => 'Ὠ',
714
- 'Ὡ' => 'Ὡ',
715
- 'Ὢ' => 'Ὢ',
716
- 'Ὣ' => 'Ὣ',
717
- 'Ὤ' => 'Ὤ',
718
- 'Ὥ' => 'Ὥ',
719
- 'Ὦ' => 'Ὦ',
720
- 'Ὧ' => 'Ὧ',
721
- 'ὰ' => 'ὰ',
722
- 'ὲ' => 'ὲ',
723
- 'ὴ' => 'ὴ',
724
- 'ὶ' => 'ὶ',
725
- 'ὸ' => 'ὸ',
726
- 'ὺ' => 'ὺ',
727
- 'ὼ' => 'ὼ',
728
- 'ᾀ' => 'ᾀ',
729
- 'ᾁ' => 'ᾁ',
730
- 'ᾂ' => 'ᾂ',
731
- 'ᾃ' => 'ᾃ',
732
- 'ᾄ' => 'ᾄ',
733
- 'ᾅ' => 'ᾅ',
734
- 'ᾆ' => 'ᾆ',
735
- 'ᾇ' => 'ᾇ',
736
- 'ᾈ' => 'ᾈ',
737
- 'ᾉ' => 'ᾉ',
738
- 'ᾊ' => 'ᾊ',
739
- 'ᾋ' => 'ᾋ',
740
- 'ᾌ' => 'ᾌ',
741
- 'ᾍ' => 'ᾍ',
742
- 'ᾎ' => 'ᾎ',
743
- 'ᾏ' => 'ᾏ',
744
- 'ᾐ' => 'ᾐ',
745
- 'ᾑ' => 'ᾑ',
746
- 'ᾒ' => 'ᾒ',
747
- 'ᾓ' => 'ᾓ',
748
- 'ᾔ' => 'ᾔ',
749
- 'ᾕ' => 'ᾕ',
750
- 'ᾖ' => 'ᾖ',
751
- 'ᾗ' => 'ᾗ',
752
- 'ᾘ' => 'ᾘ',
753
- 'ᾙ' => 'ᾙ',
754
- 'ᾚ' => 'ᾚ',
755
- 'ᾛ' => 'ᾛ',
756
- 'ᾜ' => 'ᾜ',
757
- 'ᾝ' => 'ᾝ',
758
- 'ᾞ' => 'ᾞ',
759
- 'ᾟ' => 'ᾟ',
760
- 'ᾠ' => 'ᾠ',
761
- 'ᾡ' => 'ᾡ',
762
- 'ᾢ' => 'ᾢ',
763
- 'ᾣ' => 'ᾣ',
764
- 'ᾤ' => 'ᾤ',
765
- 'ᾥ' => 'ᾥ',
766
- 'ᾦ' => 'ᾦ',
767
- 'ᾧ' => 'ᾧ',
768
- 'ᾨ' => 'ᾨ',
769
- 'ᾩ' => 'ᾩ',
770
- 'ᾪ' => 'ᾪ',
771
- 'ᾫ' => 'ᾫ',
772
- 'ᾬ' => 'ᾬ',
773
- 'ᾭ' => 'ᾭ',
774
- 'ᾮ' => 'ᾮ',
775
- 'ᾯ' => 'ᾯ',
776
- 'ᾰ' => 'ᾰ',
777
- 'ᾱ' => 'ᾱ',
778
- 'ᾲ' => 'ᾲ',
779
- 'ᾳ' => 'ᾳ',
780
- 'ᾴ' => 'ᾴ',
781
- 'ᾶ' => 'ᾶ',
782
- 'ᾷ' => 'ᾷ',
783
- 'Ᾰ' => 'Ᾰ',
784
- 'Ᾱ' => 'Ᾱ',
785
- 'Ὰ' => 'Ὰ',
786
- 'ᾼ' => 'ᾼ',
787
- '῁' => '῁',
788
- 'ῂ' => 'ῂ',
789
- 'ῃ' => 'ῃ',
790
- 'ῄ' => 'ῄ',
791
- 'ῆ' => 'ῆ',
792
- 'ῇ' => 'ῇ',
793
- 'Ὲ' => 'Ὲ',
794
- 'Ὴ' => 'Ὴ',
795
- 'ῌ' => 'ῌ',
796
- '῍' => '῍',
797
- '῎' => '῎',
798
- '῏' => '῏',
799
- 'ῐ' => 'ῐ',
800
- 'ῑ' => 'ῑ',
801
- 'ῒ' => 'ῒ',
802
- 'ῖ' => 'ῖ',
803
- 'ῗ' => 'ῗ',
804
- 'Ῐ' => 'Ῐ',
805
- 'Ῑ' => 'Ῑ',
806
- 'Ὶ' => 'Ὶ',
807
- '῝' => '῝',
808
- '῞' => '῞',
809
- '῟' => '῟',
810
- 'ῠ' => 'ῠ',
811
- 'ῡ' => 'ῡ',
812
- 'ῢ' => 'ῢ',
813
- 'ῤ' => 'ῤ',
814
- 'ῥ' => 'ῥ',
815
- 'ῦ' => 'ῦ',
816
- 'ῧ' => 'ῧ',
817
- 'Ῠ' => 'Ῠ',
818
- 'Ῡ' => 'Ῡ',
819
- 'Ὺ' => 'Ὺ',
820
- 'Ῥ' => 'Ῥ',
821
- '῭' => '῭',
822
- 'ῲ' => 'ῲ',
823
- 'ῳ' => 'ῳ',
824
- 'ῴ' => 'ῴ',
825
- 'ῶ' => 'ῶ',
826
- 'ῷ' => 'ῷ',
827
- 'Ὸ' => 'Ὸ',
828
- 'Ὼ' => 'Ὼ',
829
- 'ῼ' => 'ῼ',
830
- '↚' => '↚',
831
- '↛' => '↛',
832
- '↮' => '↮',
833
- '⇍' => '⇍',
834
- '⇎' => '⇎',
835
- '⇏' => '⇏',
836
- '∄' => '∄',
837
- '∉' => '∉',
838
- '∌' => '∌',
839
- '∤' => '∤',
840
- '∦' => '∦',
841
- '≁' => '≁',
842
- '≄' => '≄',
843
- '≇' => '≇',
844
- '≉' => '≉',
845
- '≠' => '≠',
846
- '≢' => '≢',
847
- '≭' => '≭',
848
- '≮' => '≮',
849
- '≯' => '≯',
850
- '≰' => '≰',
851
- '≱' => '≱',
852
- '≴' => '≴',
853
- '≵' => '≵',
854
- '≸' => '≸',
855
- '≹' => '≹',
856
- '⊀' => '⊀',
857
- '⊁' => '⊁',
858
- '⊄' => '⊄',
859
- '⊅' => '⊅',
860
- '⊈' => '⊈',
861
- '⊉' => '⊉',
862
- '⊬' => '⊬',
863
- '⊭' => '⊭',
864
- '⊮' => '⊮',
865
- '⊯' => '⊯',
866
- '⋠' => '⋠',
867
- '⋡' => '⋡',
868
- '⋢' => '⋢',
869
- '⋣' => '⋣',
870
- '⋪' => '⋪',
871
- '⋫' => '⋫',
872
- '⋬' => '⋬',
873
- '⋭' => '⋭',
874
- 'が' => 'が',
875
- 'ぎ' => 'ぎ',
876
- 'ぐ' => 'ぐ',
877
- 'げ' => 'げ',
878
- 'ご' => 'ご',
879
- 'ざ' => 'ざ',
880
- 'じ' => 'じ',
881
- 'ず' => 'ず',
882
- 'ぜ' => 'ぜ',
883
- 'ぞ' => 'ぞ',
884
- 'だ' => 'だ',
885
- 'ぢ' => 'ぢ',
886
- 'づ' => 'づ',
887
- 'で' => 'で',
888
- 'ど' => 'ど',
889
- 'ば' => 'ば',
890
- 'ぱ' => 'ぱ',
891
- 'び' => 'び',
892
- 'ぴ' => 'ぴ',
893
- 'ぶ' => 'ぶ',
894
- 'ぷ' => 'ぷ',
895
- 'べ' => 'べ',
896
- 'ぺ' => 'ぺ',
897
- 'ぼ' => 'ぼ',
898
- 'ぽ' => 'ぽ',
899
- 'ゔ' => 'ゔ',
900
- 'ゞ' => 'ゞ',
901
- 'ガ' => 'ガ',
902
- 'ギ' => 'ギ',
903
- 'グ' => 'グ',
904
- 'ゲ' => 'ゲ',
905
- 'ゴ' => 'ゴ',
906
- 'ザ' => 'ザ',
907
- 'ジ' => 'ジ',
908
- 'ズ' => 'ズ',
909
- 'ゼ' => 'ゼ',
910
- 'ゾ' => 'ゾ',
911
- 'ダ' => 'ダ',
912
- 'ヂ' => 'ヂ',
913
- 'ヅ' => 'ヅ',
914
- 'デ' => 'デ',
915
- 'ド' => 'ド',
916
- 'バ' => 'バ',
917
- 'パ' => 'パ',
918
- 'ビ' => 'ビ',
919
- 'ピ' => 'ピ',
920
- 'ブ' => 'ブ',
921
- 'プ' => 'プ',
922
- 'ベ' => 'ベ',
923
- 'ペ' => 'ペ',
924
- 'ボ' => 'ボ',
925
- 'ポ' => 'ポ',
926
- 'ヴ' => 'ヴ',
927
- 'ヷ' => 'ヷ',
928
- 'ヸ' => 'ヸ',
929
- 'ヹ' => 'ヹ',
930
- 'ヺ' => 'ヺ',
931
- 'ヾ' => 'ヾ',
932
- '𑂚' => '𑂚',
933
- '𑂜' => '𑂜',
934
- '𑂫' => '𑂫',
935
- '𑄮' => '𑄮',
936
- '𑄯' => '𑄯',
937
- '𑍋' => '𑍋',
938
- '𑍌' => '𑍌',
939
- '𑒻' => '𑒻',
940
- '𑒼' => '𑒼',
941
- '𑒾' => '𑒾',
942
- '𑖺' => '𑖺',
943
- '𑖻' => '𑖻',
944
- '𑤸' => '𑤸',
945
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Resources/unidata/canonicalDecomposition.php DELETED
@@ -1,2065 +0,0 @@
1
- <?php
2
-
3
- return array (
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
- 'á' => 'á',
32
- 'â' => 'â',
33
- 'ã' => 'ã',
34
- 'ä' => 'ä',
35
- 'å' => 'å',
36
- 'ç' => 'ç',
37
- 'è' => 'è',
38
- 'é' => 'é',
39
- 'ê' => 'ê',
40
- 'ë' => 'ë',
41
- 'ì' => 'ì',
42
- 'í' => 'í',
43
- 'î' => 'î',
44
- 'ï' => 'ï',
45
- 'ñ' => 'ñ',
46
- 'ò' => 'ò',
47
- 'ó' => 'ó',
48
- 'ô' => 'ô',
49
- 'õ' => 'õ',
50
- 'ö' => 'ö',
51
- 'ù' => 'ù',
52
- 'ú' => 'ú',
53
- 'û' => 'û',
54
- 'ü' => 'ü',
55
- 'ý' => 'ý',
56
- 'ÿ' => 'ÿ',
57
- 'Ā' => 'Ā',
58
- 'ā' => 'ā',
59
- 'Ă' => 'Ă',
60
- 'ă' => 'ă',
61
- 'Ą' => 'Ą',
62
- 'ą' => 'ą',
63
- 'Ć' => 'Ć',
64
- 'ć' => 'ć',
65
- 'Ĉ' => 'Ĉ',
66
- 'ĉ' => 'ĉ',
67
- 'Ċ' => 'Ċ',
68
- 'ċ' => 'ċ',
69
- 'Č' => 'Č',
70
- 'č' => 'č',
71
- 'Ď' => 'Ď',
72
- 'ď' => 'ď',
73
- 'Ē' => 'Ē',
74
- 'ē' => 'ē',
75
- 'Ĕ' => 'Ĕ',
76
- 'ĕ' => 'ĕ',
77
- 'Ė' => 'Ė',
78
- 'ė' => 'ė',
79
- 'Ę' => 'Ę',
80
- 'ę' => 'ę',
81
- 'Ě' => 'Ě',
82
- 'ě' => 'ě',
83
- 'Ĝ' => 'Ĝ',
84
- 'ĝ' => 'ĝ',
85
- 'Ğ' => 'Ğ',
86
- 'ğ' => 'ğ',
87
- 'Ġ' => 'Ġ',
88
- 'ġ' => 'ġ',
89
- 'Ģ' => 'Ģ',
90
- 'ģ' => 'ģ',
91
- 'Ĥ' => 'Ĥ',
92
- 'ĥ' => 'ĥ',
93
- 'Ĩ' => 'Ĩ',
94
- 'ĩ' => 'ĩ',
95
- 'Ī' => 'Ī',
96
- 'ī' => 'ī',
97
- 'Ĭ' => 'Ĭ',
98
- 'ĭ' => 'ĭ',
99
- 'Į' => 'Į',
100
- 'į' => 'į',
101
- 'İ' => 'İ',
102
- 'Ĵ' => 'Ĵ',
103
- 'ĵ' => 'ĵ',
104
- 'Ķ' => 'Ķ',
105
- 'ķ' => 'ķ',
106
- 'Ĺ' => 'Ĺ',
107
- 'ĺ' => 'ĺ',
108
- 'Ļ' => 'Ļ',
109
- 'ļ' => 'ļ',
110
- 'Ľ' => 'Ľ',
111
- 'ľ' => 'ľ',
112
- 'Ń' => 'Ń',
113
- 'ń' => 'ń',
114
- 'Ņ' => 'Ņ',
115
- 'ņ' => 'ņ',
116
- 'Ň' => 'Ň',
117
- 'ň' => 'ň',
118
- 'Ō' => 'Ō',
119
- 'ō' => 'ō',
120
- 'Ŏ' => 'Ŏ',
121
- 'ŏ' => 'ŏ',
122
- 'Ő' => 'Ő',
123
- 'ő' => 'ő',
124
- 'Ŕ' => 'Ŕ',
125
- 'ŕ' => 'ŕ',
126
- 'Ŗ' => 'Ŗ',
127
- 'ŗ' => 'ŗ',
128
- 'Ř' => 'Ř',
129
- 'ř' => 'ř',
130
- 'Ś' => 'Ś',
131
- 'ś' => 'ś',
132
- 'Ŝ' => 'Ŝ',
133
- 'ŝ' => 'ŝ',
134
- 'Ş' => 'Ş',
135
- 'ş' => 'ş',
136
- 'Š' => 'Š',
137
- 'š' => 'š',
138
- 'Ţ' => 'Ţ',
139
- 'ţ' => 'ţ',
140
- 'Ť' => 'Ť',
141
- 'ť' => 'ť',
142
- 'Ũ' => 'Ũ',
143
- 'ũ' => 'ũ',
144
- 'Ū' => 'Ū',
145
- 'ū' => 'ū',
146
- 'Ŭ' => 'Ŭ',
147
- 'ŭ' => 'ŭ',
148
- 'Ů' => 'Ů',
149
- 'ů' => 'ů',
150
- 'Ű' => 'Ű',
151
- 'ű' => 'ű',
152
- 'Ų' => 'Ų',
153
- 'ų' => 'ų',
154
- 'Ŵ' => 'Ŵ',
155
- 'ŵ' => 'ŵ',
156
- 'Ŷ' => 'Ŷ',
157
- 'ŷ' => 'ŷ',
158
- 'Ÿ' => 'Ÿ',
159
- 'Ź' => 'Ź',
160
- 'ź' => 'ź',
161
- 'Ż' => 'Ż',
162
- 'ż' => 'ż',
163
- 'Ž' => 'Ž',
164
- 'ž' => 'ž',
165
- 'Ơ' => 'Ơ',
166
- 'ơ' => 'ơ',
167
- 'Ư' => 'Ư',
168
- 'ư' => 'ư',
169
- 'Ǎ' => 'Ǎ',
170
- 'ǎ' => 'ǎ',
171
- 'Ǐ' => 'Ǐ',
172
- 'ǐ' => 'ǐ',
173
- 'Ǒ' => 'Ǒ',
174
- 'ǒ' => 'ǒ',
175
- 'Ǔ' => 'Ǔ',
176
- 'ǔ' => 'ǔ',
177
- 'Ǖ' => 'Ǖ',
178
- 'ǖ' => 'ǖ',
179
- 'Ǘ' => 'Ǘ',
180
- 'ǘ' => 'ǘ',
181
- 'Ǚ' => 'Ǚ',
182
- 'ǚ' => 'ǚ',
183
- 'Ǜ' => 'Ǜ',
184
- 'ǜ' => 'ǜ',
185
- 'Ǟ' => 'Ǟ',
186
- 'ǟ' => 'ǟ',
187
- 'Ǡ' => 'Ǡ',
188
- 'ǡ' => 'ǡ',
189
- 'Ǣ' => 'Ǣ',
190
- 'ǣ' => 'ǣ',
191
- 'Ǧ' => 'Ǧ',
192
- 'ǧ' => 'ǧ',
193
- 'Ǩ' => 'Ǩ',
194
- 'ǩ' => 'ǩ',
195
- 'Ǫ' => 'Ǫ',
196
- 'ǫ' => 'ǫ',
197
- 'Ǭ' => 'Ǭ',
198
- 'ǭ' => 'ǭ',
199
- 'Ǯ' => 'Ǯ',
200
- 'ǯ' => 'ǯ',
201
- 'ǰ' => 'ǰ',
202
- 'Ǵ' => 'Ǵ',
203
- 'ǵ' => 'ǵ',
204
- 'Ǹ' => 'Ǹ',
205
- 'ǹ' => 'ǹ',
206
- 'Ǻ' => 'Ǻ',
207
- 'ǻ' => 'ǻ',
208
- 'Ǽ' => 'Ǽ',
209
- 'ǽ' => 'ǽ',
210
- 'Ǿ' => 'Ǿ',
211
- 'ǿ' => 'ǿ',
212
- 'Ȁ' => 'Ȁ',
213
- 'ȁ' => 'ȁ',
214
- 'Ȃ' => 'Ȃ',
215
- 'ȃ' => 'ȃ',
216
- 'Ȅ' => 'Ȅ',
217
- 'ȅ' => 'ȅ',
218
- 'Ȇ' => 'Ȇ',
219
- 'ȇ' => 'ȇ',
220
- 'Ȉ' => 'Ȉ',
221
- 'ȉ' => 'ȉ',
222
- 'Ȋ' => 'Ȋ',
223
- 'ȋ' => 'ȋ',
224
- 'Ȍ' => 'Ȍ',
225
- 'ȍ' => 'ȍ',
226
- 'Ȏ' => 'Ȏ',
227
- 'ȏ' => 'ȏ',
228
- 'Ȑ' => 'Ȑ',
229
- 'ȑ' => 'ȑ',
230
- 'Ȓ' => 'Ȓ',
231
- 'ȓ' => 'ȓ',
232
- 'Ȕ' => 'Ȕ',
233
- 'ȕ' => 'ȕ',
234
- 'Ȗ' => 'Ȗ',
235
- 'ȗ' => 'ȗ',
236
- 'Ș' => 'Ș',
237
- 'ș' => 'ș',
238
- 'Ț' => 'Ț',
239
- 'ț' => 'ț',
240
- 'Ȟ' => 'Ȟ',
241
- 'ȟ' => 'ȟ',
242
- 'Ȧ' => 'Ȧ',
243
- 'ȧ' => 'ȧ',
244
- 'Ȩ' => 'Ȩ',
245
- 'ȩ' => 'ȩ',
246
- 'Ȫ' => 'Ȫ',
247
- 'ȫ' => 'ȫ',
248
- 'Ȭ' => 'Ȭ',
249
- 'ȭ' => 'ȭ',
250
- 'Ȯ' => 'Ȯ',
251
- 'ȯ' => 'ȯ',
252
- 'Ȱ' => 'Ȱ',
253
- 'ȱ' => 'ȱ',
254
- 'Ȳ' => 'Ȳ',
255
- 'ȳ' => 'ȳ',
256
- '̀' => '̀',
257
- '́' => '́',
258
- '̓' => '̓',
259
- '̈́' => '̈́',
260
- 'ʹ' => 'ʹ',
261
- ';' => ';',
262
- '΅' => '΅',
263
- 'Ά' => 'Ά',
264
- '·' => '·',
265
- 'Έ' => 'Έ',
266
- 'Ή' => 'Ή',
267
- 'Ί' => 'Ί',
268
- 'Ό' => 'Ό',
269
- 'Ύ' => 'Ύ',
270
- 'Ώ' => 'Ώ',
271
- 'ΐ' => 'ΐ',
272
- 'Ϊ' => 'Ϊ',
273
- 'Ϋ' => 'Ϋ',
274
- 'ά' => 'ά',
275
- 'έ' => 'έ',
276
- 'ή' => 'ή',
277
- 'ί' => 'ί',
278
- 'ΰ' => 'ΰ',
279
- 'ϊ' => 'ϊ',
280
- 'ϋ' => 'ϋ',
281
- 'ό' => 'ό',
282
- 'ύ' => 'ύ',
283
- 'ώ' => 'ώ',
284
- 'ϓ' => 'ϓ',
285
- 'ϔ' => 'ϔ',
286
- 'Ѐ' => 'Ѐ',
287
- 'Ё' => 'Ё',
288
- 'Ѓ' => 'Ѓ',
289
- 'Ї' => 'Ї',
290
- 'Ќ' => 'Ќ',
291
- 'Ѝ' => 'Ѝ',
292
- 'Ў' => 'Ў',
293
- 'Й' => 'Й',
294
- 'й' => 'й',
295
- 'ѐ' => 'ѐ',
296
- 'ё' => 'ё',
297
- 'ѓ' => 'ѓ',
298
- 'ї' => 'ї',
299
- 'ќ' => 'ќ',
300
- 'ѝ' => 'ѝ',
301
- 'ў' => 'ў',
302
- 'Ѷ' => 'Ѷ',
303
- 'ѷ' => 'ѷ',
304
- 'Ӂ' => 'Ӂ',
305
- 'ӂ' => 'ӂ',
306
- 'Ӑ' => 'Ӑ',
307
- 'ӑ' => 'ӑ',
308
- 'Ӓ' => 'Ӓ',
309
- 'ӓ' => 'ӓ',
310
- 'Ӗ' => 'Ӗ',
311
- 'ӗ' => 'ӗ',
312
- 'Ӛ' => 'Ӛ',
313
- 'ӛ' => 'ӛ',
314
- 'Ӝ' => 'Ӝ',
315
- 'ӝ' => 'ӝ',
316
- 'Ӟ' => 'Ӟ',
317
- 'ӟ' => 'ӟ',
318
- 'Ӣ' => 'Ӣ',
319
- 'ӣ' => 'ӣ',
320
- 'Ӥ' => 'Ӥ',
321
- 'ӥ' => 'ӥ',
322
- 'Ӧ' => 'Ӧ',
323
- 'ӧ' => 'ӧ',
324
- 'Ӫ' => 'Ӫ',
325
- 'ӫ' => 'ӫ',
326
- 'Ӭ' => 'Ӭ',
327
- 'ӭ' => 'ӭ',
328
- 'Ӯ' => 'Ӯ',
329
- 'ӯ' => 'ӯ',
330
- 'Ӱ' => 'Ӱ',
331
- 'ӱ' => 'ӱ',
332
- 'Ӳ' => 'Ӳ',
333
- 'ӳ' => 'ӳ',
334
- 'Ӵ' => 'Ӵ',
335
- 'ӵ' => 'ӵ',
336
- 'Ӹ' => 'Ӹ',
337
- 'ӹ' => 'ӹ',
338
- 'آ' => 'آ',
339
- 'أ' => 'أ',
340
- 'ؤ' => 'ؤ',
341
- 'إ' => 'إ',
342
- 'ئ' => 'ئ',
343
- 'ۀ' => 'ۀ',
344
- 'ۂ' => 'ۂ',
345
- 'ۓ' => 'ۓ',
346
- 'ऩ' => 'ऩ',
347
- 'ऱ' => 'ऱ',
348
- 'ऴ' => 'ऴ',
349
- 'क़' => 'क़',
350
- 'ख़' => 'ख़',
351
- 'ग़' => 'ग़',
352
- 'ज़' => 'ज़',
353
- 'ड़' => 'ड़',
354
- 'ढ़' => 'ढ़',
355
- 'फ़' => 'फ़',
356
- 'य़' => 'य़',
357
- 'ো' => 'ো',
358
- 'ৌ' => 'ৌ',
359
- 'ড়' => 'ড়',
360
- 'ঢ়' => 'ঢ়',
361
- 'য়' => 'য়',
362
- 'ਲ਼' => 'ਲ਼',
363
- 'ਸ਼' => 'ਸ਼',
364
- 'ਖ਼' => 'ਖ਼',
365
- 'ਗ਼' => 'ਗ਼',
366
- 'ਜ਼' => 'ਜ਼',
367
- 'ਫ਼' => 'ਫ਼',
368
- 'ୈ' => 'ୈ',
369
- 'ୋ' => 'ୋ',
370
- 'ୌ' => 'ୌ',
371
- 'ଡ଼' => 'ଡ଼',
372
- 'ଢ଼' => 'ଢ଼',
373
- 'ஔ' => 'ஔ',
374
- 'ொ' => 'ொ',
375
- 'ோ' => 'ோ',
376
- 'ௌ' => 'ௌ',
377
- 'ై' => 'ై',
378
- 'ೀ' => 'ೀ',
379
- 'ೇ' => 'ೇ',
380
- 'ೈ' => 'ೈ',
381
- 'ೊ' => 'ೊ',
382
- 'ೋ' => 'ೋ',
383
- 'ൊ' => 'ൊ',
384
- 'ോ' => 'ോ',
385
- 'ൌ' => 'ൌ',
386
- 'ේ' => 'ේ',
387
- 'ො' => 'ො',
388
- 'ෝ' => 'ෝ',
389
- 'ෞ' => 'ෞ',
390
- 'གྷ' => 'གྷ',
391
- 'ཌྷ' => 'ཌྷ',
392
- 'དྷ' => 'དྷ',
393
- 'བྷ' => 'བྷ',
394
- 'ཛྷ' => 'ཛྷ',
395
- 'ཀྵ' => 'ཀྵ',
396
- 'ཱི' => 'ཱི',
397
- 'ཱུ' => 'ཱུ',
398
- 'ྲྀ' => 'ྲྀ',
399
- 'ླྀ' => 'ླྀ',
400
- 'ཱྀ' => 'ཱྀ',
401
- 'ྒྷ' => 'ྒྷ',
402
- 'ྜྷ' => 'ྜྷ',
403
- 'ྡྷ' => 'ྡྷ',
404
- 'ྦྷ' => 'ྦྷ',
405
- 'ྫྷ' => 'ྫྷ',
406
- 'ྐྵ' => 'ྐྵ',
407
- 'ဦ' => 'ဦ',
408
- 'ᬆ' => 'ᬆ',
409
- 'ᬈ' => 'ᬈ',
410
- 'ᬊ' => 'ᬊ',
411
- 'ᬌ' => 'ᬌ',
412
- 'ᬎ' => 'ᬎ',
413
- 'ᬒ' => 'ᬒ',
414
- 'ᬻ' => 'ᬻ',
415
- 'ᬽ' => 'ᬽ',
416
- 'ᭀ' => 'ᭀ',
417
- 'ᭁ' => 'ᭁ',
418
- 'ᭃ' => 'ᭃ',
419
- 'Ḁ' => 'Ḁ',
420
- 'ḁ' => 'ḁ',
421
- 'Ḃ' => 'Ḃ',
422
- 'ḃ' => 'ḃ',
423
- 'Ḅ' => 'Ḅ',
424
- 'ḅ' => 'ḅ',
425
- 'Ḇ' => 'Ḇ',
426
- 'ḇ' => 'ḇ',
427
- 'Ḉ' => 'Ḉ',
428
- 'ḉ' => 'ḉ',
429
- 'Ḋ' => 'Ḋ',
430
- 'ḋ' => 'ḋ',
431
- 'Ḍ' => 'Ḍ',
432
- 'ḍ' => 'ḍ',
433
- 'Ḏ' => 'Ḏ',
434
- 'ḏ' => 'ḏ',
435
- 'Ḑ' => 'Ḑ',
436
- 'ḑ' => 'ḑ',
437
- 'Ḓ' => 'Ḓ',
438
- 'ḓ' => 'ḓ',
439
- 'Ḕ' => 'Ḕ',
440
- 'ḕ' => 'ḕ',
441
- 'Ḗ' => 'Ḗ',
442
- 'ḗ' => 'ḗ',
443
- 'Ḙ' => 'Ḙ',
444
- 'ḙ' => 'ḙ',
445
- 'Ḛ' => 'Ḛ',
446
- 'ḛ' => 'ḛ',
447
- 'Ḝ' => 'Ḝ',
448
- 'ḝ' => 'ḝ',
449
- 'Ḟ' => 'Ḟ',
450
- 'ḟ' => 'ḟ',
451
- 'Ḡ' => 'Ḡ',
452
- 'ḡ' => 'ḡ',
453
- 'Ḣ' => 'Ḣ',
454
- 'ḣ' => 'ḣ',
455
- 'Ḥ' => 'Ḥ',
456
- 'ḥ' => 'ḥ',
457
- 'Ḧ' => 'Ḧ',
458
- 'ḧ' => 'ḧ',
459
- 'Ḩ' => 'Ḩ',
460
- 'ḩ' => 'ḩ',
461
- 'Ḫ' => 'Ḫ',
462
- 'ḫ' => 'ḫ',
463
- 'Ḭ' => 'Ḭ',
464
- 'ḭ' => 'ḭ',
465
- 'Ḯ' => 'Ḯ',
466
- 'ḯ' => 'ḯ',
467
- 'Ḱ' => 'Ḱ',
468
- 'ḱ' => 'ḱ',
469
- 'Ḳ' => 'Ḳ',
470
- 'ḳ' => 'ḳ',
471
- 'Ḵ' => 'Ḵ',
472
- 'ḵ' => 'ḵ',
473
- 'Ḷ' => 'Ḷ',
474
- 'ḷ' => 'ḷ',
475
- 'Ḹ' => 'Ḹ',
476
- 'ḹ' => 'ḹ',
477
- 'Ḻ' => 'Ḻ',
478
- 'ḻ' => 'ḻ',
479
- 'Ḽ' => 'Ḽ',
480
- 'ḽ' => 'ḽ',
481
- 'Ḿ' => 'Ḿ',
482
- 'ḿ' => 'ḿ',
483
- 'Ṁ' => 'Ṁ',
484
- 'ṁ' => 'ṁ',
485
- 'Ṃ' => 'Ṃ',
486
- 'ṃ' => 'ṃ',
487
- 'Ṅ' => 'Ṅ',
488
- 'ṅ' => 'ṅ',
489
- 'Ṇ' => 'Ṇ',
490
- 'ṇ' => 'ṇ',
491
- 'Ṉ' => 'Ṉ',
492
- 'ṉ' => 'ṉ',
493
- 'Ṋ' => 'Ṋ',
494
- 'ṋ' => 'ṋ',
495
- 'Ṍ' => 'Ṍ',
496
- 'ṍ' => 'ṍ',
497
- 'Ṏ' => 'Ṏ',
498
- 'ṏ' => 'ṏ',
499
- 'Ṑ' => 'Ṑ',
500
- 'ṑ' => 'ṑ',
501
- 'Ṓ' => 'Ṓ',
502
- 'ṓ' => 'ṓ',
503
- 'Ṕ' => 'Ṕ',
504
- 'ṕ' => 'ṕ',
505
- 'Ṗ' => 'Ṗ',
506
- 'ṗ' => 'ṗ',
507
- 'Ṙ' => 'Ṙ',
508
- 'ṙ' => 'ṙ',
509
- 'Ṛ' => 'Ṛ',
510
- 'ṛ' => 'ṛ',
511
- 'Ṝ' => 'Ṝ',
512
- 'ṝ' => 'ṝ',
513
- 'Ṟ' => 'Ṟ',
514
- 'ṟ' => 'ṟ',
515
- 'Ṡ' => 'Ṡ',
516
- 'ṡ' => 'ṡ',
517
- 'Ṣ' => 'Ṣ',
518
- 'ṣ' => 'ṣ',
519
- 'Ṥ' => 'Ṥ',
520
- 'ṥ' => 'ṥ',
521
- 'Ṧ' => 'Ṧ',
522
- 'ṧ' => 'ṧ',
523
- 'Ṩ' => 'Ṩ',
524
- 'ṩ' => 'ṩ',
525
- 'Ṫ' => 'Ṫ',
526
- 'ṫ' => 'ṫ',
527
- 'Ṭ' => 'Ṭ',
528
- 'ṭ' => 'ṭ',
529
- 'Ṯ' => 'Ṯ',
530
- 'ṯ' => 'ṯ',
531
- 'Ṱ' => 'Ṱ',
532
- 'ṱ' => 'ṱ',
533
- 'Ṳ' => 'Ṳ',
534
- 'ṳ' => 'ṳ',
535
- 'Ṵ' => 'Ṵ',
536
- 'ṵ' => 'ṵ',
537
- 'Ṷ' => 'Ṷ',
538
- 'ṷ' => 'ṷ',
539
- 'Ṹ' => 'Ṹ',
540
- 'ṹ' => 'ṹ',
541
- 'Ṻ' => 'Ṻ',
542
- 'ṻ' => 'ṻ',
543
- 'Ṽ' => 'Ṽ',
544
- 'ṽ' => 'ṽ',
545
- 'Ṿ' => 'Ṿ',
546
- 'ṿ' => 'ṿ',
547
- 'Ẁ' => 'Ẁ',
548
- 'ẁ' => 'ẁ',
549
- 'Ẃ' => 'Ẃ',
550
- 'ẃ' => 'ẃ',
551
- 'Ẅ' => 'Ẅ',
552
- 'ẅ' => 'ẅ',
553
- 'Ẇ' => 'Ẇ',
554
- 'ẇ' => 'ẇ',
555
- 'Ẉ' => 'Ẉ',
556
- 'ẉ' => 'ẉ',
557
- 'Ẋ' => 'Ẋ',
558
- 'ẋ' => 'ẋ',
559
- 'Ẍ' => 'Ẍ',
560
- 'ẍ' => 'ẍ',
561
- 'Ẏ' => 'Ẏ',
562
- 'ẏ' => 'ẏ',
563
- 'Ẑ' => 'Ẑ',
564
- 'ẑ' => 'ẑ',
565
- 'Ẓ' => 'Ẓ',
566
- 'ẓ' => 'ẓ',
567
- 'Ẕ' => 'Ẕ',
568
- 'ẕ' => 'ẕ',
569
- 'ẖ' => 'ẖ',
570
- 'ẗ' => 'ẗ',
571
- 'ẘ' => 'ẘ',
572
- 'ẙ' => 'ẙ',
573
- 'ẛ' => 'ẛ',
574
- 'Ạ' => 'Ạ',
575
- 'ạ' => 'ạ',
576
- 'Ả' => 'Ả',
577
- 'ả' => 'ả',
578
- 'Ấ' => 'Ấ',
579
- 'ấ' => 'ấ',
580
- 'Ầ' => 'Ầ',
581
- 'ầ' => 'ầ',
582
- 'Ẩ' => 'Ẩ',
583
- 'ẩ' => 'ẩ',
584
- 'Ẫ' => 'Ẫ',
585
- 'ẫ' => 'ẫ',
586
- 'Ậ' => 'Ậ',
587
- 'ậ' => 'ậ',
588
- 'Ắ' => 'Ắ',
589
- 'ắ' => 'ắ',
590
- 'Ằ' => 'Ằ',
591
- 'ằ' => 'ằ',
592
- 'Ẳ' => 'Ẳ',
593
- 'ẳ' => 'ẳ',
594
- 'Ẵ' => 'Ẵ',
595
- 'ẵ' => 'ẵ',
596
- 'Ặ' => 'Ặ',
597
- 'ặ' => 'ặ',
598
- 'Ẹ' => 'Ẹ',
599
- 'ẹ' => 'ẹ',
600
- 'Ẻ' => 'Ẻ',
601
- 'ẻ' => 'ẻ',
602
- 'Ẽ' => 'Ẽ',
603
- 'ẽ' => 'ẽ',
604
- 'Ế' => 'Ế',
605
- 'ế' => 'ế',
606
- 'Ề' => 'Ề',
607
- 'ề' => 'ề',
608
- 'Ể' => 'Ể',
609
- 'ể' => 'ể',
610
- 'Ễ' => 'Ễ',
611
- 'ễ' => 'ễ',
612
- 'Ệ' => 'Ệ',
613
- 'ệ' => 'ệ',
614
- 'Ỉ' => 'Ỉ',
615
- 'ỉ' => 'ỉ',
616
- 'Ị' => 'Ị',
617
- 'ị' => 'ị',
618
- 'Ọ' => 'Ọ',
619
- 'ọ' => 'ọ',
620
- 'Ỏ' => 'Ỏ',
621
- 'ỏ' => 'ỏ',
622
- 'Ố' => 'Ố',
623
- 'ố' => 'ố',
624
- 'Ồ' => 'Ồ',
625
- 'ồ' => 'ồ',
626
- 'Ổ' => 'Ổ',
627
- 'ổ' => 'ổ',
628
- 'Ỗ' => 'Ỗ',
629
- 'ỗ' => 'ỗ',
630
- 'Ộ' => 'Ộ',
631
- 'ộ' => 'ộ',
632
- 'Ớ' => 'Ớ',
633
- 'ớ' => 'ớ',
634
- 'Ờ' => 'Ờ',
635
- 'ờ' => 'ờ',
636
- 'Ở' => 'Ở',
637
- 'ở' => 'ở',
638
- 'Ỡ' => 'Ỡ',
639
- 'ỡ' => 'ỡ',
640
- 'Ợ' => 'Ợ',
641
- 'ợ' => 'ợ',
642
- 'Ụ' => 'Ụ',
643
- 'ụ' => 'ụ',
644
- 'Ủ' => 'Ủ',
645
- 'ủ' => 'ủ',
646
- 'Ứ' => 'Ứ',
647
- 'ứ' => 'ứ',
648
- 'Ừ' => 'Ừ',
649
- 'ừ' => 'ừ',
650
- 'Ử' => 'Ử',
651
- 'ử' => 'ử',
652
- 'Ữ' => 'Ữ',
653
- 'ữ' => 'ữ',
654
- 'Ự' => 'Ự',
655
- 'ự' => 'ự',
656
- 'Ỳ' => 'Ỳ',
657
- 'ỳ' => 'ỳ',
658
- 'Ỵ' => 'Ỵ',
659
- 'ỵ' => 'ỵ',
660
- 'Ỷ' => 'Ỷ',
661
- 'ỷ' => 'ỷ',
662
- 'Ỹ' => 'Ỹ',
663
- 'ỹ' => 'ỹ',
664
- 'ἀ' => 'ἀ',
665
- 'ἁ' => 'ἁ',
666
- 'ἂ' => 'ἂ',
667
- 'ἃ' => 'ἃ',
668
- 'ἄ' => 'ἄ',
669
- 'ἅ' => 'ἅ',
670
- 'ἆ' => 'ἆ',
671
- 'ἇ' => 'ἇ',
672
- 'Ἀ' => 'Ἀ',
673
- 'Ἁ' => 'Ἁ',
674
- 'Ἂ' => 'Ἂ',
675
- 'Ἃ' => 'Ἃ',
676
- 'Ἄ' => 'Ἄ',
677
- 'Ἅ' => 'Ἅ',
678
- 'Ἆ' => 'Ἆ',
679
- 'Ἇ' => 'Ἇ',
680
- 'ἐ' => 'ἐ',
681
- 'ἑ' => 'ἑ',
682
- 'ἒ' => 'ἒ',
683
- 'ἓ' => 'ἓ',
684
- 'ἔ' => 'ἔ',
685
- 'ἕ' => 'ἕ',
686
- 'Ἐ' => 'Ἐ',
687
- 'Ἑ' => 'Ἑ',
688
- 'Ἒ' => 'Ἒ',
689
- 'Ἓ' => 'Ἓ',
690
- 'Ἔ' => 'Ἔ',
691
- 'Ἕ' => 'Ἕ',
692
- 'ἠ' => 'ἠ',
693
- 'ἡ' => 'ἡ',
694
- 'ἢ' => 'ἢ',
695
- 'ἣ' => 'ἣ',
696
- 'ἤ' => 'ἤ',
697
- 'ἥ' => 'ἥ',
698
- 'ἦ' => 'ἦ',
699
- 'ἧ' => 'ἧ',
700
- 'Ἠ' => 'Ἠ',
701
- 'Ἡ' => 'Ἡ',
702
- 'Ἢ' => 'Ἢ',
703
- 'Ἣ' => 'Ἣ',
704
- 'Ἤ' => 'Ἤ',
705
- 'Ἥ' => 'Ἥ',
706
- 'Ἦ' => 'Ἦ',
707
- 'Ἧ' => 'Ἧ',
708
- 'ἰ' => 'ἰ',
709
- 'ἱ' => 'ἱ',
710
- 'ἲ' => 'ἲ',
711
- 'ἳ' => 'ἳ',
712
- 'ἴ' => 'ἴ',
713
- 'ἵ' => 'ἵ',
714
- 'ἶ' => 'ἶ',
715
- 'ἷ' => 'ἷ',
716
- 'Ἰ' => 'Ἰ',
717
- 'Ἱ' => 'Ἱ',
718
- 'Ἲ' => 'Ἲ',
719
- 'Ἳ' => 'Ἳ',
720
- 'Ἴ' => 'Ἴ',
721
- 'Ἵ' => 'Ἵ',
722
- 'Ἶ' => 'Ἶ',
723
- 'Ἷ' => 'Ἷ',
724
- 'ὀ' => 'ὀ',
725
- 'ὁ' => 'ὁ',
726
- 'ὂ' => 'ὂ',
727
- 'ὃ' => 'ὃ',
728
- 'ὄ' => 'ὄ',
729
- 'ὅ' => 'ὅ',
730
- 'Ὀ' => 'Ὀ',
731
- 'Ὁ' => 'Ὁ',
732
- 'Ὂ' => 'Ὂ',
733
- 'Ὃ' => 'Ὃ',
734
- 'Ὄ' => 'Ὄ',
735
- 'Ὅ' => 'Ὅ',
736
- 'ὐ' => 'ὐ',
737
- 'ὑ' => 'ὑ',
738
- 'ὒ' => 'ὒ',
739
- 'ὓ' => 'ὓ',
740
- 'ὔ' => 'ὔ',
741
- 'ὕ' => 'ὕ',
742
- 'ὖ' => 'ὖ',
743
- 'ὗ' => 'ὗ',
744
- 'Ὑ' => 'Ὑ',
745
- 'Ὓ' => 'Ὓ',
746
- 'Ὕ' => 'Ὕ',
747
- 'Ὗ' => 'Ὗ',
748
- 'ὠ' => 'ὠ',
749
- 'ὡ' => 'ὡ',
750
- 'ὢ' => 'ὢ',
751
- 'ὣ' => 'ὣ',
752
- 'ὤ' => 'ὤ',
753
- 'ὥ' => 'ὥ',
754
- 'ὦ' => 'ὦ',
755
- 'ὧ' => 'ὧ',
756
- 'Ὠ' => 'Ὠ',
757
- 'Ὡ' => 'Ὡ',
758
- 'Ὢ' => 'Ὢ',
759
- 'Ὣ' => 'Ὣ',
760
- 'Ὤ' => 'Ὤ',
761
- 'Ὥ' => 'Ὥ',
762
- 'Ὦ' => 'Ὦ',
763
- 'Ὧ' => 'Ὧ',
764
- 'ὰ' => 'ὰ',
765
- 'ά' => 'ά',
766
- 'ὲ' => 'ὲ',
767
- 'έ' => 'έ',
768
- 'ὴ' => 'ὴ',
769
- 'ή' => 'ή',
770
- 'ὶ' => 'ὶ',
771
- 'ί' => 'ί',
772
- 'ὸ' => 'ὸ',
773
- 'ό' => 'ό',
774
- 'ὺ' => 'ὺ',
775
- 'ύ' => 'ύ',
776
- 'ὼ' => 'ὼ',
777
- 'ώ' => 'ώ',
778
- 'ᾀ' => 'ᾀ',
779
- 'ᾁ' => 'ᾁ',
780
- 'ᾂ' => 'ᾂ',
781
- 'ᾃ' => 'ᾃ',
782
- 'ᾄ' => 'ᾄ',
783
- 'ᾅ' => 'ᾅ',
784
- 'ᾆ' => 'ᾆ',
785
- 'ᾇ' => 'ᾇ',
786
- 'ᾈ' => 'ᾈ',
787
- 'ᾉ' => 'ᾉ',
788
- 'ᾊ' => 'ᾊ',
789
- 'ᾋ' => 'ᾋ',
790
- 'ᾌ' => 'ᾌ',
791
- 'ᾍ' => 'ᾍ',
792
- 'ᾎ' => 'ᾎ',
793
- 'ᾏ' => 'ᾏ',
794
- 'ᾐ' => 'ᾐ',
795
- 'ᾑ' => 'ᾑ',
796
- 'ᾒ' => 'ᾒ',
797
- 'ᾓ' => 'ᾓ',
798
- 'ᾔ' => 'ᾔ',
799
- 'ᾕ' => 'ᾕ',
800
- 'ᾖ' => 'ᾖ',
801
- 'ᾗ' => 'ᾗ',
802
- 'ᾘ' => 'ᾘ',
803
- 'ᾙ' => 'ᾙ',
804
- 'ᾚ' => 'ᾚ',
805
- 'ᾛ' => 'ᾛ',
806
- 'ᾜ' => 'ᾜ',
807
- 'ᾝ' => 'ᾝ',
808
- 'ᾞ' => 'ᾞ',
809
- 'ᾟ' => 'ᾟ',
810
- 'ᾠ' => 'ᾠ',
811
- 'ᾡ' => 'ᾡ',
812
- 'ᾢ' => 'ᾢ',
813
- 'ᾣ' => 'ᾣ',
814
- 'ᾤ' => 'ᾤ',
815
- 'ᾥ' => 'ᾥ',
816
- 'ᾦ' => 'ᾦ',
817
- 'ᾧ' => 'ᾧ',
818
- 'ᾨ' => 'ᾨ',
819
- 'ᾩ' => 'ᾩ',
820
- 'ᾪ' => 'ᾪ',
821
- 'ᾫ' => 'ᾫ',
822
- 'ᾬ' => 'ᾬ',
823
- 'ᾭ' => 'ᾭ',
824
- 'ᾮ' => 'ᾮ',
825
- 'ᾯ' => 'ᾯ',
826
- 'ᾰ' => 'ᾰ',
827
- 'ᾱ' => 'ᾱ',
828
- 'ᾲ' => 'ᾲ',
829
- 'ᾳ' => 'ᾳ',
830
- 'ᾴ' => 'ᾴ',
831
- 'ᾶ' => 'ᾶ',
832
- 'ᾷ' => 'ᾷ',
833
- 'Ᾰ' => 'Ᾰ',
834
- 'Ᾱ' => 'Ᾱ',
835
- 'Ὰ' => 'Ὰ',
836
- 'Ά' => 'Ά',
837
- 'ᾼ' => 'ᾼ',
838
- 'ι' => 'ι',
839
- '῁' => '῁',
840
- 'ῂ' => 'ῂ',
841
- 'ῃ' => 'ῃ',
842
- 'ῄ' => 'ῄ',
843
- 'ῆ' => 'ῆ',
844
- 'ῇ' => 'ῇ',
845
- 'Ὲ' => 'Ὲ',
846
- 'Έ' => 'Έ',
847
- 'Ὴ' => 'Ὴ',
848
- 'Ή' => 'Ή',
849
- 'ῌ' => 'ῌ',
850
- '῍' => '῍',
851
- '῎' => '῎',
852
- '῏' => '῏',
853
- 'ῐ' => 'ῐ',
854
- 'ῑ' => 'ῑ',
855
- 'ῒ' => 'ῒ',
856
- 'ΐ' => 'ΐ',
857
- 'ῖ' => 'ῖ',
858
- 'ῗ' => 'ῗ',
859
- 'Ῐ' => 'Ῐ',
860
- 'Ῑ' => 'Ῑ',
861
- 'Ὶ' => 'Ὶ',
862
- 'Ί' => 'Ί',
863
- '῝' => '῝',
864
- '῞' => '῞',
865
- '῟' => '῟',
866
- 'ῠ' => 'ῠ',
867
- 'ῡ' => 'ῡ',
868
- 'ῢ' => 'ῢ',
869
- 'ΰ' => 'ΰ',
870
- 'ῤ' => 'ῤ',
871
- 'ῥ' => 'ῥ',
872
- 'ῦ' => 'ῦ',
873
- 'ῧ' => 'ῧ',
874
- 'Ῠ' => 'Ῠ',
875
- 'Ῡ' => 'Ῡ',
876
- 'Ὺ' => 'Ὺ',
877
- 'Ύ' => 'Ύ',
878
- 'Ῥ' => 'Ῥ',
879
- '῭' => '῭',
880
- '΅' => '΅',
881
- '`' => '`',
882
- 'ῲ' => 'ῲ',
883
- 'ῳ' => 'ῳ',
884
- 'ῴ' => 'ῴ',
885
- 'ῶ' => 'ῶ',
886
- 'ῷ' => 'ῷ',
887
- 'Ὸ' => 'Ὸ',
888
- 'Ό' => 'Ό',
889
- 'Ὼ' => 'Ὼ',
890
- 'Ώ' => 'Ώ',
891
- 'ῼ' => 'ῼ',
892
- '´' => '´',
893
- ' ' => ' ',
894
- ' ' => ' ',
895
- 'Ω' => 'Ω',
896
- 'K' => 'K',
897
- 'Å' => 'Å',
898
- '↚' => '↚',
899
- '↛' => '↛',
900
- '↮' => '↮',
901
- '⇍' => '⇍',
902
- '⇎' => '⇎',
903
- '⇏' => '⇏',
904
- '∄' => '∄',
905
- '∉' => '∉',
906
- '∌' => '∌',
907
- '∤' => '∤',
908
- '∦' => '∦',
909
- '≁' => '≁',
910
- '≄' => '≄',
911
- '≇' => '≇',
912
- '≉' => '≉',
913
- '≠' => '≠',
914
- '≢' => '≢',
915
- '≭' => '≭',
916
- '≮' => '≮',
917
- '≯' => '≯',
918
- '≰' => '≰',
919
- '≱' => '≱',
920
- '≴' => '≴',
921
- '≵' => '≵',
922
- '≸' => '≸',
923
- '≹' => '≹',
924
- '⊀' => '⊀',
925
- '⊁' => '⊁',
926
- '⊄' => '⊄',
927
- '⊅' => '⊅',
928
- '⊈' => '⊈',
929
- '⊉' => '⊉',
930
- '⊬' => '⊬',
931
- '⊭' => '⊭',
932
- '⊮' => '⊮',
933
- '⊯' => '⊯',
934
- '⋠' => '⋠',
935
- '⋡' => '⋡',
936
- '⋢' => '⋢',
937
- '⋣' => '⋣',
938
- '⋪' => '⋪',
939
- '⋫' => '⋫',
940
- '⋬' => '⋬',
941
- '⋭' => '⋭',
942
- '〈' => '〈',
943
- '〉' => '〉',
944
- '⫝̸' => '⫝̸',
945
- 'が' => 'が',
946
- 'ぎ' => 'ぎ',
947
- 'ぐ' => 'ぐ',
948
- 'げ' => 'げ',
949
- 'ご' => 'ご',
950
- 'ざ' => 'ざ',
951
- 'じ' => 'じ',
952
- 'ず' => 'ず',
953
- 'ぜ' => 'ぜ',
954
- 'ぞ' => 'ぞ',
955
- 'だ' => 'だ',
956
- 'ぢ' => 'ぢ',
957
- 'づ' => 'づ',
958
- 'で' => 'で',
959
- 'ど' => 'ど',
960
- 'ば' => 'ば',
961
- 'ぱ' => 'ぱ',
962
- 'び' => 'び',
963
- 'ぴ' => 'ぴ',
964
- 'ぶ' => 'ぶ',
965
- 'ぷ' => 'ぷ',
966
- 'べ' => 'べ',
967
- 'ぺ' => 'ぺ',
968
- 'ぼ' => 'ぼ',
969
- 'ぽ' => 'ぽ',
970
- 'ゔ' => 'ゔ',
971
- 'ゞ' => 'ゞ',
972
- 'ガ' => 'ガ',
973
- 'ギ' => 'ギ',
974
- 'グ' => 'グ',
975
- 'ゲ' => 'ゲ',
976
- 'ゴ' => 'ゴ',
977
- 'ザ' => 'ザ',
978
- 'ジ' => 'ジ',
979
- 'ズ' => 'ズ',
980
- 'ゼ' => 'ゼ',
981
- 'ゾ' => 'ゾ',
982
- 'ダ' => 'ダ',
983
- 'ヂ' => 'ヂ',
984
- 'ヅ' => 'ヅ',
985
- 'デ' => 'デ',
986
- 'ド' => 'ド',
987
- 'バ' => 'バ',
988
- 'パ' => 'パ',
989
- 'ビ' => 'ビ',
990
- 'ピ' => 'ピ',
991
- 'ブ' => 'ブ',
992
- 'プ' => 'プ',
993
- 'ベ' => 'ベ',
994
- 'ペ' => 'ペ',
995
- 'ボ' => 'ボ',
996
- 'ポ' => 'ポ',
997
- 'ヴ' => 'ヴ',
998
- 'ヷ' => 'ヷ',
999
- 'ヸ' => 'ヸ',
1000
- 'ヹ' => 'ヹ',
1001
- 'ヺ' => 'ヺ',
1002
- 'ヾ' => 'ヾ',
1003
- '豈' => '豈',
1004
- '更' => '更',
1005
- '車' => '車',
1006
- '賈' => '賈',
1007
- '滑' => '滑',
1008
- '串' => '串',
1009
- '句' => '句',
1010
- '龜' => '龜',
1011
- '龜' => '龜',
1012
- '契' => '契',
1013
- '金' => '金',
1014
- '喇' => '喇',
1015
- '奈' => '奈',
1016
- '懶' => '懶',
1017
- '癩' => '癩',
1018
- '羅' => '羅',
1019
- '蘿' => '蘿',
1020
- '螺' => '螺',
1021
- '裸' => '裸',
1022
- '邏' => '邏',
1023
- '樂' => '樂',
1024
- '洛' => '洛',
1025
- '烙' => '烙',
1026
- '珞' => '珞',
1027
- '落' => '落',
1028
- '酪' => '酪',
1029
- '駱' => '駱',
1030
- '亂' => '亂',
1031
- '卵' => '卵',
1032
- '欄' => '欄',
1033
- '爛' => '爛',
1034
- '蘭' => '蘭',
1035
- '鸞' => '鸞',
1036
- '嵐' => '嵐',
1037
- '濫' => '濫',
1038
- '藍' => '藍',
1039
- '襤' => '襤',
1040
- '拉' => '拉',
1041
- '臘' => '臘',
1042
- '蠟' => '蠟',
1043
- '廊' => '廊',
1044
- '朗' => '朗',
1045
- '浪' => '浪',
1046
- '狼' => '狼',
1047
- '郎' => '郎',
1048
- '來' => '來',
1049
- '冷' => '冷',
1050
- '勞' => '勞',
1051
- '擄' => '擄',
1052
- '櫓' => '櫓',
1053
- '爐' => '爐',
1054
- '盧' => '盧',
1055
- '老' => '老',
1056
- '蘆' => '蘆',
1057
- '虜' => '虜',
1058
- '路' => '路',
1059
- '露' => '露',
1060
- '魯' => '魯',
1061
- '鷺' => '鷺',
1062
- '碌' => '碌',
1063
- '祿' => '祿',
1064
- '綠' => '綠',
1065
- '菉' => '菉',
1066
- '錄' => '錄',
1067
- '鹿' => '鹿',
1068
- '論' => '論',
1069
- '壟' => '壟',
1070
- '弄' => '弄',
1071
- '籠' => '籠',
1072
- '聾' => '聾',
1073
- '牢' => '牢',
1074
- '磊' => '磊',
1075
- '賂' => '賂',
1076
- '雷' => '雷',
1077
- '壘' => '壘',
1078
- '屢' => '屢',
1079
- '樓' => '樓',
1080
- '淚' => '淚',
1081
- '漏' => '漏',
1082
- '累' => '累',
1083
- '縷' => '縷',
1084
- '陋' => '陋',
1085
- '勒' => '勒',
1086
- '肋' => '肋',
1087
- '凜' => '凜',
1088
- '凌' => '凌',
1089
- '稜' => '稜',
1090
- '綾' => '綾',
1091
- '菱' => '菱',
1092
- '陵' => '陵',
1093
- '讀' => '讀',
1094
- '拏' => '拏',
1095
- '樂' => '樂',
1096
- '諾' => '諾',
1097
- '丹' => '丹',
1098
- '寧' => '寧',
1099
- '怒' => '怒',
1100
- '率' => '率',
1101
- '異' => '異',
1102
- '北' => '北',
1103
- '磻' => '磻',
1104
- '便' => '便',
1105
- '復' => '復',
1106
- '不' => '不',
1107
- '泌' => '泌',
1108
- '數' => '數',
1109
- '索' => '索',
1110
- '參' => '參',
1111
- '塞' => '塞',
1112
- '省' => '省',
1113
- '葉' => '葉',
1114
- '說' => '說',
1115
- '殺' => '殺',
1116
- '辰' => '辰',
1117
- '沈' => '沈',
1118
- '拾' => '拾',
1119
- '若' => '若',
1120
- '掠' => '掠',
1121
- '略' => '略',
1122
- '亮' => '亮',
1123
- '兩' => '兩',
1124
- '凉' => '凉',
1125
- '梁' => '梁',
1126
- '糧' => '糧',
1127
- '良' => '良',
1128
- '諒' => '諒',
1129
- '量' => '量',
1130
- '勵' => '勵',
1131
- '呂' => '呂',
1132
- '女' => '女',
1133
- '廬' => '廬',
1134
- '旅' => '旅',
1135
- '濾' => '濾',
1136
- '礪' => '礪',
1137
- '閭' => '閭',
1138
- '驪' => '驪',
1139
- '麗' => '麗',
1140
- '黎' => '黎',
1141
- '力' => '力',
1142
- '曆' => '曆',
1143
- '歷' => '歷',
1144
- '轢' => '轢',
1145
- '年' => '年',
1146
- '憐' => '憐',
1147
- '戀' => '戀',
1148
- '撚' => '撚',
1149
- '漣' => '漣',
1150
- '煉' => '煉',
1151
- '璉' => '璉',
1152
- '秊' => '秊',
1153
- '練' => '練',
1154
- '聯' => '聯',
1155
- '輦' => '輦',
1156
- '蓮' => '蓮',
1157
- '連' => '連',
1158
- '鍊' => '鍊',
1159
- '列' => '列',
1160
- '劣' => '劣',
1161
- '咽' => '咽',
1162
- '烈' => '烈',
1163
- '裂' => '裂',
1164
- '說' => '說',
1165
- '廉' => '廉',
1166
- '念' => '念',
1167
- '捻' => '捻',
1168
- '殮' => '殮',
1169
- '簾' => '簾',
1170
- '獵' => '獵',
1171
- '令' => '令',
1172
- '囹' => '囹',
1173
- '寧' => '寧',
1174
- '嶺' => '嶺',
1175
- '怜' => '怜',
1176
- '玲' => '玲',
1177
- '瑩' => '瑩',
1178
- '羚' => '羚',
1179
- '聆' => '聆',
1180
- '鈴' => '鈴',
1181
- '零' => '零',
1182
- '靈' => '靈',
1183
- '領' => '領',
1184
- '例' => '例',
1185
- '禮' => '禮',
1186
- '醴' => '醴',
1187
- '隸' => '隸',
1188
- '惡' => '惡',
1189
- '了' => '了',
1190
- '僚' => '僚',
1191
- '寮' => '寮',
1192
- '尿' => '尿',
1193
- '料' => '料',
1194
- '樂' => '樂',
1195
- '燎' => '燎',
1196
- '療' => '療',
1197
- '蓼' => '蓼',
1198
- '遼' => '遼',
1199
- '龍' => '龍',
1200
- '暈' => '暈',
1201
- '阮' => '阮',
1202
- '劉' => '劉',
1203
- '杻' => '杻',
1204
- '柳' => '柳',
1205
- '流' => '流',
1206
- '溜' => '溜',
1207
- '琉' => '琉',
1208
- '留' => '留',
1209
- '硫' => '硫',
1210
- '紐' => '紐',
1211
- '類' => '類',
1212
- '六' => '六',
1213
- '戮' => '戮',
1214
- '陸' => '陸',
1215
- '倫' => '倫',
1216
- '崙' => '崙',
1217
- '淪' => '淪',
1218
- '輪' => '輪',
1219
- '律' => '律',
1220
- '慄' => '慄',
1221
- '栗' => '栗',
1222
- '率' => '率',
1223
- '隆' => '隆',
1224
- '利' => '利',
1225
- '吏' => '吏',
1226
- '履' => '履',
1227
- '易' => '易',
1228
- '李' => '李',
1229
- '梨' => '梨',
1230
- '泥' => '泥',
1231
- '理' => '理',
1232
- '痢' => '痢',
1233
- '罹' => '罹',
1234
- '裏' => '裏',
1235
- '裡' => '裡',
1236
- '里' => '里',
1237
- '離' => '離',
1238
- '匿' => '匿',
1239
- '溺' => '溺',
1240
- '吝' => '吝',
1241
- '燐' => '燐',
1242
- '璘' => '璘',
1243
- '藺' => '藺',
1244
- '隣' => '隣',
1245
- '鱗' => '鱗',
1246
- '麟' => '麟',
1247
- '林' => '林',
1248
- '淋' => '淋',
1249
- '臨' => '臨',
1250
- '立' => '立',
1251
- '笠' => '笠',
1252
- '粒' => '粒',
1253
- '狀' => '狀',
1254
- '炙' => '炙',
1255
- '識' => '識',
1256
- '什' => '什',
1257
- '茶' => '茶',
1258
- '刺' => '刺',
1259
- '切' => '切',
1260
- '度' => '度',
1261
- '拓' => '拓',
1262
- '糖' => '糖',
1263
- '宅' => '宅',
1264
- '洞' => '洞',
1265
- '暴' => '暴',
1266
- '輻' => '輻',
1267
- '行' => '行',
1268
- '降' => '降',
1269
- '見' => '見',
1270
- '廓' => '廓',
1271
- '兀' => '兀',
1272
- '嗀' => '嗀',
1273
- '塚' => '塚',
1274
- '晴' => '晴',
1275
- '凞' => '凞',
1276
- '猪' => '猪',
1277
- '益' => '益',
1278
- '礼' => '礼',
1279
- '神' => '神',
1280
- '祥' => '祥',
1281
- '福' => '福',
1282
- '靖' => '靖',
1283
- '精' => '精',
1284
- '羽' => '羽',
1285
- '蘒' => '蘒',
1286
- '諸' => '諸',
1287
- '逸' => '逸',
1288
- '都' => '都',
1289
- '飯' => '飯',
1290
- '飼' => '飼',
1291
- '館' => '館',
1292
- '鶴' => '鶴',
1293
- '郞' => '郞',
1294
- '隷' => '隷',
1295
- '侮' => '侮',
1296
- '僧' => '僧',
1297
- '免' => '免',
1298
- '勉' => '勉',
1299
- '勤' => '勤',
1300
- '卑' => '卑',
1301
- '喝' => '喝',
1302
- '嘆' => '嘆',
1303
- '器' => '器',
1304
- '塀' => '塀',
1305
- '墨' => '墨',
1306
- '層' => '層',
1307
- '屮' => '屮',
1308
- '悔' => '悔',
1309
- '慨' => '慨',
1310
- '憎' => '憎',
1311
- '懲' => '懲',
1312
- '敏' => '敏',
1313
- '既' => '既',
1314
- '暑' => '暑',
1315
- '梅' => '梅',
1316
- '海' => '海',
1317
- '渚' => '渚',
1318
- '漢' => '漢',
1319
- '煮' => '煮',
1320
- '爫' => '爫',
1321
- '琢' => '琢',
1322
- '碑' => '碑',
1323
- '社' => '社',
1324
- '祉' => '祉',
1325
- '祈' => '祈',
1326
- '祐' => '祐',
1327
- '祖' => '祖',
1328
- '祝' => '祝',
1329
- '禍' => '禍',
1330
- '禎' => '禎',
1331
- '穀' => '穀',
1332
- '突' => '突',
1333
- '節' => '節',
1334
- '練' => '練',
1335
- '縉' => '縉',
1336
- '繁' => '繁',
1337
- '署' => '署',
1338
- '者' => '者',
1339
- '臭' => '臭',
1340
- '艹' => '艹',
1341
- '艹' => '艹',
1342
- '著' => '著',
1343
- '褐' => '褐',
1344
- '視' => '視',
1345
- '謁' => '謁',
1346
- '謹' => '謹',
1347
- '賓' => '賓',
1348
- '贈' => '贈',
1349
- '辶' => '辶',
1350
- '逸' => '逸',
1351
- '難' => '難',
1352
- '響' => '響',
1353
- '頻' => '頻',
1354
- '恵' => '恵',
1355
- '𤋮' => '𤋮',
1356
- '舘' => '舘',
1357
- '並' => '並',
1358
- '况' => '况',
1359
- '全' => '全',
1360
- '侀' => '侀',
1361
- '充' => '充',
1362
- '冀' => '冀',
1363
- '勇' => '勇',
1364
- '勺' => '勺',
1365
- '喝' => '喝',
1366
- '啕' => '啕',
1367
- '喙' => '喙',
1368
- '嗢' => '嗢',
1369
- '塚' => '塚',
1370
- '墳' => '墳',
1371
- '奄' => '奄',
1372
- '奔' => '奔',
1373
- '婢' => '婢',
1374
- '嬨' => '嬨',
1375
- '廒' => '廒',
1376
- '廙' => '廙',
1377
- '彩' => '彩',
1378
- '徭' => '徭',
1379
- '惘' => '惘',
1380
- '慎' => '慎',
1381
- '愈' => '愈',
1382
- '憎' => '憎',
1383
- '慠' => '慠',
1384
- '懲' => '懲',
1385
- '戴' => '戴',
1386
- '揄' => '揄',
1387
- '搜' => '搜',
1388
- '摒' => '摒',
1389
- '敖' => '敖',
1390
- '晴' => '晴',
1391
- '朗' => '朗',
1392
- '望' => '望',
1393
- '杖' => '杖',
1394
- '歹' => '歹',
1395
- '殺' => '殺',
1396
- '流' => '流',
1397
- '滛' => '滛',
1398
- '滋' => '滋',
1399
- '漢' => '漢',
1400
- '瀞' => '瀞',
1401
- '煮' => '煮',
1402
- '瞧' => '瞧',
1403
- '爵' => '爵',
1404
- '犯' => '犯',
1405
- '猪' => '猪',
1406
- '瑱' => '瑱',
1407
- '甆' => '甆',
1408
- '画' => '画',
1409
- '瘝' => '瘝',
1410
- '瘟' => '瘟',
1411
- '益' => '益',
1412
- '盛' => '盛',
1413
- '直' => '直',
1414
- '睊' => '睊',
1415
- '着' => '着',
1416
- '磌' => '磌',
1417
- '窱' => '窱',
1418
- '節' => '節',
1419
- '类' => '类',
1420
- '絛' => '絛',
1421
- '練' => '練',
1422
- '缾' => '缾',
1423
- '者' => '者',
1424
- '荒' => '荒',
1425
- '華' => '華',
1426
- '蝹' => '蝹',
1427
- '襁' => '襁',
1428
- '覆' => '覆',
1429
- '視' => '視',
1430
- '調' => '調',
1431
- '諸' => '諸',
1432
- '請' => '請',
1433
- '謁' => '謁',
1434
- '諾' => '諾',
1435
- '諭' => '諭',
1436
- '謹' => '謹',
1437
- '變' => '變',
1438
- '贈' => '贈',
1439
- '輸' => '輸',
1440
- '遲' => '遲',
1441
- '醙' => '醙',
1442
- '鉶' => '鉶',
1443
- '陼' => '陼',
1444
- '難' => '難',
1445
- '靖' => '靖',
1446
- '韛' => '韛',
1447
- '響' => '響',
1448
- '頋' => '頋',
1449
- '頻' => '頻',
1450
- '鬒' => '鬒',
1451
- '龜' => '龜',
1452
- '𢡊' => '𢡊',
1453
- '𢡄' => '𢡄',
1454
- '𣏕' => '𣏕',
1455
- '㮝' => '㮝',
1456
- '䀘' => '䀘',
1457
- '䀹' => '䀹',
1458
- '𥉉' => '𥉉',
1459
- '𥳐' => '𥳐',
1460
- '𧻓' => '𧻓',
1461
- '齃' => '齃',
1462
- '龎' => '龎',
1463
- 'יִ' => 'יִ',
1464
- 'ײַ' => 'ײַ',
1465
- 'שׁ' => 'שׁ',
1466
- 'שׂ' => 'שׂ',
1467
- 'שּׁ' => 'שּׁ',
1468
- 'שּׂ' => 'שּׂ',
1469
- 'אַ' => 'אַ',
1470
- 'אָ' => 'אָ',
1471
- 'אּ' => 'אּ',
1472
- 'בּ' => 'בּ',
1473
- 'גּ' => 'גּ',
1474
- 'דּ' => 'דּ',
1475
- 'הּ' => 'הּ',
1476
- 'וּ' => 'וּ',
1477
- 'זּ' => 'זּ',
1478
- 'טּ' => 'טּ',
1479
- 'יּ' => 'יּ',
1480
- 'ךּ' => 'ךּ',
1481
- 'כּ' => 'כּ',
1482
- 'לּ' => 'לּ',
1483
- 'מּ' => 'מּ',
1484
- 'נּ' => 'נּ',
1485
- 'סּ' => 'סּ',
1486
- 'ףּ' => 'ףּ',
1487
- 'פּ' => 'פּ',
1488
- 'צּ' => 'צּ',
1489
- 'קּ' => 'קּ',
1490
- 'רּ' => 'רּ',
1491
- 'שּ' => 'שּ',
1492
- 'תּ' => 'תּ',
1493
- 'וֹ' => 'וֹ',
1494
- 'בֿ' => 'בֿ',
1495
- 'כֿ' => 'כֿ',
1496
- 'פֿ' => 'פֿ',
1497
- '𑂚' => '𑂚',
1498
- '𑂜' => '𑂜',
1499
- '𑂫' => '𑂫',
1500
- '𑄮' => '𑄮',
1501
- '𑄯' => '𑄯',
1502
- '𑍋' => '𑍋',
1503
- '𑍌' => '𑍌',
1504
- '𑒻' => '𑒻',
1505
- '𑒼' => '𑒼',
1506
- '𑒾' => '𑒾',
1507
- '𑖺' => '𑖺',
1508
- '𑖻' => '𑖻',
1509
- '𑤸' => '𑤸',
1510
- '𝅗𝅥' => '𝅗𝅥',
1511
- '𝅘𝅥' => '𝅘𝅥',
1512
- '𝅘𝅥𝅮' => '𝅘𝅥𝅮',
1513
- '𝅘𝅥𝅯' => '𝅘𝅥𝅯',
1514
- '𝅘𝅥𝅰' => '𝅘𝅥𝅰',
1515
- '𝅘𝅥𝅱' => '𝅘𝅥𝅱',
1516
- '𝅘𝅥𝅲' => '𝅘𝅥𝅲',
1517
- '𝆹𝅥' => '𝆹𝅥',
1518
- '𝆺𝅥' => '𝆺𝅥',
1519
- '𝆹𝅥𝅮' => '𝆹𝅥𝅮',
1520
- '𝆺𝅥𝅮' => '𝆺𝅥𝅮',
1521
- '𝆹𝅥𝅯' => '𝆹𝅥𝅯',
1522
- '𝆺𝅥𝅯' => '𝆺𝅥𝅯',
1523
- '丽' => '丽',
1524
- '丸' => '丸',
1525
- '乁' => '乁',
1526
- '𠄢' => '𠄢',
1527
- '你' => '你',
1528
- '侮' => '侮',
1529
- '侻' => '侻',
1530
- '倂' => '倂',
1531
- '偺' => '偺',
1532
- '備' => '備',
1533
- '僧' => '僧',
1534
- '像' => '像',
1535
- '㒞' => '㒞',
1536
- '𠘺' => '𠘺',
1537
- '免' => '免',
1538
- '兔' => '兔',
1539
- '兤' => '兤',
1540
- '具' => '具',
1541
- '𠔜' => '𠔜',
1542
- '㒹' => '㒹',
1543
- '內' => '內',
1544
- '再' => '再',
1545
- '𠕋' => '𠕋',
1546
- '冗' => '冗',
1547
- '冤' => '冤',
1548
- '仌' => '仌',
1549
- '冬' => '冬',
1550
- '况' => '况',
1551
- '𩇟' => '𩇟',
1552
- '凵' => '凵',
1553
- '刃' => '刃',
1554
- '㓟' => '㓟',
1555
- '刻' => '刻',
1556
- '剆' => '剆',
1557
- '割' => '割',
1558
- '剷' => '剷',
1559
- '㔕' => '㔕',
1560
- '勇' => '勇',
1561
- '勉' => '勉',
1562
- '勤' => '勤',
1563
- '勺' => '勺',
1564
- '包' => '包',
1565
- '匆' => '匆',
1566
- '北' => '北',
1567
- '卉' => '卉',
1568
- '卑' => '卑',
1569
- '博' => '博',
1570
- '即' => '即',
1571
- '卽' => '卽',
1572
- '卿' => '卿',
1573
- '卿' => '卿',
1574
- '卿' => '卿',
1575
- '𠨬' => '𠨬',
1576
- '灰' => '灰',
1577
- '及' => '及',
1578
- '叟' => '叟',
1579
- '𠭣' => '𠭣',
1580
- '叫' => '叫',
1581
- '叱' => '叱',
1582
- '吆' => '吆',
1583
- '咞' => '咞',
1584
- '吸' => '吸',
1585
- '呈' => '呈',
1586
- '周' => '周',
1587
- '咢' => '咢',
1588
- '哶' => '哶',
1589
- '唐' => '唐',
1590
- '啓' => '啓',
1591
- '啣' => '啣',
1592
- '善' => '善',
1593
- '善' => '善',
1594
- '喙' => '喙',
1595
- '喫' => '喫',
1596
- '喳' => '喳',
1597
- '嗂' => '嗂',
1598
- '圖' => '圖',
1599
- '嘆' => '嘆',
1600
- '圗' => '圗',
1601
- '噑' => '噑',
1602
- '噴' => '噴',
1603
- '切' => '切',
1604
- '壮' => '壮',
1605
- '城' => '城',
1606
- '埴' => '埴',
1607
- '堍' => '堍',
1608
- '型' => '型',
1609
- '堲' => '堲',
1610
- '報' => '報',
1611
- '墬' => '墬',
1612
- '𡓤' => '𡓤',
1613
- '売' => '売',
1614
- '壷' => '壷',
1615
- '夆' => '夆',
1616
- '多' => '多',
1617
- '夢' => '夢',
1618
- '奢' => '奢',
1619
- '𡚨' => '𡚨',
1620
- '𡛪' => '𡛪',
1621
- '姬' => '姬',
1622
- '娛' => '娛',
1623
- '娧' => '娧',
1624
- '姘' => '姘',
1625
- '婦' => '婦',
1626
- '㛮' => '㛮',
1627
- '㛼' => '㛼',
1628
- '嬈' => '嬈',
1629
- '嬾' => '嬾',
1630
- '嬾' => '嬾',
1631
- '𡧈' => '𡧈',
1632
- '寃' => '寃',
1633
- '寘' => '寘',
1634
- '寧' => '寧',
1635
- '寳' => '寳',
1636
- '𡬘' => '𡬘',
1637
- '寿' => '寿',
1638
- '将' => '将',
1639
- '当' => '当',
1640
- '尢' => '尢',
1641
- '㞁' => '㞁',
1642
- '屠' => '屠',
1643
- '屮' => '屮',
1644
- '峀' => '峀',
1645
- '岍' => '岍',
1646
- '𡷤' => '𡷤',
1647
- '嵃' => '嵃',
1648
- '𡷦' => '𡷦',
1649
- '嵮' => '嵮',
1650
- '嵫' => '嵫',
1651
- '嵼' => '嵼',
1652
- '巡' => '巡',
1653
- '巢' => '巢',
1654
- '㠯' => '㠯',
1655
- '巽' => '巽',
1656
- '帨' => '帨',
1657
- '帽' => '帽',
1658
- '幩' => '幩',
1659
- '㡢' => '㡢',
1660
- '𢆃' => '𢆃',
1661
- '㡼' => '㡼',
1662
- '庰' => '庰',
1663
- '庳' => '庳',
1664
- '庶' => '庶',
1665
- '廊' => '廊',
1666
- '𪎒' => '𪎒',
1667
- '廾' => '廾',
1668
- '𢌱' => '𢌱',
1669
- '𢌱' => '𢌱',
1670
- '舁' => '舁',
1671
- '弢' => '弢',
1672
- '弢' => '弢',
1673
- '㣇' => '㣇',
1674
- '𣊸' => '𣊸',
1675
- '𦇚' => '𦇚',
1676
- '形' => '形',
1677
- '彫' => '彫',
1678
- '㣣' => '㣣',
1679
- '徚' => '徚',
1680
- '忍' => '忍',
1681
- '志' => '志',
1682
- '忹' => '忹',
1683
- '悁' => '悁',
1684
- '㤺' => '㤺',
1685
- '㤜' => '㤜',
1686
- '悔' => '悔',
1687
- '𢛔' => '𢛔',
1688
- '惇' => '惇',
1689
- '慈' => '慈',
1690
- '慌' => '慌',
1691
- '慎' => '慎',
1692
- '慌' => '慌',
1693
- '慺' => '慺',
1694
- '憎' => '憎',
1695
- '憲' => '憲',
1696
- '憤' => '憤',
1697
- '憯' => '憯',
1698
- '懞' => '懞',
1699
- '懲' => '懲',
1700
- '懶' => '懶',
1701
- '成' => '成',
1702
- '戛' => '戛',
1703
- '扝' => '扝',
1704
- '抱' => '抱',
1705
- '拔' => '拔',
1706
- '捐' => '捐',
1707
- '𢬌' => '𢬌',
1708
- '挽' => '挽',
1709
- '拼' => '拼',
1710
- '捨' => '捨',
1711
- '掃' => '掃',
1712
- '揤' => '揤',
1713
- '𢯱' => '𢯱',
1714
- '搢' => '搢',
1715
- '揅' => '揅',
1716
- '掩' => '掩',
1717
- '㨮' => '㨮',
1718
- '摩' => '摩',
1719
- '摾' => '摾',
1720
- '撝' => '撝',
1721
- '摷' => '摷',
1722
- '㩬' => '㩬',
1723
- '敏' => '敏',
1724
- '敬' => '敬',
1725
- '𣀊' => '𣀊',
1726
- '旣' => '旣',
1727
- '書' => '書',
1728
- '晉' => '晉',
1729
- '㬙' => '㬙',
1730
- '暑' => '暑',
1731
- '㬈' => '㬈',
1732
- '㫤' => '㫤',
1733
- '冒' => '冒',
1734
- '冕' => '冕',
1735
- '最' => '最',
1736
- '暜' => '暜',
1737
- '肭' => '肭',
1738
- '䏙' => '䏙',
1739
- '朗' => '朗',
1740
- '望' => '望',
1741
- '朡' => '朡',
1742
- '杞' => '杞',
1743
- '杓' => '杓',
1744
- '𣏃' => '𣏃',
1745
- '㭉' => '㭉',
1746
- '柺' => '柺',
1747
- '枅' => '枅',
1748
- '桒' => '桒',
1749
- '梅' => '梅',
1750
- '𣑭' => '𣑭',
1751
- '梎' => '梎',
1752
- '栟' => '栟',
1753
- '椔' => '椔',
1754
- '㮝' => '㮝',
1755
- '楂' => '楂',
1756
- '榣' => '榣',
1757
- '槪' => '槪',
1758
- '檨' => '檨',
1759
- '𣚣' => '𣚣',
1760
- '櫛' => '櫛',
1761
- '㰘' => '㰘',
1762
- '次' => '次',
1763
- '𣢧' => '𣢧',
1764
- '歔' => '歔',
1765
- '㱎' => '㱎',
1766
- '歲' => '歲',
1767
- '殟' => '殟',
1768
- '殺' => '殺',
1769
- '殻' => '殻',
1770
- '𣪍' => '𣪍',
1771
- '𡴋' => '𡴋',
1772
- '𣫺' => '𣫺',
1773
- '汎' => '汎',
1774
- '𣲼' => '𣲼',
1775
- '沿' => '沿',
1776
- '泍' => '泍',
1777
- '汧' => '汧',
1778
- '洖' => '洖',
1779
- '派' => '派',
1780
- '海' => '海',
1781
- '流' => '流',
1782
- '浩' => '浩',
1783
- '浸' => '浸',
1784
- '涅' => '涅',
1785
- '𣴞' => '𣴞',
1786
- '洴' => '洴',
1787
- '港' => '港',
1788
- '湮' => '湮',
1789
- '㴳' => '㴳',
1790
- '滋' => '滋',
1791
- '滇' => '滇',
1792
- '𣻑' => '𣻑',
1793
- '淹' => '淹',
1794
- '潮' => '潮',
1795
- '𣽞' => '𣽞',
1796
- '𣾎' => '𣾎',
1797
- '濆' => '濆',
1798
- '瀹' => '瀹',
1799
- '瀞' => '瀞',
1800
- '瀛' => '瀛',
1801
- '㶖' => '㶖',
1802
- '灊' => '灊',
1803
- '災' => '災',
1804
- '灷' => '灷',
1805
- '炭' => '炭',
1806
- '𠔥' => '𠔥',
1807
- '煅' => '煅',
1808
- '𤉣' => '𤉣',
1809
- '熜' => '熜',
1810
- '𤎫' => '𤎫',
1811
- '爨' => '爨',
1812
- '爵' => '爵',
1813
- '牐' => '牐',
1814
- '𤘈' => '𤘈',
1815
- '犀' => '犀',
1816
- '犕' => '犕',
1817
- '𤜵' => '𤜵',
1818
- '𤠔' => '𤠔',
1819
- '獺' => '獺',
1820
- '王' => '王',
1821
- '㺬' => '㺬',
1822
- '玥' => '玥',
1823
- '㺸' => '㺸',
1824
- '㺸' => '㺸',
1825
- '瑇' => '瑇',
1826
- '瑜' => '瑜',
1827
- '瑱' => '瑱',
1828
- '璅' => '璅',
1829
- '瓊' => '瓊',
1830
- '㼛' => '㼛',
1831
- '甤' => '甤',
1832
- '𤰶' => '𤰶',
1833
- '甾' => '甾',
1834
- '𤲒' => '𤲒',
1835
- '異' => '異',
1836
- '𢆟' => '𢆟',
1837
- '瘐' => '瘐',
1838
- '𤾡' => '𤾡',
1839
- '𤾸' => '𤾸',
1840
- '𥁄' => '𥁄',
1841
- '㿼' => '㿼',
1842
- '䀈' => '䀈',
1843
- '直' => '直',
1844
- '𥃳' => '𥃳',
1845
- '𥃲' => '𥃲',
1846
- '𥄙' => '𥄙',
1847
- '𥄳' => '𥄳',
1848
- '眞' => '眞',
1849
- '真' => '真',
1850
- '真' => '真',
1851
- '睊' => '睊',
1852
- '䀹' => '䀹',
1853
- '瞋' => '瞋',
1854
- '䁆' => '䁆',
1855
- '䂖' => '䂖',
1856
- '𥐝' => '𥐝',
1857
- '硎' => '硎',
1858
- '碌' => '碌',
1859
- '磌' => '磌',
1860
- '䃣' => '䃣',
1861
- '𥘦' => '𥘦',
1862
- '祖' => '祖',
1863
- '𥚚' => '𥚚',
1864
- '𥛅' => '𥛅',
1865
- '福' => '福',
1866
- '秫' => '秫',
1867
- '䄯' => '䄯',
1868
- '穀' => '穀',
1869
- '穊' => '穊',
1870
- '穏' => '穏',
1871
- '𥥼' => '𥥼',
1872
- '𥪧' => '𥪧',
1873
- '𥪧' => '𥪧',
1874
- '竮' => '竮',
1875
- '䈂' => '䈂',
1876
- '𥮫' => '𥮫',
1877
- '篆' => '篆',
1878
- '築' => '築',
1879
- '䈧' => '䈧',
1880
- '𥲀' => '𥲀',
1881
- '糒' => '糒',
1882
- '䊠' => '䊠',
1883
- '糨' => '糨',
1884
- '糣' => '糣',
1885
- '紀' => '紀',
1886
- '𥾆' => '𥾆',
1887
- '絣' => '絣',
1888
- '䌁' => '䌁',
1889
- '緇' => '緇',
1890
- '縂' => '縂',
1891
- '繅' => '繅',
1892
- '䌴' => '䌴',
1893
- '𦈨' => '𦈨',
1894
- '𦉇' => '𦉇',
1895
- '䍙' => '䍙',
1896
- '𦋙' => '𦋙',
1897
- '罺' => '罺',
1898
- '𦌾' => '𦌾',
1899
- '羕' => '羕',
1900
- '翺' => '翺',
1901
- '者' => '者',
1902
- '𦓚' => '𦓚',
1903
- '𦔣' => '𦔣',
1904
- '聠' => '聠',
1905
- '𦖨' => '𦖨',
1906
- '聰' => '聰',
1907
- '𣍟' => '𣍟',
1908
- '䏕' => '䏕',
1909
- '育' => '育',
1910
- '脃' => '脃',
1911
- '䐋' => '䐋',
1912
- '脾' => '脾',
1913
- '媵' => '媵',
1914
- '𦞧' => '𦞧',
1915
- '𦞵' => '𦞵',
1916
- '𣎓' => '𣎓',
1917
- '𣎜' => '𣎜',
1918
- '舁' => '舁',
1919
- '舄' => '舄',
1920
- '辞' => '辞',
1921
- '䑫' => '䑫',
1922
- '芑' => '芑',
1923
- '芋' => '芋',
1924
- '芝' => '芝',
1925
- '劳' => '劳',
1926
- '花' => '花',
1927
- '芳' => '芳',
1928
- '芽' => '芽',
1929
- '苦' => '苦',
1930
- '𦬼' => '𦬼',
1931
- '若' => '若',
1932
- '茝' => '茝',
1933
- '荣' => '荣',
1934
- '莭' => '莭',
1935
- '茣' => '茣',
1936
- '莽' => '莽',
1937
- '菧' => '菧',
1938
- '著' => '著',
1939
- '荓' => '荓',
1940
- '菊' => '菊',
1941
- '菌' => '菌',
1942
- '菜' => '菜',
1943
- '𦰶' => '𦰶',
1944
- '𦵫' => '𦵫',
1945
- '𦳕' => '𦳕',
1946
- '䔫' => '䔫',
1947
- '蓱' => '蓱',
1948
- '蓳' => '蓳',
1949
- '蔖' => '蔖',
1950
- '𧏊' => '𧏊',
1951
- '蕤' => '蕤',
1952
- '𦼬' => '𦼬',
1953
- '䕝' => '䕝',
1954
- '䕡' => '䕡',
1955
- '𦾱' => '𦾱',
1956
- '𧃒' => '𧃒',
1957
- '䕫' => '䕫',
1958
- '虐' => '虐',
1959
- '虜' => '虜',
1960
- '虧' => '虧',
1961
- '虩' => '虩',
1962
- '蚩' => '蚩',
1963
- '蚈' => '蚈',
1964
- '蜎' => '蜎',
1965
- '蛢' => '蛢',
1966
- '蝹' => '蝹',
1967
- '蜨' => '蜨',
1968
- '蝫' => '蝫',
1969
- '螆' => '螆',
1970
- '䗗' => '䗗',
1971
- '蟡' => '蟡',
1972
- '蠁' => '蠁',
1973
- '䗹' => '䗹',
1974
- '衠' => '衠',
1975
- '衣' => '衣',
1976
- '𧙧' => '𧙧',
1977
- '裗' => '裗',
1978
- '裞' => '裞',
1979
- '䘵' => '䘵',
1980
- '裺' => '裺',
1981
- '㒻' => '㒻',
1982
- '𧢮' => '𧢮',
1983
- '𧥦' => '𧥦',
1984
- '䚾' => '䚾',
1985
- '䛇' => '䛇',
1986
- '誠' => '誠',
1987
- '諭' => '諭',
1988
- '變' => '變',
1989
- '豕' => '豕',
1990
- '𧲨' => '𧲨',
1991
- '貫' => '貫',
1992
- '賁' => '賁',
1993
- '贛' => '贛',
1994
- '起' => '起',
1995
- '𧼯' => '𧼯',
1996
- '𠠄' => '𠠄',
1997
- '跋' => '跋',
1998
- '趼' => '趼',
1999
- '跰' => '跰',
2000
- '𠣞' => '𠣞',
2001
- '軔' => '軔',
2002
- '輸' => '輸',
2003
- '𨗒' => '𨗒',
2004
- '𨗭' => '𨗭',
2005
- '邔' => '邔',
2006
- '郱' => '郱',
2007
- '鄑' => '鄑',
2008
- '𨜮' => '𨜮',
2009
- '鄛' => '鄛',
2010
- '鈸' => '鈸',
2011
- '鋗' => '鋗',
2012
- '鋘' => '鋘',
2013
- '鉼' => '鉼',
2014
- '鏹' => '鏹',
2015
- '鐕' => '鐕',
2016
- '𨯺' => '𨯺',
2017
- '開' => '開',
2018
- '䦕' => '䦕',
2019
- '閷' => '閷',
2020
- '𨵷' => '𨵷',
2021
- '䧦' => '䧦',
2022
- '雃' => '雃',
2023
- '嶲' => '嶲',
2024
- '霣' => '霣',
2025
- '𩅅' => '𩅅',
2026
- '𩈚' => '𩈚',
2027
- '䩮' => '䩮',
2028
- '䩶' => '䩶',
2029
- '韠' => '韠',
2030
- '𩐊' => '𩐊',
2031
- '䪲' => '䪲',
2032
- '𩒖' => '𩒖',
2033
- '頋' => '頋',
2034
- '頋' => '頋',
2035
- '頩' => '頩',
2036
- '𩖶' => '𩖶',
2037
- '飢' => '飢',
2038
- '䬳' => '䬳',
2039
- '餩' => '餩',
2040
- '馧' => '馧',
2041
- '駂' => '駂',
2042
- '駾' => '駾',
2043
- '䯎' => '䯎',
2044
- '𩬰' => '𩬰',
2045
- '鬒' => '鬒',
2046
- '鱀' => '鱀',
2047
- '鳽' => '鳽',
2048
- '䳎' => '䳎',
2049
- '䳭' => '䳭',
2050
- '鵧' => '鵧',
2051
- '𪃎' => '𪃎',
2052
- '䳸' => '䳸',
2053
- '𪄅' => '𪄅',
2054
- '𪈎' => '𪈎',
2055
- '𪊑' => '𪊑',
2056
- '麻' => '麻',
2057
- '䵖' => '䵖',
2058
- '黹' => '黹',
2059
- '黾' => '黾',
2060
- '鼅' => '鼅',
2061
- '鼏' => '鼏',
2062
- '鼖' => '鼖',
2063
- '鼻' => '鼻',
2064
- '𪘀' => '𪘀',
2065
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Resources/unidata/combiningClass.php DELETED
@@ -1,876 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- '̀' => 230,
5
- '́' => 230,
6
- '̂' => 230,
7
- '̃' => 230,
8
- '̄' => 230,
9
- '̅' => 230,
10
- '̆' => 230,
11
- '̇' => 230,
12
- '̈' => 230,
13
- '̉' => 230,
14
- '̊' => 230,
15
- '̋' => 230,
16
- '̌' => 230,
17
- '̍' => 230,
18
- '̎' => 230,
19
- '̏' => 230,
20
- '̐' => 230,
21
- '̑' => 230,
22
- '̒' => 230,
23
- '̓' => 230,
24
- '̔' => 230,
25
- '̕' => 232,
26
- '̖' => 220,
27
- '̗' => 220,
28
- '̘' => 220,
29
- '̙' => 220,
30
- '̚' => 232,
31
- '̛' => 216,
32
- '̜' => 220,
33
- '̝' => 220,
34
- '̞' => 220,
35
- '̟' => 220,
36
- '̠' => 220,
37
- '̡' => 202,
38
- '̢' => 202,
39
- '̣' => 220,
40
- '̤' => 220,
41
- '̥' => 220,
42
- '̦' => 220,
43
- '̧' => 202,
44
- '̨' => 202,
45
- '̩' => 220,
46
- '̪' => 220,
47
- '̫' => 220,
48
- '̬' => 220,
49
- '̭' => 220,
50
- '̮' => 220,
51
- '̯' => 220,
52
- '̰' => 220,
53
- '̱' => 220,
54
- '̲' => 220,
55
- '̳' => 220,
56
- '̴' => 1,
57
- '̵' => 1,
58
- '̶' => 1,
59
- '̷' => 1,
60
- '̸' => 1,
61
- '̹' => 220,
62
- '̺' => 220,
63
- '̻' => 220,
64
- '̼' => 220,
65
- '̽' => 230,
66
- '̾' => 230,
67
- '̿' => 230,
68
- '̀' => 230,
69
- '́' => 230,
70
- '͂' => 230,
71
- '̓' => 230,
72
- '̈́' => 230,
73
- 'ͅ' => 240,
74
- '͆' => 230,
75
- '͇' => 220,
76
- '͈' => 220,
77
- '͉' => 220,
78
- '͊' => 230,
79
- '͋' => 230,
80
- '͌' => 230,
81
- '͍' => 220,
82
- '͎' => 220,
83
- '͐' => 230,
84
- '͑' => 230,
85
- '͒' => 230,
86
- '͓' => 220,
87
- '͔' => 220,
88
- '͕' => 220,
89
- '͖' => 220,
90
- '͗' => 230,
91
- '͘' => 232,
92
- '͙' => 220,
93
- '͚' => 220,
94
- '͛' => 230,
95
- '͜' => 233,
96
- '͝' => 234,
97
- '͞' => 234,
98
- '͟' => 233,
99
- '͠' => 234,
100
- '͡' => 234,
101
- '͢' => 233,
102
- 'ͣ' => 230,
103
- 'ͤ' => 230,
104
- 'ͥ' => 230,
105
- 'ͦ' => 230,
106
- 'ͧ' => 230,
107
- 'ͨ' => 230,
108
- 'ͩ' => 230,
109
- 'ͪ' => 230,
110
- 'ͫ' => 230,
111
- 'ͬ' => 230,
112
- 'ͭ' => 230,
113
- 'ͮ' => 230,
114
- 'ͯ' => 230,
115
- '҃' => 230,
116
- '҄' => 230,
117
- '҅' => 230,
118
- '҆' => 230,
119
- '҇' => 230,
120
- '֑' => 220,
121
- '֒' => 230,
122
- '֓' => 230,
123
- '֔' => 230,
124
- '֕' => 230,
125
- '֖' => 220,
126
- '֗' => 230,
127
- '֘' => 230,
128
- '֙' => 230,
129
- '֚' => 222,
130
- '֛' => 220,
131
- '֜' => 230,
132
- '֝' => 230,
133
- '֞' => 230,
134
- '֟' => 230,
135
- '֠' => 230,
136
- '֡' => 230,
137
- '֢' => 220,
138
- '֣' => 220,
139
- '֤' => 220,
140
- '֥' => 220,
141
- '֦' => 220,
142
- '֧' => 220,
143
- '֨' => 230,
144
- '֩' => 230,
145
- '֪' => 220,
146
- '֫' => 230,
147
- '֬' => 230,
148
- '֭' => 222,
149
- '֮' => 228,
150
- '֯' => 230,
151
- 'ְ' => 10,
152
- 'ֱ' => 11,
153
- 'ֲ' => 12,
154
- 'ֳ' => 13,
155
- 'ִ' => 14,
156
- 'ֵ' => 15,
157
- 'ֶ' => 16,
158
- 'ַ' => 17,
159
- 'ָ' => 18,
160
- 'ֹ' => 19,
161
- 'ֺ' => 19,
162
- 'ֻ' => 20,
163
- 'ּ' => 21,
164
- 'ֽ' => 22,
165
- 'ֿ' => 23,
166
- 'ׁ' => 24,
167
- 'ׂ' => 25,
168
- 'ׄ' => 230,
169
- 'ׅ' => 220,
170
- 'ׇ' => 18,
171
- 'ؐ' => 230,
172
- 'ؑ' => 230,
173
- 'ؒ' => 230,
174
- 'ؓ' => 230,
175
- 'ؔ' => 230,
176
- 'ؕ' => 230,
177
- 'ؖ' => 230,
178
- 'ؗ' => 230,
179
- 'ؘ' => 30,
180
- 'ؙ' => 31,
181
- 'ؚ' => 32,
182
- 'ً' => 27,
183
- 'ٌ' => 28,
184
- 'ٍ' => 29,
185
- 'َ' => 30,
186
- 'ُ' => 31,
187
- 'ِ' => 32,
188
- 'ّ' => 33,
189
- 'ْ' => 34,
190
- 'ٓ' => 230,
191
- 'ٔ' => 230,
192
- 'ٕ' => 220,
193
- 'ٖ' => 220,
194
- 'ٗ' => 230,
195
- '٘' => 230,
196
- 'ٙ' => 230,
197
- 'ٚ' => 230,
198
- 'ٛ' => 230,
199
- 'ٜ' => 220,
200
- 'ٝ' => 230,
201
- 'ٞ' => 230,
202
- 'ٟ' => 220,
203
- 'ٰ' => 35,
204
- 'ۖ' => 230,
205
- 'ۗ' => 230,
206
- 'ۘ' => 230,
207
- 'ۙ' => 230,
208
- 'ۚ' => 230,
209
- 'ۛ' => 230,
210
- 'ۜ' => 230,
211
- '۟' => 230,
212
- '۠' => 230,
213
- 'ۡ' => 230,
214
- 'ۢ' => 230,
215
- 'ۣ' => 220,
216
- 'ۤ' => 230,
217
- 'ۧ' => 230,
218
- 'ۨ' => 230,
219
- '۪' => 220,
220
- '۫' => 230,
221
- '۬' => 230,
222
- 'ۭ' => 220,
223
- 'ܑ' => 36,
224
- 'ܰ' => 230,
225
- 'ܱ' => 220,
226
- 'ܲ' => 230,
227
- 'ܳ' => 230,
228
- 'ܴ' => 220,
229
- 'ܵ' => 230,
230
- 'ܶ' => 230,
231
- 'ܷ' => 220,
232
- 'ܸ' => 220,
233
- 'ܹ' => 220,
234
- 'ܺ' => 230,
235
- 'ܻ' => 220,
236
- 'ܼ' => 220,
237
- 'ܽ' => 230,
238
- 'ܾ' => 220,
239
- 'ܿ' => 230,
240
- '݀' => 230,
241
- '݁' => 230,
242
- '݂' => 220,
243
- '݃' => 230,
244
- '݄' => 220,
245
- '݅' => 230,
246
- '݆' => 220,
247
- '݇' => 230,
248
- '݈' => 220,
249
- '݉' => 230,
250
- '݊' => 230,
251
- '߫' => 230,
252
- '߬' => 230,
253
- '߭' => 230,
254
- '߮' => 230,
255
- '߯' => 230,
256
- '߰' => 230,
257
- '߱' => 230,
258
- '߲' => 220,
259
- '߳' => 230,
260
- '߽' => 220,
261
- 'ࠖ' => 230,
262
- 'ࠗ' => 230,
263
- '࠘' => 230,
264
- '࠙' => 230,
265
- 'ࠛ' => 230,
266
- 'ࠜ' => 230,
267
- 'ࠝ' => 230,
268
- 'ࠞ' => 230,
269
- 'ࠟ' => 230,
270
- 'ࠠ' => 230,
271
- 'ࠡ' => 230,
272
- 'ࠢ' => 230,
273
- 'ࠣ' => 230,
274
- 'ࠥ' => 230,
275
- 'ࠦ' => 230,
276
- 'ࠧ' => 230,
277
- 'ࠩ' => 230,
278
- 'ࠪ' => 230,
279
- 'ࠫ' => 230,
280
- 'ࠬ' => 230,
281
- '࠭' => 230,
282
- '࡙' => 220,
283
- '࡚' => 220,
284
- '࡛' => 220,
285
- '࣓' => 220,
286
- 'ࣔ' => 230,
287
- 'ࣕ' => 230,
288
- 'ࣖ' => 230,
289
- 'ࣗ' => 230,
290
- 'ࣘ' => 230,
291
- 'ࣙ' => 230,
292
- 'ࣚ' => 230,
293
- 'ࣛ' => 230,
294
- 'ࣜ' => 230,
295
- 'ࣝ' => 230,
296
- 'ࣞ' => 230,
297
- 'ࣟ' => 230,
298
- '࣠' => 230,
299
- '࣡' => 230,
300
- 'ࣣ' => 220,
301
- 'ࣤ' => 230,
302
- 'ࣥ' => 230,
303
- 'ࣦ' => 220,
304
- 'ࣧ' => 230,
305
- 'ࣨ' => 230,
306
- 'ࣩ' => 220,
307
- '࣪' => 230,
308
- '࣫' => 230,
309
- '࣬' => 230,
310
- '࣭' => 220,
311
- '࣮' => 220,
312
- '࣯' => 220,
313
- 'ࣰ' => 27,
314
- 'ࣱ' => 28,
315
- 'ࣲ' => 29,
316
- 'ࣳ' => 230,
317
- 'ࣴ' => 230,
318
- 'ࣵ' => 230,
319
- 'ࣶ' => 220,
320
- 'ࣷ' => 230,
321
- 'ࣸ' => 230,
322
- 'ࣹ' => 220,
323
- 'ࣺ' => 220,
324
- 'ࣻ' => 230,
325
- 'ࣼ' => 230,
326
- 'ࣽ' => 230,
327
- 'ࣾ' => 230,
328
- 'ࣿ' => 230,
329
- '़' => 7,
330
- '्' => 9,
331
- '॑' => 230,
332
- '॒' => 220,
333
- '॓' => 230,
334
- '॔' => 230,
335
- '়' => 7,
336
- '্' => 9,
337
- '৾' => 230,
338
- '਼' => 7,
339
- '੍' => 9,
340
- '઼' => 7,
341
- '્' => 9,
342
- '଼' => 7,
343
- '୍' => 9,
344
- '்' => 9,
345
- '్' => 9,
346
- 'ౕ' => 84,
347
- 'ౖ' => 91,
348
- '಼' => 7,
349
- '್' => 9,
350
- '഻' => 9,
351
- '഼' => 9,
352
- '്' => 9,
353
- '්' => 9,
354
- 'ุ' => 103,
355
- 'ู' => 103,
356
- 'ฺ' => 9,
357
- '่' => 107,
358
- '้' => 107,
359
- '๊' => 107,
360
- '๋' => 107,
361
- 'ຸ' => 118,
362
- 'ູ' => 118,
363
- '຺' => 9,
364
- '່' => 122,
365
- '້' => 122,
366
- '໊' => 122,
367
- '໋' => 122,
368
- '༘' => 220,
369
- '༙' => 220,
370
- '༵' => 220,
371
- '༷' => 220,
372
- '༹' => 216,
373
- 'ཱ' => 129,
374
- 'ི' => 130,
375
- 'ུ' => 132,
376
- 'ེ' => 130,
377
- 'ཻ' => 130,
378
- 'ོ' => 130,
379
- 'ཽ' => 130,
380
- 'ྀ' => 130,
381
- 'ྂ' => 230,
382
- 'ྃ' => 230,
383
- '྄' => 9,
384
- '྆' => 230,
385
- '྇' => 230,
386
- '࿆' => 220,
387
- '့' => 7,
388
- '္' => 9,
389
- '်' => 9,
390
- 'ႍ' => 220,
391
- '፝' => 230,
392
- '፞' => 230,
393
- '፟' => 230,
394
- '᜔' => 9,
395
- '᜴' => 9,
396
- '្' => 9,
397
- '៝' => 230,
398
- 'ᢩ' => 228,
399
- '᤹' => 222,
400
- '᤺' => 230,
401
- '᤻' => 220,
402
- 'ᨗ' => 230,
403
- 'ᨘ' => 220,
404
- '᩠' => 9,
405
- '᩵' => 230,
406
- '᩶' => 230,
407
- '᩷' => 230,
408
- '᩸' => 230,
409
- '᩹' => 230,
410
- '᩺' => 230,
411
- '᩻' => 230,
412
- '᩼' => 230,
413
- '᩿' => 220,
414
- '᪰' => 230,
415
- '᪱' => 230,
416
- '᪲' => 230,
417
- '᪳' => 230,
418
- '᪴' => 230,
419
- '᪵' => 220,
420
- '᪶' => 220,
421
- '᪷' => 220,
422
- '᪸' => 220,
423
- '᪹' => 220,
424
- '᪺' => 220,
425
- '᪻' => 230,
426
- '᪼' => 230,
427
- '᪽' => 220,
428
- 'ᪿ' => 220,
429
- 'ᫀ' => 220,
430
- '᬴' => 7,
431
- '᭄' => 9,
432
- '᭫' => 230,
433
- '᭬' => 220,
434
- '᭭' => 230,
435
- '᭮' => 230,
436
- '᭯' => 230,
437
- '᭰' => 230,
438
- '᭱' => 230,
439
- '᭲' => 230,
440
- '᭳' => 230,
441
- '᮪' => 9,
442
- '᮫' => 9,
443
- '᯦' => 7,
444
- '᯲' => 9,
445
- '᯳' => 9,
446
- '᰷' => 7,
447
- '᳐' => 230,
448
- '᳑' => 230,
449
- '᳒' => 230,
450
- '᳔' => 1,
451
- '᳕' => 220,
452
- '᳖' => 220,
453
- '᳗' => 220,
454
- '᳘' => 220,
455
- '᳙' => 220,
456
- '᳚' => 230,
457
- '᳛' => 230,
458
- '᳜' => 220,
459
- '᳝' => 220,
460
- '᳞' => 220,
461
- '᳟' => 220,
462
- '᳠' => 230,
463
- '᳢' => 1,
464
- '᳣' => 1,
465
- '᳤' => 1,
466
- '᳥' => 1,
467
- '᳦' => 1,
468
- '᳧' => 1,
469
- '᳨' => 1,
470
- '᳭' => 220,
471
- '᳴' => 230,
472
- '᳸' => 230,
473
- '᳹' => 230,
474
- '᷀' => 230,
475
- '᷁' => 230,
476
- '᷂' => 220,
477
- '᷃' => 230,
478
- '᷄' => 230,
479
- '᷅' => 230,
480
- '᷆' => 230,
481
- '᷇' => 230,
482
- '᷈' => 230,
483
- '᷉' => 230,
484
- '᷊' => 220,
485
- '᷋' => 230,
486
- '᷌' => 230,
487
- '᷍' => 234,
488
- '᷎' => 214,
489
- '᷏' => 220,
490
- '᷐' => 202,
491
- '᷑' => 230,
492
- '᷒' => 230,
493
- 'ᷓ' => 230,
494
- 'ᷔ' => 230,
495
- 'ᷕ' => 230,
496
- 'ᷖ' => 230,
497
- 'ᷗ' => 230,
498
- 'ᷘ' => 230,
499
- 'ᷙ' => 230,
500
- 'ᷚ' => 230,
501
- 'ᷛ' => 230,
502
- 'ᷜ' => 230,
503
- 'ᷝ' => 230,
504
- 'ᷞ' => 230,
505
- 'ᷟ' => 230,
506
- 'ᷠ' => 230,
507
- 'ᷡ' => 230,
508
- 'ᷢ' => 230,
509
- 'ᷣ' => 230,
510
- 'ᷤ' => 230,
511
- 'ᷥ' => 230,
512
- 'ᷦ' => 230,
513
- 'ᷧ' => 230,
514
- 'ᷨ' => 230,
515
- 'ᷩ' => 230,
516
- 'ᷪ' => 230,
517
- 'ᷫ' => 230,
518
- 'ᷬ' => 230,
519
- 'ᷭ' => 230,
520
- 'ᷮ' => 230,
521
- 'ᷯ' => 230,
522
- 'ᷰ' => 230,
523
- 'ᷱ' => 230,
524
- 'ᷲ' => 230,
525
- 'ᷳ' => 230,
526
- 'ᷴ' => 230,
527
- '᷵' => 230,
528
- '᷶' => 232,
529
- '᷷' => 228,
530
- '᷸' => 228,
531
- '᷹' => 220,
532
- '᷻' => 230,
533
- '᷼' => 233,
534
- '᷽' => 220,
535
- '᷾' => 230,
536
- '᷿' => 220,
537
- '⃐' => 230,
538
- '⃑' => 230,
539
- '⃒' => 1,
540
- '⃓' => 1,
541
- '⃔' => 230,
542
- '⃕' => 230,
543
- '⃖' => 230,
544
- '⃗' => 230,
545
- '⃘' => 1,
546
- '⃙' => 1,
547
- '⃚' => 1,
548
- '⃛' => 230,
549
- '⃜' => 230,
550
- '⃡' => 230,
551
- '⃥' => 1,
552
- '⃦' => 1,
553
- '⃧' => 230,
554
- '⃨' => 220,
555
- '⃩' => 230,
556
- '⃪' => 1,
557
- '⃫' => 1,
558
- '⃬' => 220,
559
- '⃭' => 220,
560
- '⃮' => 220,
561
- '⃯' => 220,
562
- '⃰' => 230,
563
- '⳯' => 230,
564
- '⳰' => 230,
565
- '⳱' => 230,
566
- '⵿' => 9,
567
- 'ⷠ' => 230,
568
- 'ⷡ' => 230,
569
- 'ⷢ' => 230,
570
- 'ⷣ' => 230,
571
- 'ⷤ' => 230,
572
- 'ⷥ' => 230,
573
- 'ⷦ' => 230,
574
- 'ⷧ' => 230,
575
- 'ⷨ' => 230,
576
- 'ⷩ' => 230,
577
- 'ⷪ' => 230,
578
- 'ⷫ' => 230,
579
- 'ⷬ' => 230,
580
- 'ⷭ' => 230,
581
- 'ⷮ' => 230,
582
- 'ⷯ' => 230,
583
- 'ⷰ' => 230,
584
- 'ⷱ' => 230,
585
- 'ⷲ' => 230,
586
- 'ⷳ' => 230,
587
- 'ⷴ' => 230,
588
- 'ⷵ' => 230,
589
- 'ⷶ' => 230,
590
- 'ⷷ' => 230,
591
- 'ⷸ' => 230,
592
- 'ⷹ' => 230,
593
- 'ⷺ' => 230,
594
- 'ⷻ' => 230,
595
- 'ⷼ' => 230,
596
- 'ⷽ' => 230,
597
- 'ⷾ' => 230,
598
- 'ⷿ' => 230,
599
- '〪' => 218,
600
- '〫' => 228,
601
- '〬' => 232,
602
- '〭' => 222,
603
- '〮' => 224,
604
- '〯' => 224,
605
- '゙' => 8,
606
- '゚' => 8,
607
- '꙯' => 230,
608
- 'ꙴ' => 230,
609
- 'ꙵ' => 230,
610
- 'ꙶ' => 230,
611
- 'ꙷ' => 230,
612
- 'ꙸ' => 230,
613
- 'ꙹ' => 230,
614
- 'ꙺ' => 230,
615
- 'ꙻ' => 230,
616
- '꙼' => 230,
617
- '꙽' => 230,
618
- 'ꚞ' => 230,
619
- 'ꚟ' => 230,
620
- '꛰' => 230,
621
- '꛱' => 230,
622
- '꠆' => 9,
623
- '꠬' => 9,
624
- '꣄' => 9,
625
- '꣠' => 230,
626
- '꣡' => 230,
627
- '꣢' => 230,
628
- '꣣' => 230,
629
- '꣤' => 230,
630
- '꣥' => 230,
631
- '꣦' => 230,
632
- '꣧' => 230,
633
- '꣨' => 230,
634
- '꣩' => 230,
635
- '꣪' => 230,
636
- '꣫' => 230,
637
- '꣬' => 230,
638
- '꣭' => 230,
639
- '꣮' => 230,
640
- '꣯' => 230,
641
- '꣰' => 230,
642
- '꣱' => 230,
643
- '꤫' => 220,
644
- '꤬' => 220,
645
- '꤭' => 220,
646
- '꥓' => 9,
647
- '꦳' => 7,
648
- '꧀' => 9,
649
- 'ꪰ' => 230,
650
- 'ꪲ' => 230,
651
- 'ꪳ' => 230,
652
- 'ꪴ' => 220,
653
- 'ꪷ' => 230,
654
- 'ꪸ' => 230,
655
- 'ꪾ' => 230,
656
- '꪿' => 230,
657
- '꫁' => 230,
658
- '꫶' => 9,
659
- '꯭' => 9,
660
- 'ﬞ' => 26,
661
- '︠' => 230,
662
- '︡' => 230,
663
- '︢' => 230,
664
- '︣' => 230,
665
- '︤' => 230,
666
- '︥' => 230,
667
- '︦' => 230,
668
- '︧' => 220,
669
- '︨' => 220,
670
- '︩' => 220,
671
- '︪' => 220,
672
- '︫' => 220,
673
- '︬' => 220,
674
- '︭' => 220,
675
- '︮' => 230,
676
- '︯' => 230,
677
- '𐇽' => 220,
678
- '𐋠' => 220,
679
- '𐍶' => 230,
680
- '𐍷' => 230,
681
- '𐍸' => 230,
682
- '𐍹' => 230,
683
- '𐍺' => 230,
684
- '𐨍' => 220,
685
- '𐨏' => 230,
686
- '𐨸' => 230,
687
- '𐨹' => 1,
688
- '𐨺' => 220,
689
- '𐨿' => 9,
690
- '𐫥' => 230,
691
- '𐫦' => 220,
692
- '𐴤' => 230,
693
- '𐴥' => 230,
694
- '𐴦' => 230,
695
- '𐴧' => 230,
696
- '𐺫' => 230,
697
- '𐺬' => 230,
698
- '𐽆' => 220,
699
- '𐽇' => 220,
700
- '𐽈' => 230,
701
- '𐽉' => 230,
702
- '𐽊' => 230,
703
- '𐽋' => 220,
704
- '𐽌' => 230,
705
- '𐽍' => 220,
706
- '𐽎' => 220,
707
- '𐽏' => 220,
708
- '𐽐' => 220,
709
- '𑁆' => 9,
710
- '𑁿' => 9,
711
- '𑂹' => 9,
712
- '𑂺' => 7,
713
- '𑄀' => 230,
714
- '𑄁' => 230,
715
- '𑄂' => 230,
716
- '𑄳' => 9,
717
- '𑄴' => 9,
718
- '𑅳' => 7,
719
- '𑇀' => 9,
720
- '𑇊' => 7,
721
- '𑈵' => 9,
722
- '𑈶' => 7,
723
- '𑋩' => 7,
724
- '𑋪' => 9,
725
- '𑌻' => 7,
726
- '𑌼' => 7,
727
- '𑍍' => 9,
728
- '𑍦' => 230,
729
- '𑍧' => 230,
730
- '𑍨' => 230,
731
- '𑍩' => 230,
732
- '𑍪' => 230,
733
- '𑍫' => 230,
734
- '𑍬' => 230,
735
- '𑍰' => 230,
736
- '𑍱' => 230,
737
- '𑍲' => 230,
738
- '𑍳' => 230,
739
- '𑍴' => 230,
740
- '𑑂' => 9,
741
- '𑑆' => 7,
742
- '𑑞' => 230,
743
- '𑓂' => 9,
744
- '𑓃' => 7,
745
- '𑖿' => 9,
746
- '𑗀' => 7,
747
- '𑘿' => 9,
748
- '𑚶' => 9,
749
- '𑚷' => 7,
750
- '𑜫' => 9,
751
- '𑠹' => 9,
752
- '𑠺' => 7,
753
- '𑤽' => 9,
754
- '𑤾' => 9,
755
- '𑥃' => 7,
756
- '𑧠' => 9,
757
- '𑨴' => 9,
758
- '𑩇' => 9,
759
- '𑪙' => 9,
760
- '𑰿' => 9,
761
- '𑵂' => 7,
762
- '𑵄' => 9,
763
- '𑵅' => 9,
764
- '𑶗' => 9,
765
- '𖫰' => 1,
766
- '𖫱' => 1,
767
- '𖫲' => 1,
768
- '𖫳' => 1,
769
- '𖫴' => 1,
770
- '𖬰' => 230,
771
- '𖬱' => 230,
772
- '𖬲' => 230,
773
- '𖬳' => 230,
774
- '𖬴' => 230,
775
- '𖬵' => 230,
776
- '𖬶' => 230,
777
- '𖿰' => 6,
778
- '𖿱' => 6,
779
- '𛲞' => 1,
780
- '𝅥' => 216,
781
- '𝅦' => 216,
782
- '𝅧' => 1,
783
- '𝅨' => 1,
784
- '𝅩' => 1,
785
- '𝅭' => 226,
786
- '𝅮' => 216,
787
- '𝅯' => 216,
788
- '𝅰' => 216,
789
- '𝅱' => 216,
790
- '𝅲' => 216,
791
- '𝅻' => 220,
792
- '𝅼' => 220,
793
- '𝅽' => 220,
794
- '𝅾' => 220,
795
- '𝅿' => 220,
796
- '𝆀' => 220,
797
- '𝆁' => 220,
798
- '𝆂' => 220,
799
- '𝆅' => 230,
800
- '𝆆' => 230,
801
- '𝆇' => 230,
802
- '𝆈' => 230,
803
- '𝆉' => 230,
804
- '𝆊' => 220,
805
- '𝆋' => 220,
806
- '𝆪' => 230,
807
- '𝆫' => 230,
808
- '𝆬' => 230,
809
- '𝆭' => 230,
810
- '𝉂' => 230,
811
- '𝉃' => 230,
812
- '𝉄' => 230,
813
- '𞀀' => 230,
814
- '𞀁' => 230,
815
- '𞀂' => 230,
816
- '𞀃' => 230,
817
- '𞀄' => 230,
818
- '𞀅' => 230,
819
- '𞀆' => 230,
820
- '𞀈' => 230,
821
- '𞀉' => 230,
822
- '𞀊' => 230,
823
- '𞀋' => 230,
824
- '𞀌' => 230,
825
- '𞀍' => 230,
826
- '𞀎' => 230,
827
- '𞀏' => 230,
828
- '𞀐' => 230,
829
- '𞀑' => 230,
830
- '𞀒' => 230,
831
- '𞀓' => 230,
832
- '𞀔' => 230,
833
- '𞀕' => 230,
834
- '𞀖' => 230,
835
- '𞀗' => 230,
836
- '𞀘' => 230,
837
- '𞀛' => 230,
838
- '𞀜' => 230,
839
- '𞀝' => 230,
840
- '𞀞' => 230,
841
- '𞀟' => 230,
842
- '𞀠' => 230,
843
- '𞀡' => 230,
844
- '𞀣' => 230,
845
- '𞀤' => 230,
846
- '𞀦' => 230,
847
- '𞀧' => 230,
848
- '𞀨' => 230,
849
- '𞀩' => 230,
850
- '𞀪' => 230,
851
- '𞄰' => 230,
852
- '𞄱' => 230,
853
- '𞄲' => 230,
854
- '𞄳' => 230,
855
- '𞄴' => 230,
856
- '𞄵' => 230,
857
- '𞄶' => 230,
858
- '𞋬' => 230,
859
- '𞋭' => 230,
860
- '𞋮' => 230,
861
- '𞋯' => 230,
862
- '𞣐' => 220,
863
- '𞣑' => 220,
864
- '𞣒' => 220,
865
- '𞣓' => 220,
866
- '𞣔' => 220,
867
- '𞣕' => 220,
868
- '𞣖' => 220,
869
- '𞥄' => 230,
870
- '𞥅' => 230,
871
- '𞥆' => 230,
872
- '𞥇' => 230,
873
- '𞥈' => 230,
874
- '𞥉' => 230,
875
- '𞥊' => 7,
876
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/Resources/unidata/compatibilityDecomposition.php DELETED
@@ -1,3695 +0,0 @@
1
- <?php
2
-
3
- return array (
4
- ' ' => ' ',
5
- '¨' => ' ̈',
6
- 'ª' => 'a',
7
- '¯' => ' ̄',
8
- '²' => '2',
9
- '³' => '3',
10
- '´' => ' ́',
11
- 'µ' => 'μ',
12
- '¸' => ' ̧',
13
- '¹' => '1',
14
- 'º' => 'o',
15
- '¼' => '1⁄4',
16
- '½' => '1⁄2',
17
- '¾' => '3⁄4',
18
- 'IJ' => 'IJ',
19
- 'ij' => 'ij',
20
- 'Ŀ' => 'L·',
21
- 'ŀ' => 'l·',
22
- 'ʼn' => 'ʼn',
23
- 'ſ' => 's',
24
- 'DŽ' => 'DŽ',
25
- 'Dž' => 'Dž',
26
- 'dž' => 'dž',
27
- 'LJ' => 'LJ',
28
- 'Lj' => 'Lj',
29
- 'lj' => 'lj',
30
- 'NJ' => 'NJ',
31
- 'Nj' => 'Nj',
32
- 'nj' => 'nj',
33
- 'DZ' => 'DZ',
34
- 'Dz' => 'Dz',
35
- 'dz' => 'dz',
36
- 'ʰ' => 'h',
37
- 'ʱ' => 'ɦ',
38
- 'ʲ' => 'j',
39
- 'ʳ' => 'r',
40
- 'ʴ' => 'ɹ',
41
- 'ʵ' => 'ɻ',
42
- 'ʶ' => 'ʁ',
43
- 'ʷ' => 'w',
44
- 'ʸ' => 'y',
45
- '˘' => ' ̆',
46
- '˙' => ' ̇',
47
- '˚' => ' ̊',
48
- '˛' => ' ̨',
49
- '˜' => ' ̃',
50
- '˝' => ' ̋',
51
- 'ˠ' => 'ɣ',
52
- 'ˡ' => 'l',
53
- 'ˢ' => 's',
54
- 'ˣ' => 'x',
55
- 'ˤ' => 'ʕ',
56
- 'ͺ' => ' ͅ',
57
- '΄' => ' ́',
58
- '΅' => ' ̈́',
59
- 'ϐ' => 'β',
60
- 'ϑ' => 'θ',
61
- 'ϒ' => 'Υ',
62
- 'ϓ' => 'Ύ',
63
- 'ϔ' => 'Ϋ',
64
- 'ϕ' => 'φ',
65
- 'ϖ' => 'π',
66
- 'ϰ' => 'κ',
67
- 'ϱ' => 'ρ',
68
- 'ϲ' => 'ς',
69
- 'ϴ' => 'Θ',
70
- 'ϵ' => 'ε',
71
- 'Ϲ' => 'Σ',
72
- 'և' => 'եւ',
73
- 'ٵ' => 'اٴ',
74
- 'ٶ' => 'وٴ',
75
- 'ٷ' => 'ۇٴ',
76
- 'ٸ' => 'يٴ',
77
- 'ำ' => 'ํา',
78
- 'ຳ' => 'ໍາ',
79
- 'ໜ' => 'ຫນ',
80
- 'ໝ' => 'ຫມ',
81
- '༌' => '་',
82
- 'ཷ' => 'ྲཱྀ',
83
- 'ཹ' => 'ླཱྀ',
84
- 'ჼ' => 'ნ',
85
- 'ᴬ' => 'A',
86
- 'ᴭ' => 'Æ',
87
- 'ᴮ' => 'B',
88
- 'ᴰ' => 'D',
89
- 'ᴱ' => 'E',
90
- 'ᴲ' => 'Ǝ',
91
- 'ᴳ' => 'G',
92
- 'ᴴ' => 'H',
93
- 'ᴵ' => 'I',
94
- 'ᴶ' => 'J',
95
- 'ᴷ' => 'K',
96
- 'ᴸ' => 'L',
97
- 'ᴹ' => 'M',
98
- 'ᴺ' => 'N',
99
- 'ᴼ' => 'O',
100
- 'ᴽ' => 'Ȣ',
101
- 'ᴾ' => 'P',
102
- 'ᴿ' => 'R',
103
- 'ᵀ' => 'T',
104
- 'ᵁ' => 'U',
105
- 'ᵂ' => 'W',
106
- 'ᵃ' => 'a',
107
- 'ᵄ' => 'ɐ',
108
- 'ᵅ' => 'ɑ',
109
- 'ᵆ' => 'ᴂ',
110
- 'ᵇ' => 'b',
111
- 'ᵈ' => 'd',
112
- 'ᵉ' => 'e',
113
- 'ᵊ' => 'ə',
114
- 'ᵋ' => 'ɛ',
115
- 'ᵌ' => 'ɜ',
116
- 'ᵍ' => 'g',
117
- 'ᵏ' => 'k',
118
- 'ᵐ' => 'm',
119
- 'ᵑ' => 'ŋ',
120
- 'ᵒ' => 'o',
121
- 'ᵓ' => 'ɔ',
122
- 'ᵔ' => 'ᴖ',
123
- 'ᵕ' => 'ᴗ',
124
- 'ᵖ' => 'p',
125
- 'ᵗ' => 't',
126
- 'ᵘ' => 'u',
127
- 'ᵙ' => 'ᴝ',
128
- 'ᵚ' => 'ɯ',
129
- 'ᵛ' => 'v',
130
- 'ᵜ' => 'ᴥ',
131
- 'ᵝ' => 'β',
132
- 'ᵞ' => 'γ',
133
- 'ᵟ' => 'δ',
134
- 'ᵠ' => 'φ',
135
- 'ᵡ' => 'χ',
136
- 'ᵢ' => 'i',
137
- 'ᵣ' => 'r',
138
- 'ᵤ' => 'u',
139
- 'ᵥ' => 'v',
140
- 'ᵦ' => 'β',
141
- 'ᵧ' => 'γ',
142
- 'ᵨ' => 'ρ',
143
- 'ᵩ' => 'φ',
144
- 'ᵪ' => 'χ',
145
- 'ᵸ' => 'н',
146
- 'ᶛ' => 'ɒ',
147
- 'ᶜ' => 'c',
148
- 'ᶝ' => 'ɕ',
149
- 'ᶞ' => 'ð',
150
- 'ᶟ' => 'ɜ',
151
- 'ᶠ' => 'f',
152
- 'ᶡ' => 'ɟ',
153
- 'ᶢ' => 'ɡ',
154
- 'ᶣ' => 'ɥ',
155
- 'ᶤ' => 'ɨ',
156
- 'ᶥ' => 'ɩ',
157
- 'ᶦ' => 'ɪ',
158
- 'ᶧ' => 'ᵻ',
159
- 'ᶨ' => 'ʝ',
160
- 'ᶩ' => 'ɭ',
161
- 'ᶪ' => 'ᶅ',
162
- 'ᶫ' => 'ʟ',
163
- 'ᶬ' => 'ɱ',
164
- 'ᶭ' => 'ɰ',
165
- 'ᶮ' => 'ɲ',
166
- 'ᶯ' => 'ɳ',
167
- 'ᶰ' => 'ɴ',
168
- 'ᶱ' => 'ɵ',
169
- 'ᶲ' => 'ɸ',
170
- 'ᶳ' => 'ʂ',
171
- 'ᶴ' => 'ʃ',
172
- 'ᶵ' => 'ƫ',
173
- 'ᶶ' => 'ʉ',
174
- 'ᶷ' => 'ʊ',
175
- 'ᶸ' => 'ᴜ',
176
- 'ᶹ' => 'ʋ',
177
- 'ᶺ' => 'ʌ',
178
- 'ᶻ' => 'z',
179
- 'ᶼ' => 'ʐ',
180
- 'ᶽ' => 'ʑ',
181
- 'ᶾ' => 'ʒ',
182
- 'ᶿ' => 'θ',
183
- 'ẚ' => 'aʾ',
184
- 'ẛ' => 'ṡ',
185
- '᾽' => ' ̓',
186
- '᾿' => ' ̓',
187
- '῀' => ' ͂',
188
- '῁' => ' ̈͂',
189
- '῍' => ' ̓̀',
190
- '῎' => ' ̓́',
191
- '῏' => ' ̓͂',
192
- '῝' => ' ̔̀',
193
- '῞' => ' ̔́',
194
- '῟' => ' ̔͂',
195
- '῭' => ' ̈̀',
196
- '΅' => ' ̈́',
197
- '´' => ' ́',
198
- '῾' => ' ̔',
199
- ' ' => ' ',
200
- ' ' => ' ',
201
- ' ' => ' ',
202
- ' ' => ' ',
203
- ' ' => ' ',
204
- ' ' => ' ',
205
- ' ' => ' ',
206
- ' ' => ' ',
207
- ' ' => ' ',
208
- ' ' => ' ',
209
- ' ' => ' ',
210
- '‑' => '‐',
211
- '‗' => ' ̳',
212
- '․' => '.',
213
- '‥' => '..',
214
- '…' => '...',
215
- ' ' => ' ',
216
- '″' => '′′',
217
- '‴' => '′′′',
218
- '‶' => '‵‵',
219
- '‷' => '‵‵‵',
220
- '‼' => '!!',
221
- '‾' => ' ̅',
222
- '⁇' => '??',
223
- '⁈' => '?!',
224
- '⁉' => '!?',
225
- '⁗' => '′′′′',
226
- ' ' => ' ',
227
- '⁰' => '0',
228
- 'ⁱ' => 'i',
229
- '⁴' => '4',
230
- '⁵' => '5',
231
- '⁶' => '6',
232
- '⁷' => '7',
233
- '⁸' => '8',
234
- '⁹' => '9',
235
- '⁺' => '+',
236
- '⁻' => '−',
237
- '⁼' => '=',
238
- '⁽' => '(',
239
- '⁾' => ')',
240
- 'ⁿ' => 'n',
241
- '₀' => '0',
242
- '₁' => '1',
243
- '₂' => '2',
244
- '₃' => '3',
245
- '₄' => '4',
246
- '₅' => '5',
247
- '₆' => '6',
248
- '₇' => '7',
249
- '₈' => '8',
250
- '₉' => '9',
251
- '₊' => '+',
252
- '₋' => '−',
253
- '₌' => '=',
254
- '₍' => '(',
255
- '₎' => ')',
256
- 'ₐ' => 'a',
257
- 'ₑ' => 'e',
258
- 'ₒ' => 'o',
259
- 'ₓ' => 'x',
260
- 'ₔ' => 'ə',
261
- 'ₕ' => 'h',
262
- 'ₖ' => 'k',
263
- 'ₗ' => 'l',
264
- 'ₘ' => 'm',
265
- 'ₙ' => 'n',
266
- 'ₚ' => 'p',
267
- 'ₛ' => 's',
268
- 'ₜ' => 't',
269
- '₨' => 'Rs',
270
- '℀' => 'a/c',
271
- '℁' => 'a/s',
272
- 'ℂ' => 'C',
273
- '℃' => '°C',
274
- '℅' => 'c/o',
275
- '℆' => 'c/u',
276
- 'ℇ' => 'Ɛ',
277
- '℉' => '°F',
278
- 'ℊ' => 'g',
279
- 'ℋ' => 'H',
280
- 'ℌ' => 'H',
281
- 'ℍ' => 'H',
282
- 'ℎ' => 'h',
283
- 'ℏ' => 'ħ',
284
- 'ℐ' => 'I',
285
- 'ℑ' => 'I',
286
- 'ℒ' => 'L',
287
- 'ℓ' => 'l',
288
- 'ℕ' => 'N',
289
- '№' => 'No',
290
- 'ℙ' => 'P',
291
- 'ℚ' => 'Q',
292
- 'ℛ' => 'R',
293
- 'ℜ' => 'R',
294
- 'ℝ' => 'R',
295
- '℠' => 'SM',
296
- '℡' => 'TEL',
297
- '™' => 'TM',
298
- 'ℤ' => 'Z',
299
- 'ℨ' => 'Z',
300
- 'ℬ' => 'B',
301
- 'ℭ' => 'C',
302
- 'ℯ' => 'e',
303
- 'ℰ' => 'E',
304
- 'ℱ' => 'F',
305
- 'ℳ' => 'M',
306
- 'ℴ' => 'o',
307
- 'ℵ' => 'א',
308
- 'ℶ' => 'ב',
309
- 'ℷ' => 'ג',
310
- 'ℸ' => 'ד',
311
- 'ℹ' => 'i',
312
- '℻' => 'FAX',
313
- 'ℼ' => 'π',
314
- 'ℽ' => 'γ',
315
- 'ℾ' => 'Γ',
316
- 'ℿ' => 'Π',
317
- '⅀' => '∑',
318
- 'ⅅ' => 'D',
319
- 'ⅆ' => 'd',
320
- 'ⅇ' => 'e',
321
- 'ⅈ' => 'i',
322
- 'ⅉ' => 'j',
323
- '⅐' => '1⁄7',
324
- '⅑' => '1⁄9',
325
- '⅒' => '1⁄10',
326
- '⅓' => '1⁄3',
327
- '⅔' => '2⁄3',
328
- '⅕' => '1⁄5',
329
- '⅖' => '2⁄5',
330
- '⅗' => '3⁄5',
331
- '⅘' => '4⁄5',
332
- '⅙' => '1⁄6',
333
- '⅚' => '5⁄6',
334
- '⅛' => '1⁄8',
335
- '⅜' => '3⁄8',
336
- '⅝' => '5⁄8',
337
- '⅞' => '7⁄8',
338
- '⅟' => '1⁄',
339
- 'Ⅰ' => 'I',
340
- 'Ⅱ' => 'II',
341
- 'Ⅲ' => 'III',
342
- 'Ⅳ' => 'IV',
343
- 'Ⅴ' => 'V',
344
- 'Ⅵ' => 'VI',
345
- 'Ⅶ' => 'VII',
346
- 'Ⅷ' => 'VIII',
347
- 'Ⅸ' => 'IX',
348
- 'Ⅹ' => 'X',
349
- 'Ⅺ' => 'XI',
350
- 'Ⅻ' => 'XII',
351
- 'Ⅼ' => 'L',
352
- 'Ⅽ' => 'C',
353
- 'Ⅾ' => 'D',
354
- 'Ⅿ' => 'M',
355
- 'ⅰ' => 'i',
356
- 'ⅱ' => 'ii',
357
- 'ⅲ' => 'iii',
358
- 'ⅳ' => 'iv',
359
- 'ⅴ' => 'v',
360
- 'ⅵ' => 'vi',
361
- 'ⅶ' => 'vii',
362
- 'ⅷ' => 'viii',
363
- 'ⅸ' => 'ix',
364
- 'ⅹ' => 'x',
365
- 'ⅺ' => 'xi',
366
- 'ⅻ' => 'xii',
367
- 'ⅼ' => 'l',
368
- 'ⅽ' => 'c',
369
- 'ⅾ' => 'd',
370
- 'ⅿ' => 'm',
371
- '↉' => '0⁄3',
372
- '∬' => '∫∫',
373
- '∭' => '∫∫∫',
374
- '∯' => '∮∮',
375
- '∰' => '∮∮∮',
376
- '①' => '1',
377
- '②' => '2',
378
- '③' => '3',
379
- '④' => '4',
380
- '⑤' => '5',
381
- '⑥' => '6',
382
- '⑦' => '7',
383
- '⑧' => '8',
384
- '⑨' => '9',
385
- '⑩' => '10',
386
- '⑪' => '11',
387
- '⑫' => '12',
388
- '⑬' => '13',
389
- '⑭' => '14',
390
- '⑮' => '15',
391
- '⑯' => '16',
392
- '⑰' => '17',
393
- '⑱' => '18',
394
- '⑲' => '19',
395
- '⑳' => '20',
396
- '⑴' => '(1)',
397
- '⑵' => '(2)',
398
- '⑶' => '(3)',
399
- '⑷' => '(4)',
400
- '⑸' => '(5)',
401
- '⑹' => '(6)',
402
- '⑺' => '(7)',
403
- '⑻' => '(8)',
404
- '⑼' => '(9)',
405
- '⑽' => '(10)',
406
- '⑾' => '(11)',
407
- '⑿' => '(12)',
408
- '⒀' => '(13)',
409
- '⒁' => '(14)',
410
- '⒂' => '(15)',
411
- '⒃' => '(16)',
412
- '⒄' => '(17)',
413
- '⒅' => '(18)',
414
- '⒆' => '(19)',
415
- '⒇' => '(20)',
416
- '⒈' => '1.',
417
- '⒉' => '2.',
418
- '⒊' => '3.',
419
- '⒋' => '4.',
420
- '⒌' => '5.',
421
- '⒍' => '6.',
422
- '⒎' => '7.',
423
- '⒏' => '8.',
424
- '⒐' => '9.',
425
- '⒑' => '10.',
426
- '⒒' => '11.',
427
- '⒓' => '12.',
428
- '⒔' => '13.',
429
- '⒕' => '14.',
430
- '⒖' => '15.',
431
- '⒗' => '16.',
432
- '⒘' => '17.',
433
- '⒙' => '18.',
434
- '⒚' => '19.',
435
- '⒛' => '20.',
436
- '⒜' => '(a)',
437
- '⒝' => '(b)',
438
- '⒞' => '(c)',
439
- '⒟' => '(d)',
440
- '⒠' => '(e)',
441
- '⒡' => '(f)',
442
- '⒢' => '(g)',
443
- '⒣' => '(h)',
444
- '⒤' => '(i)',
445
- '⒥' => '(j)',
446
- '⒦' => '(k)',
447
- '⒧' => '(l)',
448
- '⒨' => '(m)',
449
- '⒩' => '(n)',
450
- '⒪' => '(o)',
451
- '⒫' => '(p)',
452
- '⒬' => '(q)',
453
- '⒭' => '(r)',
454
- '⒮' => '(s)',
455
- '⒯' => '(t)',
456
- '⒰' => '(u)',
457
- '⒱' => '(v)',
458
- '⒲' => '(w)',
459
- '⒳' => '(x)',
460
- '⒴' => '(y)',
461
- '⒵' => '(z)',
462
- 'Ⓐ' => 'A',
463
- 'Ⓑ' => 'B',
464
- 'Ⓒ' => 'C',
465
- 'Ⓓ' => 'D',
466
- 'Ⓔ' => 'E',
467
- 'Ⓕ' => 'F',
468
- 'Ⓖ' => 'G',
469
- 'Ⓗ' => 'H',
470
- 'Ⓘ' => 'I',
471
- 'Ⓙ' => 'J',
472
- 'Ⓚ' => 'K',
473
- 'Ⓛ' => 'L',
474
- 'Ⓜ' => 'M',
475
- 'Ⓝ' => 'N',
476
- 'Ⓞ' => 'O',
477
- 'Ⓟ' => 'P',
478
- 'Ⓠ' => 'Q',
479
- 'Ⓡ' => 'R',
480
- 'Ⓢ' => 'S',
481
- 'Ⓣ' => 'T',
482
- 'Ⓤ' => 'U',
483
- 'Ⓥ' => 'V',
484
- 'Ⓦ' => 'W',
485
- 'Ⓧ' => 'X',
486
- 'Ⓨ' => 'Y',
487
- 'Ⓩ' => 'Z',
488
- 'ⓐ' => 'a',
489
- 'ⓑ' => 'b',
490
- 'ⓒ' => 'c',
491
- 'ⓓ' => 'd',
492
- 'ⓔ' => 'e',
493
- 'ⓕ' => 'f',
494
- 'ⓖ' => 'g',
495
- 'ⓗ' => 'h',
496
- 'ⓘ' => 'i',
497
- 'ⓙ' => 'j',
498
- 'ⓚ' => 'k',
499
- 'ⓛ' => 'l',
500
- 'ⓜ' => 'm',
501
- 'ⓝ' => 'n',
502
- 'ⓞ' => 'o',
503
- 'ⓟ' => 'p',
504
- 'ⓠ' => 'q',
505
- 'ⓡ' => 'r',
506
- 'ⓢ' => 's',
507
- 'ⓣ' => 't',
508
- 'ⓤ' => 'u',
509
- 'ⓥ' => 'v',
510
- 'ⓦ' => 'w',
511
- 'ⓧ' => 'x',
512
- 'ⓨ' => 'y',
513
- 'ⓩ' => 'z',
514
- '⓪' => '0',
515
- '⨌' => '∫∫∫∫',
516
- '⩴' => '::=',
517
- '⩵' => '==',
518
- '⩶' => '===',
519
- 'ⱼ' => 'j',
520
- 'ⱽ' => 'V',
521
- 'ⵯ' => 'ⵡ',
522
- '⺟' => '母',
523
- '⻳' => '龟',
524
- '⼀' => '一',
525
- '⼁' => '丨',
526
- '⼂' => '丶',
527
- '⼃' => '丿',
528
- '⼄' => '乙',
529
- '⼅' => '亅',
530
- '⼆' => '二',
531
- '⼇' => '亠',
532
- '⼈' => '人',
533
- '⼉' => '儿',
534
- '⼊' => '入',
535
- '⼋' => '八',
536
- '⼌' => '冂',
537
- '⼍' => '冖',
538
- '⼎' => '冫',
539
- '⼏' => '几',
540
- '⼐' => '凵',
541
- '⼑' => '刀',
542
- '⼒' => '力',
543
- '⼓' => '勹',
544
- '⼔' => '匕',
545
- '⼕' => '匚',
546
- '⼖' => '匸',
547
- '⼗' => '十',
548
- '⼘' => '卜',
549
- '⼙' => '卩',
550
- '⼚' => '厂',
551
- '⼛' => '厶',
552
- '⼜' => '又',
553
- '⼝' => '口',
554
- '⼞' => '囗',
555
- '⼟' => '土',
556
- '⼠' => '士',
557
- '⼡' => '夂',
558
- '⼢' => '夊',
559
- '⼣' => '夕',
560
- '⼤' => '大',
561
- '⼥' => '女',
562
- '⼦' => '子',
563
- '⼧' => '宀',
564
- '⼨' => '寸',
565
- '⼩' => '小',
566
- '⼪' => '尢',
567
- '⼫' => '尸',
568
- '⼬' => '屮',
569
- '⼭' => '山',
570
- '⼮' => '巛',
571
- '⼯' => '工',
572
- '⼰' => '己',
573
- '⼱' => '巾',
574
- '⼲' => '干',
575
- '⼳' => '幺',
576
- '⼴' => '广',
577
- '⼵' => '廴',
578
- '⼶' => '廾',
579
- '⼷' => '弋',
580
- '⼸' => '弓',
581
- '⼹' => '彐',
582
- '⼺' => '彡',
583
- '⼻' => '彳',
584
- '⼼' => '心',
585
- '⼽' => '戈',
586
- '⼾' => '戶',
587
- '⼿' => '手',
588
- '⽀' => '支',
589
- '⽁' => '攴',
590
- '⽂' => '文',
591
- '⽃' => '斗',
592
- '⽄' => '斤',
593
- '⽅' => '方',
594
- '⽆' => '无',
595
- '⽇' => '日',
596
- '⽈' => '曰',
597
- '⽉' => '月',
598
- '⽊' => '木',
599
- '⽋' => '欠',
600
- '⽌' => '止',
601
- '⽍' => '歹',
602
- '⽎' => '殳',
603
- '⽏' => '毋',
604
- '⽐' => '比',
605
- '⽑' => '毛',
606
- '⽒' => '氏',
607
- '⽓' => '气',
608
- '⽔' => '水',
609
- '⽕' => '火',
610
- '⽖' => '爪',
611
- '⽗' => '父',
612
- '⽘' => '爻',
613
- '⽙' => '爿',
614
- '⽚' => '片',
615
- '⽛' => '牙',
616
- '⽜' => '牛',
617
- '⽝' => '犬',
618
- '⽞' => '玄',
619
- '⽟' => '玉',
620
- '⽠' => '瓜',
621
- '⽡' => '瓦',
622
- '⽢' => '甘',
623
- '⽣' => '生',
624
- '⽤' => '用',
625
- '⽥' => '田',
626
- '⽦' => '疋',
627
- '⽧' => '疒',
628
- '⽨' => '癶',
629
- '⽩' => '白',
630
- '⽪' => '皮',
631
- '⽫' => '皿',
632
- '⽬' => '目',
633
- '⽭' => '矛',
634
- '⽮' => '矢',
635
- '⽯' => '石',
636
- '⽰' => '示',
637
- '⽱' => '禸',
638
- '⽲' => '禾',
639
- '⽳' => '穴',
640
- '⽴' => '立',
641
- '⽵' => '竹',
642
- '⽶' => '米',
643
- '⽷' => '糸',
644
- '⽸' => '缶',
645
- '⽹' => '网',
646
- '⽺' => '羊',
647
- '⽻' => '羽',
648
- '⽼' => '老',
649
- '⽽' => '而',
650
- '⽾' => '耒',
651
- '⽿' => '耳',
652
- '⾀' => '聿',
653
- '⾁' => '肉',
654
- '⾂' => '臣',
655
- '⾃' => '自',
656
- '⾄' => '至',
657
- '⾅' => '臼',
658
- '⾆' => '舌',
659
- '⾇' => '舛',
660
- '⾈' => '舟',
661
- '⾉' => '艮',
662
- '⾊' => '色',
663
- '⾋' => '艸',
664
- '⾌' => '虍',
665
- '⾍' => '虫',
666
- '⾎' => '血',
667
- '⾏' => '行',
668
- '⾐' => '衣',
669
- '⾑' => '襾',
670
- '⾒' => '見',
671
- '⾓' => '角',
672
- '⾔' => '言',
673
- '⾕' => '谷',
674
- '⾖' => '豆',
675
- '⾗' => '豕',
676
- '⾘' => '豸',
677
- '⾙' => '貝',
678
- '⾚' => '赤',
679
- '⾛' => '走',
680
- '⾜' => '足',
681
- '⾝' => '身',
682
- '⾞' => '車',
683
- '⾟' => '辛',
684
- '⾠' => '辰',
685
- '⾡' => '辵',
686
- '⾢' => '邑',
687
- '⾣' => '酉',
688
- '⾤' => '釆',
689
- '⾥' => '里',
690
- '⾦' => '金',
691
- '⾧' => '長',
692
- '⾨' => '門',
693
- '⾩' => '阜',
694
- '⾪' => '隶',
695
- '⾫' => '隹',
696
- '⾬' => '雨',
697
- '⾭' => '靑',
698
- '⾮' => '非',
699
- '⾯' => '面',
700
- '⾰' => '革',
701
- '⾱' => '韋',
702
- '⾲' => '韭',
703
- '⾳' => '音',
704
- '⾴' => '頁',
705
- '⾵' => '風',
706
- '⾶' => '飛',
707
- '⾷' => '食',
708
- '⾸' => '首',
709
- '⾹' => '香',
710
- '⾺' => '馬',
711
- '⾻' => '骨',
712
- '⾼' => '高',
713
- '⾽' => '髟',
714
- '⾾' => '鬥',
715
- '⾿' => '鬯',
716
- '⿀' => '鬲',
717
- '⿁' => '鬼',
718
- '⿂' => '魚',
719
- '⿃' => '鳥',
720
- '⿄' => '鹵',
721
- '⿅' => '鹿',
722
- '⿆' => '麥',
723
- '⿇' => '麻',
724
- '⿈' => '黃',
725
- '⿉' => '黍',
726
- '⿊' => '黑',
727
- '⿋' => '黹',
728
- '⿌' => '黽',
729
- '⿍' => '鼎',
730
- '⿎' => '鼓',
731
- '⿏' => '鼠',
732
- '⿐' => '鼻',
733
- '⿑' => '齊',
734
- '⿒' => '齒',
735
- '⿓' => '龍',
736
- '⿔' => '龜',
737
- '⿕' => '龠',
738
- ' ' => ' ',
739
- '〶' => '〒',
740
- '〸' => '十',
741
- '〹' => '卄',
742
- '〺' => '卅',
743
- '゛' => ' ゙',
744
- '゜' => ' ゚',
745
- 'ゟ' => 'より',
746
- 'ヿ' => 'コト',
747
- 'ㄱ' => 'ᄀ',
748
- 'ㄲ' => 'ᄁ',
749
- 'ㄳ' => 'ᆪ',
750
- 'ㄴ' => 'ᄂ',
751
- 'ㄵ' => 'ᆬ',
752
- 'ㄶ' => 'ᆭ',
753
- 'ㄷ' => 'ᄃ',
754
- 'ㄸ' => 'ᄄ',
755
- 'ㄹ' => 'ᄅ',
756
- 'ㄺ' => 'ᆰ',
757
- 'ㄻ' => 'ᆱ',
758
- 'ㄼ' => 'ᆲ',
759
- 'ㄽ' => 'ᆳ',
760
- 'ㄾ' => 'ᆴ',
761
- 'ㄿ' => 'ᆵ',
762
- 'ㅀ' => 'ᄚ',
763
- 'ㅁ' => 'ᄆ',
764
- 'ㅂ' => 'ᄇ',
765
- 'ㅃ' => 'ᄈ',
766
- 'ㅄ' => 'ᄡ',
767
- 'ㅅ' => 'ᄉ',
768
- 'ㅆ' => 'ᄊ',
769
- 'ㅇ' => 'ᄋ',
770
- 'ㅈ' => 'ᄌ',
771
- 'ㅉ' => 'ᄍ',
772
- 'ㅊ' => 'ᄎ',
773
- 'ㅋ' => 'ᄏ',
774
- 'ㅌ' => 'ᄐ',
775
- 'ㅍ' => 'ᄑ',
776
- 'ㅎ' => 'ᄒ',
777
- 'ㅏ' => 'ᅡ',
778
- 'ㅐ' => 'ᅢ',
779
- 'ㅑ' => 'ᅣ',
780
- 'ㅒ' => 'ᅤ',
781
- 'ㅓ' => 'ᅥ',
782
- 'ㅔ' => 'ᅦ',
783
- 'ㅕ' => 'ᅧ',
784
- 'ㅖ' => 'ᅨ',
785
- 'ㅗ' => 'ᅩ',
786
- 'ㅘ' => 'ᅪ',
787
- 'ㅙ' => 'ᅫ',
788
- 'ㅚ' => 'ᅬ',
789
- 'ㅛ' => 'ᅭ',
790
- 'ㅜ' => 'ᅮ',
791
- 'ㅝ' => 'ᅯ',
792
- 'ㅞ' => 'ᅰ',
793
- 'ㅟ' => 'ᅱ',
794
- 'ㅠ' => 'ᅲ',
795
- 'ㅡ' => 'ᅳ',
796
- 'ㅢ' => 'ᅴ',
797
- 'ㅣ' => 'ᅵ',
798
- 'ㅤ' => 'ᅠ',
799
- 'ㅥ' => 'ᄔ',
800
- 'ㅦ' => 'ᄕ',
801
- 'ㅧ' => 'ᇇ',
802
- 'ㅨ' => 'ᇈ',
803
- 'ㅩ' => 'ᇌ',
804
- 'ㅪ' => 'ᇎ',
805
- 'ㅫ' => 'ᇓ',
806
- 'ㅬ' => 'ᇗ',
807
- 'ㅭ' => 'ᇙ',
808
- 'ㅮ' => 'ᄜ',
809
- 'ㅯ' => 'ᇝ',
810
- 'ㅰ' => 'ᇟ',
811
- 'ㅱ' => 'ᄝ',
812
- 'ㅲ' => 'ᄞ',
813
- 'ㅳ' => 'ᄠ',
814
- 'ㅴ' => 'ᄢ',
815
- 'ㅵ' => 'ᄣ',
816
- 'ㅶ' => 'ᄧ',
817
- 'ㅷ' => 'ᄩ',
818
- 'ㅸ' => 'ᄫ',
819
- 'ㅹ' => 'ᄬ',
820
- 'ㅺ' => 'ᄭ',
821
- 'ㅻ' => 'ᄮ',
822
- 'ㅼ' => 'ᄯ',
823
- 'ㅽ' => 'ᄲ',
824
- 'ㅾ' => 'ᄶ',
825
- 'ㅿ' => 'ᅀ',
826
- 'ㆀ' => 'ᅇ',
827
- 'ㆁ' => 'ᅌ',
828
- 'ㆂ' => 'ᇱ',
829
- 'ㆃ' => 'ᇲ',
830
- 'ㆄ' => 'ᅗ',
831
- 'ㆅ' => 'ᅘ',
832
- 'ㆆ' => 'ᅙ',
833
- 'ㆇ' => 'ᆄ',
834
- 'ㆈ' => 'ᆅ',
835
- 'ㆉ' => 'ᆈ',
836
- 'ㆊ' => 'ᆑ',
837
- 'ㆋ' => 'ᆒ',
838
- 'ㆌ' => 'ᆔ',
839
- 'ㆍ' => 'ᆞ',
840
- 'ㆎ' => 'ᆡ',
841
- '㆒' => '一',
842
- '㆓' => '二',
843
- '㆔' => '三',
844
- '㆕' => '四',
845
- '㆖' => '上',
846
- '㆗' => '中',
847
- '㆘' => '下',
848
- '㆙' => '甲',
849
- '㆚' => '乙',
850
- '㆛' => '丙',
851
- '㆜' => '丁',
852
- '㆝' => '天',
853
- '㆞' => '地',
854
- '㆟' => '人',
855
- '㈀' => '(ᄀ)',
856
- '㈁' => '(ᄂ)',
857
- '㈂' => '(ᄃ)',
858
- '㈃' => '(ᄅ)',
859
- '㈄' => '(ᄆ)',
860
- '㈅' => '(ᄇ)',
861
- '㈆' => '(ᄉ)',
862
- '㈇' => '(ᄋ)',
863
- '㈈' => '(ᄌ)',
864
- '㈉' => '(ᄎ)',
865
- '㈊' => '(ᄏ)',
866
- '㈋' => '(ᄐ)',
867
- '㈌' => '(ᄑ)',
868
- '㈍' => '(ᄒ)',
869
- '㈎' => '(가)',
870
- '㈏' => '(나)',
871
- '㈐' => '(다)',
872
- '㈑' => '(라)',
873
- '㈒' => '(마)',
874
- '㈓' => '(바)',
875
- '㈔' => '(사)',
876
- '㈕' => '(아)',
877
- '㈖' => '(자)',
878
- '㈗' => '(차)',
879
- '㈘' => '(카)',
880
- '㈙' => '(타)',
881
- '㈚' => '(파)',
882
- '㈛' => '(하)',
883
- '㈜' => '(주)',
884
- '㈝' => '(오전)',
885
- '㈞' => '(오후)',
886
- '㈠' => '(一)',
887
- '㈡' => '(二)',
888
- '㈢' => '(三)',
889
- '㈣' => '(四)',
890
- '㈤' => '(五)',
891
- '㈥' => '(六)',
892
- '㈦' => '(七)',
893
- '㈧' => '(八)',
894
- '㈨' => '(九)',
895
- '㈩' => '(十)',
896
- '㈪' => '(月)',
897
- '㈫' => '(火)',
898
- '㈬' => '(水)',
899
- '㈭' => '(木)',
900
- '㈮' => '(金)',
901
- '㈯' => '(土)',
902
- '㈰' => '(日)',
903
- '㈱' => '(株)',
904
- '㈲' => '(有)',
905
- '㈳' => '(社)',
906
- '㈴' => '(名)',
907
- '㈵' => '(特)',
908
- '㈶' => '(財)',
909
- '㈷' => '(祝)',
910
- '㈸' => '(労)',
911
- '㈹' => '(代)',
912
- '㈺' => '(呼)',
913
- '㈻' => '(学)',
914
- '㈼' => '(監)',
915
- '㈽' => '(企)',
916
- '㈾' => '(資)',
917
- '㈿' => '(協)',
918
- '㉀' => '(祭)',
919
- '㉁' => '(休)',
920
- '㉂' => '(自)',
921
- '㉃' => '(至)',
922
- '㉄' => '問',
923
- '㉅' => '幼',
924
- '㉆' => '文',
925
- '㉇' => '箏',
926
- '㉐' => 'PTE',
927
- '㉑' => '21',
928
- '㉒' => '22',
929
- '㉓' => '23',
930
- '㉔' => '24',
931
- '㉕' => '25',
932
- '㉖' => '26',
933
- '㉗' => '27',
934
- '㉘' => '28',
935
- '㉙' => '29',
936
- '㉚' => '30',
937
- '㉛' => '31',
938
- '㉜' => '32',
939
- '㉝' => '33',
940
- '㉞' => '34',
941
- '㉟' => '35',
942
- '㉠' => 'ᄀ',
943
- '㉡' => 'ᄂ',
944
- '㉢' => 'ᄃ',
945
- '㉣' => 'ᄅ',
946
- '㉤' => 'ᄆ',
947
- '㉥' => 'ᄇ',
948
- '㉦' => 'ᄉ',
949
- '㉧' => 'ᄋ',
950
- '㉨' => 'ᄌ',
951
- '㉩' => 'ᄎ',
952
- '㉪' => 'ᄏ',
953
- '㉫' => 'ᄐ',
954
- '㉬' => 'ᄑ',
955
- '㉭' => 'ᄒ',
956
- '㉮' => '가',
957
- '㉯' => '나',
958
- '㉰' => '다',
959
- '㉱' => '라',
960
- '㉲' => '마',
961
- '㉳' => '바',
962
- '㉴' => '사',
963
- '㉵' => '아',
964
- '㉶' => '자',
965
- '㉷' => '차',
966
- '㉸' => '카',
967
- '㉹' => '타',
968
- '㉺' => '파',
969
- '㉻' => '하',
970
- '㉼' => '참고',
971
- '㉽' => '주의',
972
- '㉾' => '우',
973
- '㊀' => '一',
974
- '㊁' => '二',
975
- '㊂' => '三',
976
- '㊃' => '四',
977
- '㊄' => '五',
978
- '㊅' => '六',
979
- '㊆' => '七',
980
- '㊇' => '八',
981
- '㊈' => '九',
982
- '㊉' => '十',
983
- '㊊' => '月',
984
- '㊋' => '火',
985
- '㊌' => '水',
986
- '㊍' => '木',
987
- '㊎' => '金',
988
- '㊏' => '土',
989
- '㊐' => '日',
990
- '㊑' => '株',
991
- '㊒' => '有',
992
- '㊓' => '社',
993
- '㊔' => '名',
994
- '㊕' => '特',
995
- '㊖' => '財',
996
- '㊗' => '祝',
997
- '㊘' => '労',
998
- '㊙' => '秘',
999
- '㊚' => '男',
1000
- '㊛' => '女',
1001
- '㊜' => '適',
1002
- '㊝' => '優',
1003
- '㊞' => '印',
1004
- '㊟' => '注',
1005
- '㊠' => '項',
1006
- '㊡' => '休',
1007
- '㊢' => '写',
1008
- '㊣' => '正',
1009
- '㊤' => '上',
1010
- '㊥' => '中',
1011
- '㊦' => '下',
1012
- '㊧' => '左',
1013
- '㊨' => '右',
1014
- '㊩' => '医',
1015
- '㊪' => '宗',
1016
- '㊫' => '学',
1017
- '㊬' => '監',
1018
- '㊭' => '企',
1019
- '㊮' => '資',
1020
- '㊯' => '協',
1021
- '㊰' => '夜',
1022
- '㊱' => '36',
1023
- '㊲' => '37',
1024
- '㊳' => '38',
1025
- '㊴' => '39',
1026
- '㊵' => '40',
1027
- '㊶' => '41',
1028
- '㊷' => '42',
1029
- '㊸' => '43',
1030
- '㊹' => '44',
1031
- '㊺' => '45',
1032
- '㊻' => '46',
1033
- '㊼' => '47',
1034
- '㊽' => '48',
1035
- '㊾' => '49',
1036
- '㊿' => '50',
1037
- '㋀' => '1月',
1038
- '㋁' => '2月',
1039
- '㋂' => '3月',
1040
- '㋃' => '4月',
1041
- '㋄' => '5月',
1042
- '㋅' => '6月',
1043
- '㋆' => '7月',
1044
- '㋇' => '8月',
1045
- '㋈' => '9月',
1046
- '㋉' => '10月',
1047
- '㋊' => '11月',
1048
- '㋋' => '12月',
1049
- '㋌' => 'Hg',
1050
- '㋍' => 'erg',
1051
- '㋎' => 'eV',
1052
- '㋏' => 'LTD',
1053
- '㋐' => 'ア',
1054
- '㋑' => 'イ',
1055
- '㋒' => 'ウ',
1056
- '㋓' => 'エ',
1057
- '㋔' => 'オ',
1058
- '㋕' => 'カ',
1059
- '㋖' => 'キ',
1060
- '㋗' => 'ク',
1061
- '㋘' => 'ケ',
1062
- '㋙' => 'コ',
1063
- '㋚' => 'サ',
1064
- '㋛' => 'シ',
1065
- '㋜' => 'ス',
1066
- '㋝' => 'セ',
1067
- '㋞' => 'ソ',
1068
- '㋟' => 'タ',
1069
- '㋠' => 'チ',
1070
- '㋡' => 'ツ',
1071
- '㋢' => 'テ',
1072
- '㋣' => 'ト',
1073
- '㋤' => 'ナ',
1074
- '㋥' => 'ニ',
1075
- '㋦' => 'ヌ',
1076
- '㋧' => 'ネ',
1077
- '㋨' => 'ノ',
1078
- '㋩' => 'ハ',
1079
- '㋪' => 'ヒ',
1080
- '㋫' => 'フ',
1081
- '㋬' => 'ヘ',
1082
- '㋭' => 'ホ',
1083
- '㋮' => 'マ',
1084
- '㋯' => 'ミ',
1085
- '㋰' => 'ム',
1086
- '㋱' => 'メ',
1087
- '㋲' => 'モ',
1088
- '㋳' => 'ヤ',
1089
- '㋴' => 'ユ',
1090
- '㋵' => 'ヨ',
1091
- '㋶' => 'ラ',
1092
- '㋷' => 'リ',
1093
- '㋸' => 'ル',
1094
- '㋹' => 'レ',
1095
- '㋺' => 'ロ',
1096
- '㋻' => 'ワ',
1097
- '㋼' => 'ヰ',
1098
- '㋽' => 'ヱ',
1099
- '㋾' => 'ヲ',
1100
- '㋿' => '令和',
1101
- '㌀' => 'アパート',
1102
- '㌁' => 'アルファ',
1103
- '㌂' => 'アンペア',
1104
- '㌃' => 'アール',
1105
- '㌄' => 'イニング',
1106
- '㌅' => 'インチ',
1107
- '㌆' => 'ウォン',
1108
- '㌇' => 'エスクード',
1109
- '㌈' => 'エーカー',
1110
- '㌉' => 'オンス',
1111
- '㌊' => 'オーム',
1112
- '㌋' => 'カイリ',
1113
- '㌌' => 'カラット',
1114
- '㌍' => 'カロリー',
1115
- '㌎' => 'ガロン',
1116
- '㌏' => 'ガンマ',
1117
- '㌐' => 'ギガ',
1118
- '㌑' => 'ギニー',
1119
- '㌒' => 'キュリー',
1120
- '㌓' => 'ギルダー',
1121
- '㌔' => 'キロ',
1122
- '㌕' => 'キログラム',
1123
- '㌖' => 'キロメートル',
1124
- '㌗' => 'キロワット',
1125
- '㌘' => 'グラム',
1126
- '㌙' => 'グラムトン',
1127
- '㌚' => 'クルゼイロ',
1128
- '㌛' => 'クローネ',
1129
- '㌜' => 'ケース',
1130
- '㌝' => 'コルナ',
1131
- '㌞' => 'コーポ',
1132
- '㌟' => 'サイクル',
1133
- '㌠' => 'サンチーム',
1134
- '㌡' => 'シリング',
1135
- '㌢' => 'センチ',
1136
- '㌣' => 'セント',
1137
- '㌤' => 'ダース',
1138
- '㌥' => 'デシ',
1139
- '㌦' => 'ドル',
1140
- '㌧' => 'トン',
1141
- '㌨' => 'ナノ',
1142
- '㌩' => 'ノット',
1143
- '㌪' => 'ハイツ',
1144
- '㌫' => 'パーセント',
1145
- '㌬' => 'パーツ',
1146
- '㌭' => 'バーレル',
1147
- '㌮' => 'ピアストル',
1148
- '㌯' => 'ピクル',
1149
- '㌰' => 'ピコ',
1150
- '㌱' => 'ビル',
1151
- '㌲' => 'ファラッド',
1152
- '㌳' => 'フィート',
1153
- '㌴' => 'ブッシェル',
1154
- '㌵' => 'フラン',
1155
- '㌶' => 'ヘクタール',
1156
- '㌷' => 'ペソ',
1157
- '㌸' => 'ペニヒ',
1158
- '㌹' => 'ヘルツ',
1159
- '㌺' => 'ペンス',
1160
- '㌻' => 'ページ',
1161
- '㌼' => 'ベータ',
1162
- '㌽' => 'ポイント',
1163
- '㌾' => 'ボルト',
1164
- '㌿' => 'ホン',
1165
- '㍀' => 'ポンド',
1166
- '㍁' => 'ホール',
1167
- '㍂' => 'ホーン',
1168
- '㍃' => 'マイクロ',
1169
- '㍄' => 'マイル',
1170
- '㍅' => 'マッハ',
1171
- '㍆' => 'マルク',
1172
- '㍇' => 'マンション',
1173
- '㍈' => 'ミクロン',
1174
- '㍉' => 'ミリ',
1175
- '㍊' => 'ミリバール',
1176
- '㍋' => 'メガ',
1177
- '㍌' => 'メガトン',
1178
- '㍍' => 'メートル',
1179
- '㍎' => 'ヤード',
1180
- '㍏' => 'ヤール',
1181
- '㍐' => 'ユアン',
1182
- '㍑' => 'リットル',
1183
- '㍒' => 'リラ',
1184
- '㍓' => 'ルピー',
1185
- '㍔' => 'ルーブル',
1186
- '㍕' => 'レム',
1187
- '㍖' => 'レントゲン',
1188
- '㍗' => 'ワット',
1189
- '㍘' => '0点',
1190
- '㍙' => '1点',
1191
- '㍚' => '2点',
1192
- '㍛' => '3点',
1193
- '㍜' => '4点',
1194
- '㍝' => '5点',
1195
- '㍞' => '6点',
1196
- '㍟' => '7点',
1197
- '㍠' => '8点',
1198
- '㍡' => '9点',
1199
- '㍢' => '10点',
1200
- '㍣' => '11点',
1201
- '㍤' => '12点',
1202
- '㍥' => '13点',
1203
- '㍦' => '14点',
1204
- '㍧' => '15点',
1205
- '㍨' => '16点',
1206
- '㍩' => '17点',
1207
- '㍪' => '18点',
1208
- '㍫' => '19点',
1209
- '㍬' => '20点',
1210
- '㍭' => '21点',
1211
- '㍮' => '22点',
1212
- '㍯' => '23点',
1213
- '㍰' => '24点',
1214
- '㍱' => 'hPa',
1215
- '㍲' => 'da',
1216
- '㍳' => 'AU',
1217
- '㍴' => 'bar',
1218
- '㍵' => 'oV',
1219
- '㍶' => 'pc',
1220
- '㍷' => 'dm',
1221
- '㍸' => 'dm2',
1222
- '㍹' => 'dm3',
1223
- '㍺' => 'IU',
1224
- '㍻' => '平成',
1225
- '㍼' => '昭和',
1226
- '㍽' => '大正',
1227
- '㍾' => '明治',
1228
- '㍿' => '株式会社',
1229
- '㎀' => 'pA',
1230
- '㎁' => 'nA',
1231
- '㎂' => 'μA',
1232
- '㎃' => 'mA',
1233
- '㎄' => 'kA',
1234
- '㎅' => 'KB',
1235
- '㎆' => 'MB',
1236
- '㎇' => 'GB',
1237
- '㎈' => 'cal',
1238
- '㎉' => 'kcal',
1239
- '㎊' => 'pF',
1240
- '㎋' => 'nF',
1241
- '㎌' => 'μF',
1242
- '㎍' => 'μg',
1243
- '㎎' => 'mg',
1244
- '㎏' => 'kg',
1245
- '㎐' => 'Hz',
1246
- '㎑' => 'kHz',
1247
- '㎒' => 'MHz',
1248
- '㎓' => 'GHz',
1249
- '㎔' => 'THz',
1250
- '㎕' => 'μl',
1251
- '㎖' => 'ml',
1252
- '㎗' => 'dl',
1253
- '㎘' => 'kl',
1254
- '㎙' => 'fm',
1255
- '㎚' => 'nm',
1256
- '㎛' => 'μm',
1257
- '㎜' => 'mm',
1258
- '㎝' => 'cm',
1259
- '㎞' => 'km',
1260
- '㎟' => 'mm2',
1261
- '㎠' => 'cm2',
1262
- '㎡' => 'm2',
1263
- '㎢' => 'km2',
1264
- '㎣' => 'mm3',
1265
- '㎤' => 'cm3',
1266
- '㎥' => 'm3',
1267
- '㎦' => 'km3',
1268
- '㎧' => 'm∕s',
1269
- '㎨' => 'm∕s2',
1270
- '㎩' => 'Pa',
1271
- '㎪' => 'kPa',
1272
- '㎫' => 'MPa',
1273
- '㎬' => 'GPa',
1274
- '㎭' => 'rad',
1275
- '㎮' => 'rad∕s',
1276
- '㎯' => 'rad∕s2',
1277
- '㎰' => 'ps',
1278
- '㎱' => 'ns',
1279
- '㎲' => 'μs',
1280
- '㎳' => 'ms',
1281
- '㎴' => 'pV',
1282
- '㎵' => 'nV',
1283
- '㎶' => 'μV',
1284
- '㎷' => 'mV',
1285
- '㎸' => 'kV',
1286
- '㎹' => 'MV',
1287
- '㎺' => 'pW',
1288
- '㎻' => 'nW',
1289
- '㎼' => 'μW',
1290
- '㎽' => 'mW',
1291
- '㎾' => 'kW',
1292
- '㎿' => 'MW',
1293
- '㏀' => 'kΩ',
1294
- '㏁' => 'MΩ',
1295
- '㏂' => 'a.m.',
1296
- '㏃' => 'Bq',
1297
- '㏄' => 'cc',
1298
- '㏅' => 'cd',
1299
- '㏆' => 'C∕kg',
1300
- '㏇' => 'Co.',
1301
- '㏈' => 'dB',
1302
- '㏉' => 'Gy',
1303
- '㏊' => 'ha',
1304
- '㏋' => 'HP',
1305
- '㏌' => 'in',
1306
- '㏍' => 'KK',
1307
- '㏎' => 'KM',
1308
- '㏏' => 'kt',
1309
- '㏐' => 'lm',
1310
- '㏑' => 'ln',
1311
- '㏒' => 'log',
1312
- '㏓' => 'lx',
1313
- '㏔' => 'mb',
1314
- '㏕' => 'mil',
1315
- '㏖' => 'mol',
1316
- '㏗' => 'PH',
1317
- '㏘' => 'p.m.',
1318
- '㏙' => 'PPM',
1319
- '㏚' => 'PR',
1320
- '㏛' => 'sr',
1321
- '㏜' => 'Sv',
1322
- '㏝' => 'Wb',
1323
- '㏞' => 'V∕m',
1324
- '㏟' => 'A∕m',
1325
- '㏠' => '1日',
1326
- '㏡' => '2日',
1327
- '㏢' => '3日',
1328
- '㏣' => '4日',
1329
- '㏤' => '5日',
1330
- '㏥' => '6日',
1331
- '㏦' => '7日',
1332
- '㏧' => '8日',
1333
- '㏨' => '9日',
1334
- '㏩' => '10日',
1335
- '㏪' => '11日',
1336
- '㏫' => '12日',
1337
- '㏬' => '13日',
1338
- '㏭' => '14日',
1339
- '㏮' => '15日',
1340
- '㏯' => '16日',
1341
- '㏰' => '17日',
1342
- '㏱' => '18日',
1343
- '㏲' => '19日',
1344
- '㏳' => '20日',
1345
- '㏴' => '21日',
1346
- '㏵' => '22日',
1347
- '㏶' => '23日',
1348
- '㏷' => '24日',
1349
- '㏸' => '25日',
1350
- '㏹' => '26日',
1351
- '㏺' => '27日',
1352
- '㏻' => '28日',
1353
- '㏼' => '29日',
1354
- '㏽' => '30日',
1355
- '㏾' => '31日',
1356
- '㏿' => 'gal',
1357
- 'ꚜ' => 'ъ',
1358
- 'ꚝ' => 'ь',
1359
- 'ꝰ' => 'ꝯ',
1360
- 'ꟸ' => 'Ħ',
1361
- 'ꟹ' => 'œ',
1362
- 'ꭜ' => 'ꜧ',
1363
- 'ꭝ' => 'ꬷ',
1364
- 'ꭞ' => 'ɫ',
1365
- 'ꭟ' => 'ꭒ',
1366
- 'ꭩ' => 'ʍ',
1367
- 'ff' => 'ff',
1368
- 'fi' => 'fi',
1369
- 'fl' => 'fl',
1370
- 'ffi' => 'ffi',
1371
- 'ffl' => 'ffl',
1372
- 'ſt' => 'st',
1373
- 'st' => 'st',
1374
- 'ﬓ' => 'մն',
1375
- 'ﬔ' => 'մե',
1376
- 'ﬕ' => 'մի',
1377
- 'ﬖ' => 'վն',
1378
- 'ﬗ' => 'մխ',
1379
- 'ﬠ' => 'ע',
1380
- 'ﬡ' => 'א',
1381
- 'ﬢ' => 'ד',
1382
- 'ﬣ' => 'ה',
1383
- 'ﬤ' => 'כ',
1384
- 'ﬥ' => 'ל',
1385
- 'ﬦ' => 'ם',
1386
- 'ﬧ' => 'ר',
1387
- 'ﬨ' => 'ת',
1388
- '﬩' => '+',
1389
- 'ﭏ' => 'אל',
1390
- 'ﭐ' => 'ٱ',
1391
- 'ﭑ' => 'ٱ',
1392
- 'ﭒ' => 'ٻ',
1393
- 'ﭓ' => 'ٻ',
1394
- 'ﭔ' => 'ٻ',
1395
- 'ﭕ' => 'ٻ',
1396
- 'ﭖ' => 'پ',
1397
- 'ﭗ' => 'پ',
1398
- 'ﭘ' => 'پ',
1399
- 'ﭙ' => 'پ',
1400
- 'ﭚ' => 'ڀ',
1401
- 'ﭛ' => 'ڀ',
1402
- 'ﭜ' => 'ڀ',
1403
- 'ﭝ' => 'ڀ',
1404
- 'ﭞ' => 'ٺ',
1405
- 'ﭟ' => 'ٺ',
1406
- 'ﭠ' => 'ٺ',
1407
- 'ﭡ' => 'ٺ',
1408
- 'ﭢ' => 'ٿ',
1409
- 'ﭣ' => 'ٿ',
1410
- 'ﭤ' => 'ٿ',
1411
- 'ﭥ' => 'ٿ',
1412
- 'ﭦ' => 'ٹ',
1413
- 'ﭧ' => 'ٹ',
1414
- 'ﭨ' => 'ٹ',
1415
- 'ﭩ' => 'ٹ',
1416
- 'ﭪ' => 'ڤ',
1417
- 'ﭫ' => 'ڤ',
1418
- 'ﭬ' => 'ڤ',
1419
- 'ﭭ' => 'ڤ',
1420
- 'ﭮ' => 'ڦ',
1421
- 'ﭯ' => 'ڦ',
1422
- 'ﭰ' => 'ڦ',
1423
- 'ﭱ' => 'ڦ',
1424
- 'ﭲ' => 'ڄ',
1425
- 'ﭳ' => 'ڄ',
1426
- 'ﭴ' => 'ڄ',
1427
- 'ﭵ' => 'ڄ',
1428
- 'ﭶ' => 'ڃ',
1429
- 'ﭷ' => 'ڃ',
1430
- 'ﭸ' => 'ڃ',
1431
- 'ﭹ' => 'ڃ',
1432
- 'ﭺ' => 'چ',
1433
- 'ﭻ' => 'چ',
1434
- 'ﭼ' => 'چ',
1435
- 'ﭽ' => 'چ',
1436
- 'ﭾ' => 'ڇ',
1437
- 'ﭿ' => 'ڇ',
1438
- 'ﮀ' => 'ڇ',
1439
- 'ﮁ' => 'ڇ',
1440
- 'ﮂ' => 'ڍ',
1441
- 'ﮃ' => 'ڍ',
1442
- 'ﮄ' => 'ڌ',
1443
- 'ﮅ' => 'ڌ',
1444
- 'ﮆ' => 'ڎ',
1445
- 'ﮇ' => 'ڎ',
1446
- 'ﮈ' => 'ڈ',
1447
- 'ﮉ' => 'ڈ',
1448
- 'ﮊ' => 'ژ',
1449
- 'ﮋ' => 'ژ',
1450
- 'ﮌ' => 'ڑ',
1451
- 'ﮍ' => 'ڑ',
1452
- 'ﮎ' => 'ک',
1453
- 'ﮏ' => 'ک',
1454
- 'ﮐ' => 'ک',
1455
- 'ﮑ' => 'ک',
1456
- 'ﮒ' => 'گ',
1457
- 'ﮓ' => 'گ',
1458
- 'ﮔ' => 'گ',
1459
- 'ﮕ' => 'گ',
1460
- 'ﮖ' => 'ڳ',
1461
- 'ﮗ' => 'ڳ',
1462
- 'ﮘ' => 'ڳ',
1463
- 'ﮙ' => 'ڳ',
1464
- 'ﮚ' => 'ڱ',
1465
- 'ﮛ' => 'ڱ',
1466
- 'ﮜ' => 'ڱ',
1467
- 'ﮝ' => 'ڱ',
1468
- 'ﮞ' => 'ں',
1469
- 'ﮟ' => 'ں',
1470
- 'ﮠ' => 'ڻ',
1471
- 'ﮡ' => 'ڻ',
1472
- 'ﮢ' => 'ڻ',
1473
- 'ﮣ' => 'ڻ',
1474
- 'ﮤ' => 'ۀ',
1475
- 'ﮥ' => 'ۀ',
1476
- 'ﮦ' => 'ہ',
1477
- 'ﮧ' => 'ہ',
1478
- 'ﮨ' => 'ہ',
1479
- 'ﮩ' => 'ہ',
1480
- 'ﮪ' => 'ھ',
1481
- 'ﮫ' => 'ھ',
1482
- 'ﮬ' => 'ھ',
1483
- 'ﮭ' => 'ھ',
1484
- 'ﮮ' => 'ے',
1485
- 'ﮯ' => 'ے',
1486
- 'ﮰ' => 'ۓ',
1487
- 'ﮱ' => 'ۓ',
1488
- 'ﯓ' => 'ڭ',
1489
- 'ﯔ' => 'ڭ',
1490
- 'ﯕ' => 'ڭ',
1491
- 'ﯖ' => 'ڭ',
1492
- 'ﯗ' => 'ۇ',
1493
- 'ﯘ' => 'ۇ',
1494
- 'ﯙ' => 'ۆ',
1495
- 'ﯚ' => 'ۆ',
1496
- 'ﯛ' => 'ۈ',
1497
- 'ﯜ' => 'ۈ',
1498
- 'ﯝ' => 'ۇٴ',
1499
- 'ﯞ' => 'ۋ',
1500
- 'ﯟ' => 'ۋ',
1501
- 'ﯠ' => 'ۅ',
1502
- 'ﯡ' => 'ۅ',
1503
- 'ﯢ' => 'ۉ',
1504
- 'ﯣ' => 'ۉ',
1505
- 'ﯤ' => 'ې',
1506
- 'ﯥ' => 'ې',
1507
- 'ﯦ' => 'ې',
1508
- 'ﯧ' => 'ې',
1509
- 'ﯨ' => 'ى',
1510
- 'ﯩ' => 'ى',
1511
- 'ﯪ' => 'ئا',
1512
- 'ﯫ' => 'ئا',
1513
- 'ﯬ' => 'ئە',
1514
- 'ﯭ' => 'ئە',
1515
- 'ﯮ' => 'ئو',
1516
- 'ﯯ' => 'ئو',
1517
- 'ﯰ' => 'ئۇ',
1518
- 'ﯱ' => 'ئۇ',
1519
- 'ﯲ' => 'ئۆ',
1520
- 'ﯳ' => 'ئۆ',
1521
- 'ﯴ' => 'ئۈ',
1522
- 'ﯵ' => 'ئۈ',
1523
- 'ﯶ' => 'ئې',
1524
- 'ﯷ' => 'ئې',
1525
- 'ﯸ' => 'ئې',
1526
- 'ﯹ' => 'ئى',
1527
- 'ﯺ' => 'ئى',
1528
- 'ﯻ' => 'ئى',
1529
- 'ﯼ' => 'ی',
1530
- 'ﯽ' => 'ی',
1531
- 'ﯾ' => 'ی',
1532
- 'ﯿ' => 'ی',
1533
- 'ﰀ' => 'ئج',
1534
- 'ﰁ' => 'ئح',
1535
- 'ﰂ' => 'ئم',
1536
- 'ﰃ' => 'ئى',
1537
- 'ﰄ' => 'ئي',
1538
- 'ﰅ' => 'بج',
1539
- 'ﰆ' => 'بح',
1540
- 'ﰇ' => 'بخ',
1541
- 'ﰈ' => 'بم',
1542
- 'ﰉ' => 'بى',
1543
- 'ﰊ' => 'بي',
1544
- 'ﰋ' => 'تج',
1545
- 'ﰌ' => 'تح',
1546
- 'ﰍ' => 'تخ',
1547
- 'ﰎ' => 'تم',
1548
- 'ﰏ' => 'تى',
1549
- 'ﰐ' => 'تي',
1550
- 'ﰑ' => 'ثج',
1551
- 'ﰒ' => 'ثم',
1552
- 'ﰓ' => 'ثى',
1553
- 'ﰔ' => 'ثي',
1554
- 'ﰕ' => 'جح',
1555
- 'ﰖ' => 'جم',
1556
- 'ﰗ' => 'حج',
1557
- 'ﰘ' => 'حم',
1558
- 'ﰙ' => 'خج',
1559
- 'ﰚ' => 'خح',
1560
- 'ﰛ' => 'خم',
1561
- 'ﰜ' => 'سج',
1562
- 'ﰝ' => 'سح',
1563
- 'ﰞ' => 'سخ',
1564
- 'ﰟ' => 'سم',
1565
- 'ﰠ' => 'صح',
1566
- 'ﰡ' => 'صم',
1567
- 'ﰢ' => 'ضج',
1568
- 'ﰣ' => 'ضح',
1569
- 'ﰤ' => 'ضخ',
1570
- 'ﰥ' => 'ضم',
1571
- 'ﰦ' => 'طح',
1572
- 'ﰧ' => 'طم',
1573
- 'ﰨ' => 'ظم',
1574
- 'ﰩ' => 'عج',
1575
- 'ﰪ' => 'عم',
1576
- 'ﰫ' => 'غج',
1577
- 'ﰬ' => 'غم',
1578
- 'ﰭ' => 'فج',
1579
- 'ﰮ' => 'فح',
1580
- 'ﰯ' => 'فخ',
1581
- 'ﰰ' => 'فم',
1582
- 'ﰱ' => 'فى',
1583
- 'ﰲ' => 'في',
1584
- 'ﰳ' => 'قح',
1585
- 'ﰴ' => 'قم',
1586
- 'ﰵ' => 'قى',
1587
- 'ﰶ' => 'قي',
1588
- 'ﰷ' => 'كا',
1589
- 'ﰸ' => 'كج',
1590
- 'ﰹ' => 'كح',
1591
- 'ﰺ' => 'كخ',
1592
- 'ﰻ' => 'كل',
1593
- 'ﰼ' => 'كم',
1594
- 'ﰽ' => 'كى',
1595
- 'ﰾ' => 'كي',
1596
- 'ﰿ' => 'لج',
1597
- 'ﱀ' => 'لح',
1598
- 'ﱁ' => 'لخ',
1599
- 'ﱂ' => 'لم',
1600
- 'ﱃ' => 'لى',
1601
- 'ﱄ' => 'لي',
1602
- 'ﱅ' => 'مج',
1603
- 'ﱆ' => 'مح',
1604
- 'ﱇ' => 'مخ',
1605
- 'ﱈ' => 'مم',
1606
- 'ﱉ' => 'مى',
1607
- 'ﱊ' => 'مي',
1608
- 'ﱋ' => 'نج',
1609
- 'ﱌ' => 'نح',
1610
- 'ﱍ' => 'نخ',
1611
- 'ﱎ' => 'نم',
1612
- 'ﱏ' => 'نى',
1613
- 'ﱐ' => 'ني',
1614
- 'ﱑ' => 'هج',
1615
- 'ﱒ' => 'هم',
1616
- 'ﱓ' => 'هى',
1617
- 'ﱔ' => 'هي',
1618
- 'ﱕ' => 'يج',
1619
- 'ﱖ' => 'يح',
1620
- 'ﱗ' => 'يخ',
1621
- 'ﱘ' => 'يم',
1622
- 'ﱙ' => 'يى',
1623
- 'ﱚ' => 'يي',
1624
- 'ﱛ' => 'ذٰ',
1625
- 'ﱜ' => 'رٰ',
1626
- 'ﱝ' => 'ىٰ',
1627
- 'ﱞ' => ' ٌّ',
1628
- 'ﱟ' => ' ٍّ',
1629
- 'ﱠ' => ' َّ',
1630
- 'ﱡ' => ' ُّ',
1631
- 'ﱢ' => ' ِّ',
1632
- 'ﱣ' => ' ّٰ',
1633
- 'ﱤ' => 'ئر',
1634
- 'ﱥ' => 'ئز',
1635
- 'ﱦ' => 'ئم',
1636
- 'ﱧ' => 'ئن',
1637
- 'ﱨ' => 'ئى',
1638
- 'ﱩ' => 'ئي',
1639
- 'ﱪ' => 'بر',
1640
- 'ﱫ' => 'بز',
1641
- 'ﱬ' => 'بم',
1642
- 'ﱭ' => 'بن',
1643
- 'ﱮ' => 'بى',
1644
- 'ﱯ' => 'بي',
1645
- 'ﱰ' => 'تر',
1646
- 'ﱱ' => 'تز',
1647
- 'ﱲ' => 'تم',
1648
- 'ﱳ' => 'تن',
1649
- 'ﱴ' => 'تى',
1650
- 'ﱵ' => 'تي',
1651
- 'ﱶ' => 'ثر',
1652
- 'ﱷ' => 'ثز',
1653
- 'ﱸ' => 'ثم',
1654
- 'ﱹ' => 'ثن',
1655
- 'ﱺ' => 'ثى',
1656
- 'ﱻ' => 'ثي',
1657
- 'ﱼ' => 'فى',
1658
- 'ﱽ' => 'في',
1659
- 'ﱾ' => 'قى',
1660
- 'ﱿ' => 'قي',
1661
- 'ﲀ' => 'كا',
1662
- 'ﲁ' => 'كل',
1663
- 'ﲂ' => 'كم',
1664
- 'ﲃ' => 'كى',
1665
- 'ﲄ' => 'كي',
1666
- 'ﲅ' => 'لم',
1667
- 'ﲆ' => 'لى',
1668
- 'ﲇ' => 'لي',
1669
- 'ﲈ' => 'ما',
1670
- 'ﲉ' => 'مم',
1671
- 'ﲊ' => 'نر',
1672
- 'ﲋ' => 'نز',
1673
- 'ﲌ' => 'نم',
1674
- 'ﲍ' => 'نن',
1675
- 'ﲎ' => 'نى',
1676
- 'ﲏ' => 'ني',
1677
- 'ﲐ' => 'ىٰ',
1678
- 'ﲑ' => 'ير',
1679
- 'ﲒ' => 'يز',
1680
- 'ﲓ' => 'يم',
1681
- 'ﲔ' => 'ين',
1682
- 'ﲕ' => 'يى',
1683
- 'ﲖ' => 'يي',
1684
- 'ﲗ' => 'ئج',
1685
- 'ﲘ' => 'ئح',
1686
- 'ﲙ' => 'ئخ',
1687
- 'ﲚ' => 'ئم',
1688
- 'ﲛ' => 'ئه',
1689
- 'ﲜ' => 'بج',
1690
- 'ﲝ' => 'بح',
1691
- 'ﲞ' => 'بخ',
1692
- 'ﲟ' => 'بم',
1693
- 'ﲠ' => 'به',
1694
- 'ﲡ' => 'تج',
1695
- 'ﲢ' => 'تح',
1696
- 'ﲣ' => 'تخ',
1697
- 'ﲤ' => 'تم',
1698
- 'ﲥ' => 'ته',
1699
- 'ﲦ' => 'ثم',
1700
- 'ﲧ' => 'جح',
1701
- 'ﲨ' => 'جم',
1702
- 'ﲩ' => 'حج',
1703
- 'ﲪ' => 'حم',
1704
- 'ﲫ' => 'خج',
1705
- 'ﲬ' => 'خم',
1706
- 'ﲭ' => 'سج',
1707
- 'ﲮ' => 'سح',
1708
- 'ﲯ' => 'سخ',
1709
- 'ﲰ' => 'سم',
1710
- 'ﲱ' => 'صح',
1711
- 'ﲲ' => 'صخ',
1712
- 'ﲳ' => 'صم',
1713
- 'ﲴ' => 'ضج',
1714
- 'ﲵ' => 'ضح',
1715
- 'ﲶ' => 'ضخ',
1716
- 'ﲷ' => 'ضم',
1717
- 'ﲸ' => 'طح',
1718
- 'ﲹ' => 'ظم',
1719
- 'ﲺ' => 'عج',
1720
- 'ﲻ' => 'عم',
1721
- 'ﲼ' => 'غج',
1722
- 'ﲽ' => 'غم',
1723
- 'ﲾ' => 'فج',
1724
- 'ﲿ' => 'فح',
1725
- 'ﳀ' => 'فخ',
1726
- 'ﳁ' => 'فم',
1727
- 'ﳂ' => 'قح',
1728
- 'ﳃ' => 'قم',
1729
- 'ﳄ' => 'كج',
1730
- 'ﳅ' => 'كح',
1731
- 'ﳆ' => 'كخ',
1732
- 'ﳇ' => 'كل',
1733
- 'ﳈ' => 'كم',
1734
- 'ﳉ' => 'لج',
1735
- 'ﳊ' => 'لح',
1736
- 'ﳋ' => 'لخ',
1737
- 'ﳌ' => 'لم',
1738
- 'ﳍ' => 'له',
1739
- 'ﳎ' => 'مج',
1740
- 'ﳏ' => 'مح',
1741
- 'ﳐ' => 'مخ',
1742
- 'ﳑ' => 'مم',
1743
- 'ﳒ' => 'نج',
1744
- 'ﳓ' => 'نح',
1745
- 'ﳔ' => 'نخ',
1746
- 'ﳕ' => 'نم',
1747
- 'ﳖ' => 'نه',
1748
- 'ﳗ' => 'هج',
1749
- 'ﳘ' => 'هم',
1750
- 'ﳙ' => 'هٰ',
1751
- 'ﳚ' => 'يج',
1752
- 'ﳛ' => 'يح',
1753
- 'ﳜ' => 'يخ',
1754
- 'ﳝ' => 'يم',
1755
- 'ﳞ' => 'يه',
1756
- 'ﳟ' => 'ئم',
1757
- 'ﳠ' => 'ئه',
1758
- 'ﳡ' => 'بم',
1759
- 'ﳢ' => 'به',
1760
- 'ﳣ' => 'تم',
1761
- 'ﳤ' => 'ته',
1762
- 'ﳥ' => 'ثم',
1763
- 'ﳦ' => 'ثه',
1764
- 'ﳧ' => 'سم',
1765
- 'ﳨ' => 'سه',
1766
- 'ﳩ' => 'شم',
1767
- 'ﳪ' => 'شه',
1768
- 'ﳫ' => 'كل',
1769
- 'ﳬ' => 'كم',
1770
- 'ﳭ' => 'لم',
1771
- 'ﳮ' => 'نم',
1772
- 'ﳯ' => 'نه',
1773
- 'ﳰ' => 'يم',
1774
- 'ﳱ' => 'يه',
1775
- 'ﳲ' => 'ـَّ',
1776
- 'ﳳ' => 'ـُّ',
1777
- 'ﳴ' => 'ـِّ',
1778
- 'ﳵ' => 'طى',
1779
- 'ﳶ' => 'طي',
1780
- 'ﳷ' => 'عى',
1781
- 'ﳸ' => 'عي',
1782
- 'ﳹ' => 'غى',
1783
- 'ﳺ' => 'غي',
1784
- 'ﳻ' => 'سى',
1785
- 'ﳼ' => 'سي',
1786
- 'ﳽ' => 'شى',
1787
- 'ﳾ' => 'شي',
1788
- 'ﳿ' => 'حى',
1789
- 'ﴀ' => 'حي',
1790
- 'ﴁ' => 'جى',
1791
- 'ﴂ' => 'جي',
1792
- 'ﴃ' => 'خى',
1793
- 'ﴄ' => 'خي',
1794
- 'ﴅ' => 'صى',
1795
- 'ﴆ' => 'صي',
1796
- 'ﴇ' => 'ضى',
1797
- 'ﴈ' => 'ضي',
1798
- 'ﴉ' => 'شج',
1799
- 'ﴊ' => 'شح',
1800
- 'ﴋ' => 'شخ',
1801
- 'ﴌ' => 'شم',
1802
- 'ﴍ' => 'شر',
1803
- 'ﴎ' => 'سر',
1804
- 'ﴏ' => 'صر',
1805
- 'ﴐ' => 'ضر',
1806
- 'ﴑ' => 'طى',
1807
- 'ﴒ' => 'طي',
1808
- 'ﴓ' => 'عى',
1809
- 'ﴔ' => 'عي',
1810
- 'ﴕ' => 'غى',
1811
- 'ﴖ' => 'غي',
1812
- 'ﴗ' => 'سى',
1813
- 'ﴘ' => 'سي',
1814
- 'ﴙ' => 'شى',
1815
- 'ﴚ' => 'شي',
1816
- 'ﴛ' => 'حى',
1817
- 'ﴜ' => 'حي',
1818
- 'ﴝ' => 'جى',
1819
- 'ﴞ' => 'جي',
1820
- 'ﴟ' => 'خى',
1821
- 'ﴠ' => 'خي',
1822
- 'ﴡ' => 'صى',
1823
- 'ﴢ' => 'صي',
1824
- 'ﴣ' => 'ضى',
1825
- 'ﴤ' => 'ضي',
1826
- 'ﴥ' => 'شج',
1827
- 'ﴦ' => 'شح',
1828
- 'ﴧ' => 'شخ',
1829
- 'ﴨ' => 'شم',
1830
- 'ﴩ' => 'شر',
1831
- 'ﴪ' => 'سر',
1832
- 'ﴫ' => 'صر',
1833
- 'ﴬ' => 'ضر',
1834
- 'ﴭ' => 'شج',
1835
- 'ﴮ' => 'شح',
1836
- 'ﴯ' => 'شخ',
1837
- 'ﴰ' => 'شم',
1838
- 'ﴱ' => 'سه',
1839
- 'ﴲ' => 'شه',
1840
- 'ﴳ' => 'طم',
1841
- 'ﴴ' => 'سج',
1842
- 'ﴵ' => 'سح',
1843
- 'ﴶ' => 'سخ',
1844
- 'ﴷ' => 'شج',
1845
- 'ﴸ' => 'شح',
1846
- 'ﴹ' => 'شخ',
1847
- 'ﴺ' => 'طم',
1848
- 'ﴻ' => 'ظم',
1849
- 'ﴼ' => 'اً',
1850
- 'ﴽ' => 'اً',
1851
- 'ﵐ' => 'تجم',
1852
- 'ﵑ' => 'تحج',
1853
- 'ﵒ' => 'تحج',
1854
- 'ﵓ' => 'تحم',
1855
- 'ﵔ' => 'تخم',
1856
- 'ﵕ' => 'تمج',
1857
- 'ﵖ' => 'تمح',
1858
- 'ﵗ' => 'تمخ',
1859
- 'ﵘ' => 'جمح',
1860
- 'ﵙ' => 'جمح',
1861
- 'ﵚ' => 'حمي',
1862
- 'ﵛ' => 'حمى',
1863
- 'ﵜ' => 'سحج',
1864
- 'ﵝ' => 'سجح',
1865
- 'ﵞ' => 'سجى',
1866
- 'ﵟ' => 'سمح',
1867
- 'ﵠ' => 'سمح',
1868
- 'ﵡ' => 'سمج',
1869
- 'ﵢ' => 'سمم',
1870
- 'ﵣ' => 'سمم',
1871
- 'ﵤ' => 'صحح',
1872
- 'ﵥ' => 'صحح',
1873
- 'ﵦ' => 'صمم',
1874
- 'ﵧ' => 'شحم',
1875
- 'ﵨ' => 'شحم',
1876
- 'ﵩ' => 'شجي',
1877
- 'ﵪ' => 'شمخ',
1878
- 'ﵫ' => 'شمخ',
1879
- 'ﵬ' => 'شمم',
1880
- 'ﵭ' => 'شمم',
1881
- 'ﵮ' => 'ضحى',
1882
- 'ﵯ' => 'ضخم',
1883
- 'ﵰ' => 'ضخم',
1884
- 'ﵱ' => 'طمح',
1885
- 'ﵲ' => 'طمح',
1886
- 'ﵳ' => 'طمم',
1887
- 'ﵴ' => 'طمي',
1888
- 'ﵵ' => 'عجم',
1889
- 'ﵶ' => 'عمم',
1890
- 'ﵷ' => 'عمم',
1891
- 'ﵸ' => 'عمى',
1892
- 'ﵹ' => 'غمم',
1893
- 'ﵺ' => 'غمي',
1894
- 'ﵻ' => 'غمى',
1895
- 'ﵼ' => 'فخم',
1896
- 'ﵽ' => 'فخم',
1897
- 'ﵾ' => 'قمح',
1898
- 'ﵿ' => 'قمم',
1899
- 'ﶀ' => 'لحم',
1900
- 'ﶁ' => 'لحي',
1901
- 'ﶂ' => 'لحى',
1902
- 'ﶃ' => 'لجج',
1903
- 'ﶄ' => 'لجج',
1904
- 'ﶅ' => 'لخم',
1905
- 'ﶆ' => 'لخم',
1906
- 'ﶇ' => 'لمح',
1907
- 'ﶈ' => 'لمح',
1908
- 'ﶉ' => 'محج',
1909
- 'ﶊ' => 'محم',
1910
- 'ﶋ' => 'محي',
1911
- 'ﶌ' => 'مجح',
1912
- 'ﶍ' => 'مجم',
1913
- 'ﶎ' => 'مخج',
1914
- 'ﶏ' => 'مخم',
1915
- 'ﶒ' => 'مجخ',
1916
- 'ﶓ' => 'همج',
1917
- 'ﶔ' => 'همم',
1918
- 'ﶕ' => 'نحم',
1919
- 'ﶖ' => 'نحى',
1920
- 'ﶗ' => 'نجم',
1921
- 'ﶘ' => 'نجم',
1922
- 'ﶙ' => 'نجى',
1923
- 'ﶚ' => 'نمي',
1924
- 'ﶛ' => 'نمى',
1925
- 'ﶜ' => 'يمم',
1926
- 'ﶝ' => 'يمم',
1927
- 'ﶞ' => 'بخي',
1928
- 'ﶟ' => 'تجي',
1929
- 'ﶠ' => 'تجى',
1930
- 'ﶡ' => 'تخي',
1931
- 'ﶢ' => 'تخى',
1932
- 'ﶣ' => 'تمي',
1933
- 'ﶤ' => 'تمى',
1934
- 'ﶥ' => 'جمي',
1935
- 'ﶦ' => 'جحى',
1936
- 'ﶧ' => 'جمى',
1937
- 'ﶨ' => 'سخى',
1938
- 'ﶩ' => 'صحي',
1939
- 'ﶪ' => 'شحي',
1940
- 'ﶫ' => 'ضحي',
1941
- 'ﶬ' => 'لجي',
1942
- 'ﶭ' => 'لمي',
1943
- 'ﶮ' => 'يحي',
1944
- 'ﶯ' => 'يجي',
1945
- 'ﶰ' => 'يمي',
1946
- 'ﶱ' => 'ممي',
1947
- 'ﶲ' => 'قمي',
1948
- 'ﶳ' => 'نحي',
1949
- 'ﶴ' => 'قمح',
1950
- 'ﶵ' => 'لحم',
1951
- 'ﶶ' => 'عمي',
1952
- 'ﶷ' => 'كمي',
1953
- 'ﶸ' => 'نجح',
1954
- 'ﶹ' => 'مخي',
1955
- 'ﶺ' => 'لجم',
1956
- 'ﶻ' => 'كمم',
1957
- 'ﶼ' => 'لجم',
1958
- 'ﶽ' => 'نجح',
1959
- 'ﶾ' => 'جحي',
1960
- 'ﶿ' => 'حجي',
1961
- 'ﷀ' => 'مجي',
1962
- 'ﷁ' => 'فمي',
1963
- 'ﷂ' => 'بحي',
1964
- 'ﷃ' => 'كمم',
1965
- 'ﷄ' => 'عجم',
1966
- 'ﷅ' => 'صمم',
1967
- 'ﷆ' => 'سخي',
1968
- 'ﷇ' => 'نجي',
1969
- 'ﷰ' => 'صلے',
1970
- 'ﷱ' => 'قلے',
1971
- 'ﷲ' => 'الله',
1972
- 'ﷳ' => 'اكبر',
1973
- 'ﷴ' => 'محمد',
1974
- 'ﷵ' => 'صلعم',
1975
- 'ﷶ' => 'رسول',
1976
- 'ﷷ' => 'عليه',
1977
- 'ﷸ' => 'وسلم',
1978
- 'ﷹ' => 'صلى',
1979
- 'ﷺ' => 'صلى الله عليه وسلم',
1980
- 'ﷻ' => 'جل جلاله',
1981
- '﷼' => 'ریال',
1982
- '︐' => ',',
1983
- '︑' => '、',
1984
- '︒' => '。',
1985
- '︓' => ':',
1986
- '︔' => ';',
1987
- '︕' => '!',
1988
- '︖' => '?',
1989
- '︗' => '〖',
1990
- '︘' => '〗',
1991
- '︙' => '...',
1992
- '︰' => '..',
1993
- '︱' => '—',
1994
- '︲' => '–',
1995
- '︳' => '_',
1996
- '︴' => '_',
1997
- '︵' => '(',
1998
- '︶' => ')',
1999
- '︷' => '{',
2000
- '︸' => '}',
2001
- '︹' => '〔',
2002
- '︺' => '〕',
2003
- '︻' => '【',
2004
- '︼' => '】',
2005
- '︽' => '《',
2006
- '︾' => '》',
2007
- '︿' => '〈',
2008
- '﹀' => '〉',
2009
- '﹁' => '「',
2010
- '﹂' => '」',
2011
- '﹃' => '『',
2012
- '﹄' => '』',
2013
- '﹇' => '[',
2014
- '﹈' => ']',
2015
- '﹉' => ' ̅',
2016
- '﹊' => ' ̅',
2017
- '﹋' => ' ̅',
2018
- '﹌' => ' ̅',
2019
- '﹍' => '_',
2020
- '﹎' => '_',
2021
- '﹏' => '_',
2022
- '﹐' => ',',
2023
- '﹑' => '、',
2024
- '﹒' => '.',
2025
- '﹔' => ';',
2026
- '﹕' => ':',
2027
- '﹖' => '?',
2028
- '﹗' => '!',
2029
- '﹘' => '—',
2030
- '﹙' => '(',
2031
- '﹚' => ')',
2032
- '﹛' => '{',
2033
- '﹜' => '}',
2034
- '﹝' => '〔',
2035
- '﹞' => '〕',
2036
- '﹟' => '#',
2037
- '﹠' => '&',
2038
- '﹡' => '*',
2039
- '﹢' => '+',
2040
- '﹣' => '-',
2041
- '﹤' => '<',
2042
- '﹥' => '>',
2043
- '﹦' => '=',
2044
- '﹨' => '\\',
2045
- '﹩' => '$',
2046
- '﹪' => '%',
2047
- '﹫' => '@',
2048
- 'ﹰ' => ' ً',
2049
- 'ﹱ' => 'ـً',
2050
- 'ﹲ' => ' ٌ',
2051
- 'ﹴ' => ' ٍ',
2052
- 'ﹶ' => ' َ',
2053
- 'ﹷ' => 'ـَ',
2054
- 'ﹸ' => ' ُ',
2055
- 'ﹹ' => 'ـُ',
2056
- 'ﹺ' => ' ِ',
2057
- 'ﹻ' => 'ـِ',
2058
- 'ﹼ' => ' ّ',
2059
- 'ﹽ' => 'ـّ',
2060
- 'ﹾ' => ' ْ',
2061
- 'ﹿ' => 'ـْ',
2062
- 'ﺀ' => 'ء',
2063
- 'ﺁ' => 'آ',
2064
- 'ﺂ' => 'آ',
2065
- 'ﺃ' => 'أ',
2066
- 'ﺄ' => 'أ',
2067
- 'ﺅ' => 'ؤ',
2068
- 'ﺆ' => 'ؤ',
2069
- 'ﺇ' => 'إ',
2070
- 'ﺈ' => 'إ',
2071
- 'ﺉ' => 'ئ',
2072
- 'ﺊ' => 'ئ',
2073
- 'ﺋ' => 'ئ',
2074
- 'ﺌ' => 'ئ',
2075
- 'ﺍ' => 'ا',
2076
- 'ﺎ' => 'ا',
2077
- 'ﺏ' => 'ب',
2078
- 'ﺐ' => 'ب',
2079
- 'ﺑ' => 'ب',
2080
- 'ﺒ' => 'ب',
2081
- 'ﺓ' => 'ة',
2082
- 'ﺔ' => 'ة',
2083
- 'ﺕ' => 'ت',
2084
- 'ﺖ' => 'ت',
2085
- 'ﺗ' => 'ت',
2086
- 'ﺘ' => 'ت',
2087
- 'ﺙ' => 'ث',
2088
- 'ﺚ' => 'ث',
2089
- 'ﺛ' => 'ث',
2090
- 'ﺜ' => 'ث',
2091
- 'ﺝ' => 'ج',
2092
- 'ﺞ' => 'ج',
2093
- 'ﺟ' => 'ج',
2094
- 'ﺠ' => 'ج',
2095
- 'ﺡ' => 'ح',
2096
- 'ﺢ' => 'ح',
2097
- 'ﺣ' => 'ح',
2098
- 'ﺤ' => 'ح',
2099
- 'ﺥ' => 'خ',
2100
- 'ﺦ' => 'خ',
2101
- 'ﺧ' => 'خ',
2102
- 'ﺨ' => 'خ',
2103
- 'ﺩ' => 'د',
2104
- 'ﺪ' => 'د',
2105
- 'ﺫ' => 'ذ',
2106
- 'ﺬ' => 'ذ',
2107
- 'ﺭ' => 'ر',
2108
- 'ﺮ' => 'ر',
2109
- 'ﺯ' => 'ز',
2110
- 'ﺰ' => 'ز',
2111
- 'ﺱ' => 'س',
2112
- 'ﺲ' => 'س',
2113
- 'ﺳ' => 'س',
2114
- 'ﺴ' => 'س',
2115
- 'ﺵ' => 'ش',
2116
- 'ﺶ' => 'ش',
2117
- 'ﺷ' => 'ش',
2118
- 'ﺸ' => 'ش',
2119
- 'ﺹ' => 'ص',
2120
- 'ﺺ' => 'ص',
2121
- 'ﺻ' => 'ص',
2122
- 'ﺼ' => 'ص',
2123
- 'ﺽ' => 'ض',
2124
- 'ﺾ' => 'ض',
2125
- 'ﺿ' => 'ض',
2126
- 'ﻀ' => 'ض',
2127
- 'ﻁ' => 'ط',
2128
- 'ﻂ' => 'ط',
2129
- 'ﻃ' => 'ط',
2130
- 'ﻄ' => 'ط',
2131
- 'ﻅ' => 'ظ',
2132
- 'ﻆ' => 'ظ',
2133
- 'ﻇ' => 'ظ',
2134
- 'ﻈ' => 'ظ',
2135
- 'ﻉ' => 'ع',
2136
- 'ﻊ' => 'ع',
2137
- 'ﻋ' => 'ع',
2138
- 'ﻌ' => 'ع',
2139
- 'ﻍ' => 'غ',
2140
- 'ﻎ' => 'غ',
2141
- 'ﻏ' => 'غ',
2142
- 'ﻐ' => 'غ',
2143
- 'ﻑ' => 'ف',
2144
- 'ﻒ' => 'ف',
2145
- 'ﻓ' => 'ف',
2146
- 'ﻔ' => 'ف',
2147
- 'ﻕ' => 'ق',
2148
- 'ﻖ' => 'ق',
2149
- 'ﻗ' => 'ق',
2150
- 'ﻘ' => 'ق',
2151
- 'ﻙ' => 'ك',
2152
- 'ﻚ' => 'ك',
2153
- 'ﻛ' => 'ك',
2154
- 'ﻜ' => 'ك',
2155
- 'ﻝ' => 'ل',
2156
- 'ﻞ' => 'ل',
2157
- 'ﻟ' => 'ل',
2158
- 'ﻠ' => 'ل',
2159
- 'ﻡ' => 'م',
2160
- 'ﻢ' => 'م',
2161
- 'ﻣ' => 'م',
2162
- 'ﻤ' => 'م',
2163
- 'ﻥ' => 'ن',
2164
- 'ﻦ' => 'ن',
2165
- 'ﻧ' => 'ن',
2166
- 'ﻨ' => 'ن',
2167
- 'ﻩ' => 'ه',
2168
- 'ﻪ' => 'ه',
2169
- 'ﻫ' => 'ه',
2170
- 'ﻬ' => 'ه',
2171
- 'ﻭ' => 'و',
2172
- 'ﻮ' => 'و',
2173
- 'ﻯ' => 'ى',
2174
- 'ﻰ' => 'ى',
2175
- 'ﻱ' => 'ي',
2176
- 'ﻲ' => 'ي',
2177
- 'ﻳ' => 'ي',
2178
- 'ﻴ' => 'ي',
2179
- 'ﻵ' => 'لآ',
2180
- 'ﻶ' => 'لآ',
2181
- 'ﻷ' => 'لأ',
2182
- 'ﻸ' => 'لأ',
2183
- 'ﻹ' => 'لإ',
2184
- 'ﻺ' => 'لإ',
2185
- 'ﻻ' => 'لا',
2186
- 'ﻼ' => 'لا',
2187
- '!' => '!',
2188
- '"' => '"',
2189
- '#' => '#',
2190
- '$' => '$',
2191
- '%' => '%',
2192
- '&' => '&',
2193
- ''' => '\'',
2194
- '(' => '(',
2195
- ')' => ')',
2196
- '*' => '*',
2197
- '+' => '+',
2198
- ',' => ',',
2199
- '-' => '-',
2200
- '.' => '.',
2201
- '/' => '/',
2202
- '0' => '0',
2203
- '1' => '1',
2204
- '2' => '2',
2205
- '3' => '3',
2206
- '4' => '4',
2207
- '5' => '5',
2208
- '6' => '6',
2209
- '7' => '7',
2210
- '8' => '8',
2211
- '9' => '9',
2212
- ':' => ':',
2213
- ';' => ';',
2214
- '<' => '<',
2215
- '=' => '=',
2216
- '>' => '>',
2217
- '?' => '?',
2218
- '@' => '@',
2219
- 'A' => 'A',
2220
- 'B' => 'B',
2221
- 'C' => 'C',
2222
- 'D' => 'D',
2223
- 'E' => 'E',
2224
- 'F' => 'F',
2225
- 'G' => 'G',
2226
- 'H' => 'H',
2227
- 'I' => 'I',
2228
- 'J' => 'J',
2229
- 'K' => 'K',
2230
- 'L' => 'L',
2231
- 'M' => 'M',
2232
- 'N' => 'N',
2233
- 'O' => 'O',
2234
- 'P' => 'P',
2235
- 'Q' => 'Q',
2236
- 'R' => 'R',
2237
- 'S' => 'S',
2238
- 'T' => 'T',
2239
- 'U' => 'U',
2240
- 'V' => 'V',
2241
- 'W' => 'W',
2242
- 'X' => 'X',
2243
- 'Y' => 'Y',
2244
- 'Z' => 'Z',
2245
- '[' => '[',
2246
- '\' => '\\',
2247
- ']' => ']',
2248
- '^' => '^',
2249
- '_' => '_',
2250
- '`' => '`',
2251
- 'a' => 'a',
2252
- 'b' => 'b',
2253
- 'c' => 'c',
2254
- 'd' => 'd',
2255
- 'e' => 'e',
2256
- 'f' => 'f',
2257
- 'g' => 'g',
2258
- 'h' => 'h',
2259
- 'i' => 'i',
2260
- 'j' => 'j',
2261
- 'k' => 'k',
2262
- 'l' => 'l',
2263
- 'm' => 'm',
2264
- 'n' => 'n',
2265
- 'o' => 'o',
2266
- 'p' => 'p',
2267
- 'q' => 'q',
2268
- 'r' => 'r',
2269
- 's' => 's',
2270
- 't' => 't',
2271
- 'u' => 'u',
2272
- 'v' => 'v',
2273
- 'w' => 'w',
2274
- 'x' => 'x',
2275
- 'y' => 'y',
2276
- 'z' => 'z',
2277
- '{' => '{',
2278
- '|' => '|',
2279
- '}' => '}',
2280
- '~' => '~',
2281
- '⦅' => '⦅',
2282
- '⦆' => '⦆',
2283
- '。' => '。',
2284
- '「' => '「',
2285
- '」' => '」',
2286
- '、' => '、',
2287
- '・' => '・',
2288
- 'ヲ' => 'ヲ',
2289
- 'ァ' => 'ァ',
2290
- 'ィ' => 'ィ',
2291
- 'ゥ' => 'ゥ',
2292
- 'ェ' => 'ェ',
2293
- 'ォ' => 'ォ',
2294
- 'ャ' => 'ャ',
2295
- 'ュ' => 'ュ',
2296
- 'ョ' => 'ョ',
2297
- 'ッ' => 'ッ',
2298
- 'ー' => 'ー',
2299
- 'ア' => 'ア',
2300
- 'イ' => 'イ',
2301
- 'ウ' => 'ウ',
2302
- 'エ' => 'エ',
2303
- 'オ' => 'オ',
2304
- 'カ' => 'カ',
2305
- 'キ' => 'キ',
2306
- 'ク' => 'ク',
2307
- 'ケ' => 'ケ',
2308
- 'コ' => 'コ',
2309
- 'サ' => 'サ',
2310
- 'シ' => 'シ',
2311
- 'ス' => 'ス',
2312
- 'セ' => 'セ',
2313
- 'ソ' => 'ソ',
2314
- 'タ' => 'タ',
2315
- 'チ' => 'チ',
2316
- 'ツ' => 'ツ',
2317
- 'テ' => 'テ',
2318
- 'ト' => 'ト',
2319
- 'ナ' => 'ナ',
2320
- 'ニ' => 'ニ',
2321
- 'ヌ' => 'ヌ',
2322
- 'ネ' => 'ネ',
2323
- 'ノ' => 'ノ',
2324
- 'ハ' => 'ハ',
2325
- 'ヒ' => 'ヒ',
2326
- 'フ' => 'フ',
2327
- 'ヘ' => 'ヘ',
2328
- 'ホ' => 'ホ',
2329
- 'マ' => 'マ',
2330
- 'ミ' => 'ミ',
2331
- 'ム' => 'ム',
2332
- 'メ' => 'メ',
2333
- 'モ' => 'モ',
2334
- 'ヤ' => 'ヤ',
2335
- 'ユ' => 'ユ',
2336
- 'ヨ' => 'ヨ',
2337
- 'ラ' => 'ラ',
2338
- 'リ' => 'リ',
2339
- 'ル' => 'ル',
2340
- 'レ' => 'レ',
2341
- 'ロ' => 'ロ',
2342
- 'ワ' => 'ワ',
2343
- 'ン' => 'ン',
2344
- '゙' => '゙',
2345
- '゚' => '゚',
2346
- 'ᅠ' => 'ᅠ',
2347
- 'ᄀ' => 'ᄀ',
2348
- 'ᄁ' => 'ᄁ',
2349
- 'ᆪ' => 'ᆪ',
2350
- 'ᄂ' => 'ᄂ',
2351
- 'ᆬ' => 'ᆬ',
2352
- 'ᆭ' => 'ᆭ',
2353
- 'ᄃ' => 'ᄃ',
2354
- 'ᄄ' => 'ᄄ',
2355
- 'ᄅ' => 'ᄅ',
2356
- 'ᆰ' => 'ᆰ',
2357
- 'ᆱ' => 'ᆱ',
2358
- 'ᆲ' => 'ᆲ',
2359
- 'ᆳ' => 'ᆳ',
2360
- 'ᆴ' => 'ᆴ',
2361
- 'ᆵ' => 'ᆵ',
2362
- 'ᄚ' => 'ᄚ',
2363
- 'ᄆ' => 'ᄆ',
2364
- 'ᄇ' => 'ᄇ',
2365
- 'ᄈ' => 'ᄈ',
2366
- 'ᄡ' => 'ᄡ',
2367
- 'ᄉ' => 'ᄉ',
2368
- 'ᄊ' => 'ᄊ',
2369
- 'ᄋ' => 'ᄋ',
2370
- 'ᄌ' => 'ᄌ',
2371
- 'ᄍ' => 'ᄍ',
2372
- 'ᄎ' => 'ᄎ',
2373
- 'ᄏ' => 'ᄏ',
2374
- 'ᄐ' => 'ᄐ',
2375
- 'ᄑ' => 'ᄑ',
2376
- 'ᄒ' => 'ᄒ',
2377
- 'ᅡ' => 'ᅡ',
2378
- 'ᅢ' => 'ᅢ',
2379
- 'ᅣ' => 'ᅣ',
2380
- 'ᅤ' => 'ᅤ',
2381
- 'ᅥ' => 'ᅥ',
2382
- 'ᅦ' => 'ᅦ',
2383
- 'ᅧ' => 'ᅧ',
2384
- 'ᅨ' => 'ᅨ',
2385
- 'ᅩ' => 'ᅩ',
2386
- 'ᅪ' => 'ᅪ',
2387
- 'ᅫ' => 'ᅫ',
2388
- 'ᅬ' => 'ᅬ',
2389
- 'ᅭ' => 'ᅭ',
2390
- 'ᅮ' => 'ᅮ',
2391
- 'ᅯ' => 'ᅯ',
2392
- 'ᅰ' => 'ᅰ',
2393
- 'ᅱ' => 'ᅱ',
2394
- 'ᅲ' => 'ᅲ',
2395
- 'ᅳ' => 'ᅳ',
2396
- 'ᅴ' => 'ᅴ',
2397
- 'ᅵ' => 'ᅵ',
2398
- '¢' => '¢',
2399
- '£' => '£',
2400
- '¬' => '¬',
2401
- ' ̄' => ' ̄',
2402
- '¦' => '¦',
2403
- '¥' => '¥',
2404
- '₩' => '₩',
2405
- '│' => '│',
2406
- '←' => '←',
2407
- '↑' => '↑',
2408
- '→' => '→',
2409
- '↓' => '↓',
2410
- '■' => '■',
2411
- '○' => '○',
2412
- '𝐀' => 'A',
2413
- '𝐁' => 'B',
2414
- '𝐂' => 'C',
2415
- '𝐃' => 'D',
2416
- '𝐄' => 'E',
2417
- '𝐅' => 'F',
2418
- '𝐆' => 'G',
2419
- '𝐇' => 'H',
2420
- '𝐈' => 'I',
2421
- '𝐉' => 'J',
2422
- '𝐊' => 'K',
2423
- '𝐋' => 'L',
2424
- '𝐌' => 'M',
2425
- '𝐍' => 'N',
2426
- '𝐎' => 'O',
2427
- '𝐏' => 'P',
2428
- '𝐐' => 'Q',
2429
- '𝐑' => 'R',
2430
- '𝐒' => 'S',
2431
- '𝐓' => 'T',
2432
- '𝐔' => 'U',
2433
- '𝐕' => 'V',
2434
- '𝐖' => 'W',
2435
- '𝐗' => 'X',
2436
- '𝐘' => 'Y',
2437
- '𝐙' => 'Z',
2438
- '𝐚' => 'a',
2439
- '𝐛' => 'b',
2440
- '𝐜' => 'c',
2441
- '𝐝' => 'd',
2442
- '𝐞' => 'e',
2443
- '𝐟' => 'f',
2444
- '𝐠' => 'g',
2445
- '𝐡' => 'h',
2446
- '𝐢' => 'i',
2447
- '𝐣' => 'j',
2448
- '𝐤' => 'k',
2449
- '𝐥' => 'l',
2450
- '𝐦' => 'm',
2451
- '𝐧' => 'n',
2452
- '𝐨' => 'o',
2453
- '𝐩' => 'p',
2454
- '𝐪' => 'q',
2455
- '𝐫' => 'r',
2456
- '𝐬' => 's',
2457
- '𝐭' => 't',
2458
- '𝐮' => 'u',
2459
- '𝐯' => 'v',
2460
- '𝐰' => 'w',
2461
- '𝐱' => 'x',
2462
- '𝐲' => 'y',
2463
- '𝐳' => 'z',
2464
- '𝐴' => 'A',
2465
- '𝐵' => 'B',
2466
- '𝐶' => 'C',
2467
- '𝐷' => 'D',
2468
- '𝐸' => 'E',
2469
- '𝐹' => 'F',
2470
- '𝐺' => 'G',
2471
- '𝐻' => 'H',
2472
- '𝐼' => 'I',
2473
- '𝐽' => 'J',
2474
- '𝐾' => 'K',
2475
- '𝐿' => 'L',
2476
- '𝑀' => 'M',
2477
- '𝑁' => 'N',
2478
- '𝑂' => 'O',
2479
- '𝑃' => 'P',
2480
- '𝑄' => 'Q',
2481
- '𝑅' => 'R',
2482
- '𝑆' => 'S',
2483
- '𝑇' => 'T',
2484
- '𝑈' => 'U',
2485
- '𝑉' => 'V',
2486
- '𝑊' => 'W',
2487
- '𝑋' => 'X',
2488
- '𝑌' => 'Y',
2489
- '𝑍' => 'Z',
2490
- '𝑎' => 'a',
2491
- '𝑏' => 'b',
2492
- '𝑐' => 'c',
2493
- '𝑑' => 'd',
2494
- '𝑒' => 'e',
2495
- '𝑓' => 'f',
2496
- '𝑔' => 'g',
2497
- '𝑖' => 'i',
2498
- '𝑗' => 'j',
2499
- '𝑘' => 'k',
2500
- '𝑙' => 'l',
2501
- '𝑚' => 'm',
2502
- '𝑛' => 'n',
2503
- '𝑜' => 'o',
2504
- '𝑝' => 'p',
2505
- '𝑞' => 'q',
2506
- '𝑟' => 'r',
2507
- '𝑠' => 's',
2508
- '𝑡' => 't',
2509
- '𝑢' => 'u',
2510
- '𝑣' => 'v',
2511
- '𝑤' => 'w',
2512
- '𝑥' => 'x',
2513
- '𝑦' => 'y',
2514
- '𝑧' => 'z',
2515
- '𝑨' => 'A',
2516
- '𝑩' => 'B',
2517
- '𝑪' => 'C',
2518
- '𝑫' => 'D',
2519
- '𝑬' => 'E',
2520
- '𝑭' => 'F',
2521
- '𝑮' => 'G',
2522
- '𝑯' => 'H',
2523
- '𝑰' => 'I',
2524
- '𝑱' => 'J',
2525
- '𝑲' => 'K',
2526
- '𝑳' => 'L',
2527
- '𝑴' => 'M',
2528
- '𝑵' => 'N',
2529
- '𝑶' => 'O',
2530
- '𝑷' => 'P',
2531
- '𝑸' => 'Q',
2532
- '𝑹' => 'R',
2533
- '𝑺' => 'S',
2534
- '𝑻' => 'T',
2535
- '𝑼' => 'U',
2536
- '𝑽' => 'V',
2537
- '𝑾' => 'W',
2538
- '𝑿' => 'X',
2539
- '𝒀' => 'Y',
2540
- '𝒁' => 'Z',
2541
- '𝒂' => 'a',
2542
- '𝒃' => 'b',
2543
- '𝒄' => 'c',
2544
- '𝒅' => 'd',
2545
- '𝒆' => 'e',
2546
- '𝒇' => 'f',
2547
- '𝒈' => 'g',
2548
- '𝒉' => 'h',
2549
- '𝒊' => 'i',
2550
- '𝒋' => 'j',
2551
- '𝒌' => 'k',
2552
- '𝒍' => 'l',
2553
- '𝒎' => 'm',
2554
- '𝒏' => 'n',
2555
- '𝒐' => 'o',
2556
- '𝒑' => 'p',
2557
- '𝒒' => 'q',
2558
- '𝒓' => 'r',
2559
- '𝒔' => 's',
2560
- '𝒕' => 't',
2561
- '𝒖' => 'u',
2562
- '𝒗' => 'v',
2563
- '𝒘' => 'w',
2564
- '𝒙' => 'x',
2565
- '𝒚' => 'y',
2566
- '𝒛' => 'z',
2567
- '𝒜' => 'A',
2568
- '𝒞' => 'C',
2569
- '𝒟' => 'D',
2570
- '𝒢' => 'G',
2571
- '𝒥' => 'J',
2572
- '𝒦' => 'K',
2573
- '𝒩' => 'N',
2574
- '𝒪' => 'O',
2575
- '𝒫' => 'P',
2576
- '𝒬' => 'Q',
2577
- '𝒮' => 'S',
2578
- '𝒯' => 'T',
2579
- '𝒰' => 'U',
2580
- '𝒱' => 'V',
2581
- '𝒲' => 'W',
2582
- '𝒳' => 'X',
2583
- '𝒴' => 'Y',
2584
- '𝒵' => 'Z',
2585
- '𝒶' => 'a',
2586
- '𝒷' => 'b',
2587
- '𝒸' => 'c',
2588
- '𝒹' => 'd',
2589
- '𝒻' => 'f',
2590
- '𝒽' => 'h',
2591
- '𝒾' => 'i',
2592
- '𝒿' => 'j',
2593
- '𝓀' => 'k',
2594
- '𝓁' => 'l',
2595
- '𝓂' => 'm',
2596
- '𝓃' => 'n',
2597
- '𝓅' => 'p',
2598
- '𝓆' => 'q',
2599
- '𝓇' => 'r',
2600
- '𝓈' => 's',
2601
- '𝓉' => 't',
2602
- '𝓊' => 'u',
2603
- '𝓋' => 'v',
2604
- '𝓌' => 'w',
2605
- '𝓍' => 'x',
2606
- '𝓎' => 'y',
2607
- '𝓏' => 'z',
2608
- '𝓐' => 'A',
2609
- '𝓑' => 'B',
2610
- '𝓒' => 'C',
2611
- '𝓓' => 'D',
2612
- '𝓔' => 'E',
2613
- '𝓕' => 'F',
2614
- '𝓖' => 'G',
2615
- '𝓗' => 'H',
2616
- '𝓘' => 'I',
2617
- '𝓙' => 'J',
2618
- '𝓚' => 'K',
2619
- '𝓛' => 'L',
2620
- '𝓜' => 'M',
2621
- '𝓝' => 'N',
2622
- '𝓞' => 'O',
2623
- '𝓟' => 'P',
2624
- '𝓠' => 'Q',
2625
- '𝓡' => 'R',
2626
- '𝓢' => 'S',
2627
- '𝓣' => 'T',
2628
- '𝓤' => 'U',
2629
- '𝓥' => 'V',
2630
- '𝓦' => 'W',
2631
- '𝓧' => 'X',
2632
- '𝓨' => 'Y',
2633
- '𝓩' => 'Z',
2634
- '𝓪' => 'a',
2635
- '𝓫' => 'b',
2636
- '𝓬' => 'c',
2637
- '𝓭' => 'd',
2638
- '𝓮' => 'e',
2639
- '𝓯' => 'f',
2640
- '𝓰' => 'g',
2641
- '𝓱' => 'h',
2642
- '𝓲' => 'i',
2643
- '𝓳' => 'j',
2644
- '𝓴' => 'k',
2645
- '𝓵' => 'l',
2646
- '𝓶' => 'm',
2647
- '𝓷' => 'n',
2648
- '𝓸' => 'o',
2649
- '𝓹' => 'p',
2650
- '𝓺' => 'q',
2651
- '𝓻' => 'r',
2652
- '𝓼' => 's',
2653
- '𝓽' => 't',
2654
- '𝓾' => 'u',
2655
- '𝓿' => 'v',
2656
- '𝔀' => 'w',
2657
- '𝔁' => 'x',
2658
- '𝔂' => 'y',
2659
- '𝔃' => 'z',
2660
- '𝔄' => 'A',
2661
- '𝔅' => 'B',
2662
- '𝔇' => 'D',
2663
- '𝔈' => 'E',
2664
- '𝔉' => 'F',
2665
- '𝔊' => 'G',
2666
- '𝔍' => 'J',
2667
- '𝔎' => 'K',
2668
- '𝔏' => 'L',
2669
- '𝔐' => 'M',
2670
- '𝔑' => 'N',
2671
- '𝔒' => 'O',
2672
- '𝔓' => 'P',
2673
- '𝔔' => 'Q',
2674
- '𝔖' => 'S',
2675
- '𝔗' => 'T',
2676
- '𝔘' => 'U',
2677
- '𝔙' => 'V',
2678
- '𝔚' => 'W',
2679
- '𝔛' => 'X',
2680
- '𝔜' => 'Y',
2681
- '𝔞' => 'a',
2682
- '𝔟' => 'b',
2683
- '𝔠' => 'c',
2684
- '𝔡' => 'd',
2685
- '𝔢' => 'e',
2686
- '𝔣' => 'f',
2687
- '𝔤' => 'g',
2688
- '𝔥' => 'h',
2689
- '𝔦' => 'i',
2690
- '𝔧' => 'j',
2691
- '𝔨' => 'k',
2692
- '𝔩' => 'l',
2693
- '𝔪' => 'm',
2694
- '𝔫' => 'n',
2695
- '𝔬' => 'o',
2696
- '𝔭' => 'p',
2697
- '𝔮' => 'q',
2698
- '𝔯' => 'r',
2699
- '𝔰' => 's',
2700
- '𝔱' => 't',
2701
- '𝔲' => 'u',
2702
- '𝔳' => 'v',
2703
- '𝔴' => 'w',
2704
- '𝔵' => 'x',
2705
- '𝔶' => 'y',
2706
- '𝔷' => 'z',
2707
- '𝔸' => 'A',
2708
- '𝔹' => 'B',
2709
- '𝔻' => 'D',
2710
- '𝔼' => 'E',
2711
- '𝔽' => 'F',
2712
- '𝔾' => 'G',
2713
- '𝕀' => 'I',
2714
- '𝕁' => 'J',
2715
- '𝕂' => 'K',
2716
- '𝕃' => 'L',
2717
- '𝕄' => 'M',
2718
- '𝕆' => 'O',
2719
- '𝕊' => 'S',
2720
- '𝕋' => 'T',
2721
- '𝕌' => 'U',
2722
- '𝕍' => 'V',
2723
- '𝕎' => 'W',
2724
- '𝕏' => 'X',
2725
- '𝕐' => 'Y',
2726
- '𝕒' => 'a',
2727
- '𝕓' => 'b',
2728
- '𝕔' => 'c',
2729
- '𝕕' => 'd',
2730
- '𝕖' => 'e',
2731
- '𝕗' => 'f',
2732
- '𝕘' => 'g',
2733
- '𝕙' => 'h',
2734
- '𝕚' => 'i',
2735
- '𝕛' => 'j',
2736
- '𝕜' => 'k',
2737
- '𝕝' => 'l',
2738
- '𝕞' => 'm',
2739
- '𝕟' => 'n',
2740
- '𝕠' => 'o',
2741
- '𝕡' => 'p',
2742
- '𝕢' => 'q',
2743
- '𝕣' => 'r',
2744
- '𝕤' => 's',
2745
- '𝕥' => 't',
2746
- '𝕦' => 'u',
2747
- '𝕧' => 'v',
2748
- '𝕨' => 'w',
2749
- '𝕩' => 'x',
2750
- '𝕪' => 'y',
2751
- '𝕫' => 'z',
2752
- '𝕬' => 'A',
2753
- '𝕭' => 'B',
2754
- '𝕮' => 'C',
2755
- '𝕯' => 'D',
2756
- '𝕰' => 'E',
2757
- '𝕱' => 'F',
2758
- '𝕲' => 'G',
2759
- '𝕳' => 'H',
2760
- '𝕴' => 'I',
2761
- '𝕵' => 'J',
2762
- '𝕶' => 'K',
2763
- '𝕷' => 'L',
2764
- '𝕸' => 'M',
2765
- '𝕹' => 'N',
2766
- '𝕺' => 'O',
2767
- '𝕻' => 'P',
2768
- '𝕼' => 'Q',
2769
- '𝕽' => 'R',
2770
- '𝕾' => 'S',
2771
- '𝕿' => 'T',
2772
- '𝖀' => 'U',
2773
- '𝖁' => 'V',
2774
- '𝖂' => 'W',
2775
- '𝖃' => 'X',
2776
- '𝖄' => 'Y',
2777
- '𝖅' => 'Z',
2778
- '𝖆' => 'a',
2779
- '𝖇' => 'b',
2780
- '𝖈' => 'c',
2781
- '𝖉' => 'd',
2782
- '𝖊' => 'e',
2783
- '𝖋' => 'f',
2784
- '𝖌' => 'g',
2785
- '𝖍' => 'h',
2786
- '𝖎' => 'i',
2787
- '𝖏' => 'j',
2788
- '𝖐' => 'k',
2789
- '𝖑' => 'l',
2790
- '𝖒' => 'm',
2791
- '𝖓' => 'n',
2792
- '𝖔' => 'o',
2793
- '𝖕' => 'p',
2794
- '𝖖' => 'q',
2795
- '𝖗' => 'r',
2796
- '𝖘' => 's',
2797
- '𝖙' => 't',
2798
- '𝖚' => 'u',
2799
- '𝖛' => 'v',
2800
- '𝖜' => 'w',
2801
- '𝖝' => 'x',
2802
- '𝖞' => 'y',
2803
- '𝖟' => 'z',
2804
- '𝖠' => 'A',
2805
- '𝖡' => 'B',
2806
- '𝖢' => 'C',
2807
- '𝖣' => 'D',
2808
- '𝖤' => 'E',
2809
- '𝖥' => 'F',
2810
- '𝖦' => 'G',
2811
- '𝖧' => 'H',
2812
- '𝖨' => 'I',
2813
- '𝖩' => 'J',
2814
- '𝖪' => 'K',
2815
- '𝖫' => 'L',
2816
- '𝖬' => 'M',
2817
- '𝖭' => 'N',
2818
- '𝖮' => 'O',
2819
- '𝖯' => 'P',
2820
- '𝖰' => 'Q',
2821
- '𝖱' => 'R',
2822
- '𝖲' => 'S',
2823
- '𝖳' => 'T',
2824
- '𝖴' => 'U',
2825
- '𝖵' => 'V',
2826
- '𝖶' => 'W',
2827
- '𝖷' => 'X',
2828
- '𝖸' => 'Y',
2829
- '𝖹' => 'Z',
2830
- '𝖺' => 'a',
2831
- '𝖻' => 'b',
2832
- '𝖼' => 'c',
2833
- '𝖽' => 'd',
2834
- '𝖾' => 'e',
2835
- '𝖿' => 'f',
2836
- '𝗀' => 'g',
2837
- '𝗁' => 'h',
2838
- '𝗂' => 'i',
2839
- '𝗃' => 'j',
2840
- '𝗄' => 'k',
2841
- '𝗅' => 'l',
2842
- '𝗆' => 'm',
2843
- '𝗇' => 'n',
2844
- '𝗈' => 'o',
2845
- '𝗉' => 'p',
2846
- '𝗊' => 'q',
2847
- '𝗋' => 'r',
2848
- '𝗌' => 's',
2849
- '𝗍' => 't',
2850
- '𝗎' => 'u',
2851
- '𝗏' => 'v',
2852
- '𝗐' => 'w',
2853
- '𝗑' => 'x',
2854
- '𝗒' => 'y',
2855
- '𝗓' => 'z',
2856
- '𝗔' => 'A',
2857
- '𝗕' => 'B',
2858
- '𝗖' => 'C',
2859
- '𝗗' => 'D',
2860
- '𝗘' => 'E',
2861
- '𝗙' => 'F',
2862
- '𝗚' => 'G',
2863
- '𝗛' => 'H',
2864
- '𝗜' => 'I',
2865
- '𝗝' => 'J',
2866
- '𝗞' => 'K',
2867
- '𝗟' => 'L',
2868
- '𝗠' => 'M',
2869
- '𝗡' => 'N',
2870
- '𝗢' => 'O',
2871
- '𝗣' => 'P',
2872
- '𝗤' => 'Q',
2873
- '𝗥' => 'R',
2874
- '𝗦' => 'S',
2875
- '𝗧' => 'T',
2876
- '𝗨' => 'U',
2877
- '𝗩' => 'V',
2878
- '𝗪' => 'W',
2879
- '𝗫' => 'X',
2880
- '𝗬' => 'Y',
2881
- '𝗭' => 'Z',
2882
- '𝗮' => 'a',
2883
- '𝗯' => 'b',
2884
- '𝗰' => 'c',
2885
- '𝗱' => 'd',
2886
- '𝗲' => 'e',
2887
- '𝗳' => 'f',
2888
- '𝗴' => 'g',
2889
- '𝗵' => 'h',
2890
- '𝗶' => 'i',
2891
- '𝗷' => 'j',
2892
- '𝗸' => 'k',
2893
- '𝗹' => 'l',
2894
- '𝗺' => 'm',
2895
- '𝗻' => 'n',
2896
- '𝗼' => 'o',
2897
- '𝗽' => 'p',
2898
- '𝗾' => 'q',
2899
- '𝗿' => 'r',
2900
- '𝘀' => 's',
2901
- '𝘁' => 't',
2902
- '𝘂' => 'u',
2903
- '𝘃' => 'v',
2904
- '𝘄' => 'w',
2905
- '𝘅' => 'x',
2906
- '𝘆' => 'y',
2907
- '𝘇' => 'z',
2908
- '𝘈' => 'A',
2909
- '𝘉' => 'B',
2910
- '𝘊' => 'C',
2911
- '𝘋' => 'D',
2912
- '𝘌' => 'E',
2913
- '𝘍' => 'F',
2914
- '𝘎' => 'G',
2915
- '𝘏' => 'H',
2916
- '𝘐' => 'I',
2917
- '𝘑' => 'J',
2918
- '𝘒' => 'K',
2919
- '𝘓' => 'L',
2920
- '𝘔' => 'M',
2921
- '𝘕' => 'N',
2922
- '𝘖' => 'O',
2923
- '𝘗' => 'P',
2924
- '𝘘' => 'Q',
2925
- '𝘙' => 'R',
2926
- '𝘚' => 'S',
2927
- '𝘛' => 'T',
2928
- '𝘜' => 'U',
2929
- '𝘝' => 'V',
2930
- '𝘞' => 'W',
2931
- '𝘟' => 'X',
2932
- '𝘠' => 'Y',
2933
- '𝘡' => 'Z',
2934
- '𝘢' => 'a',
2935
- '𝘣' => 'b',
2936
- '𝘤' => 'c',
2937
- '𝘥' => 'd',
2938
- '𝘦' => 'e',
2939
- '𝘧' => 'f',
2940
- '𝘨' => 'g',
2941
- '𝘩' => 'h',
2942
- '𝘪' => 'i',
2943
- '𝘫' => 'j',
2944
- '𝘬' => 'k',
2945
- '𝘭' => 'l',
2946
- '𝘮' => 'm',
2947
- '𝘯' => 'n',
2948
- '𝘰' => 'o',
2949
- '𝘱' => 'p',
2950
- '𝘲' => 'q',
2951
- '𝘳' => 'r',
2952
- '𝘴' => 's',
2953
- '𝘵' => 't',
2954
- '𝘶' => 'u',
2955
- '𝘷' => 'v',
2956
- '𝘸' => 'w',
2957
- '𝘹' => 'x',
2958
- '𝘺' => 'y',
2959
- '𝘻' => 'z',
2960
- '𝘼' => 'A',
2961
- '𝘽' => 'B',
2962
- '𝘾' => 'C',
2963
- '𝘿' => 'D',
2964
- '𝙀' => 'E',
2965
- '𝙁' => 'F',
2966
- '𝙂' => 'G',
2967
- '𝙃' => 'H',
2968
- '𝙄' => 'I',
2969
- '𝙅' => 'J',
2970
- '𝙆' => 'K',
2971
- '𝙇' => 'L',
2972
- '𝙈' => 'M',
2973
- '𝙉' => 'N',
2974
- '𝙊' => 'O',
2975
- '𝙋' => 'P',
2976
- '𝙌' => 'Q',
2977
- '𝙍' => 'R',
2978
- '𝙎' => 'S',
2979
- '𝙏' => 'T',
2980
- '𝙐' => 'U',
2981
- '𝙑' => 'V',
2982
- '𝙒' => 'W',
2983
- '𝙓' => 'X',
2984
- '𝙔' => 'Y',
2985
- '𝙕' => 'Z',
2986
- '𝙖' => 'a',
2987
- '𝙗' => 'b',
2988
- '𝙘' => 'c',
2989
- '𝙙' => 'd',
2990
- '𝙚' => 'e',
2991
- '𝙛' => 'f',
2992
- '𝙜' => 'g',
2993
- '𝙝' => 'h',
2994
- '𝙞' => 'i',
2995
- '𝙟' => 'j',
2996
- '𝙠' => 'k',
2997
- '𝙡' => 'l',
2998
- '𝙢' => 'm',
2999
- '𝙣' => 'n',
3000
- '𝙤' => 'o',
3001
- '𝙥' => 'p',
3002
- '𝙦' => 'q',
3003
- '𝙧' => 'r',
3004
- '𝙨' => 's',
3005
- '𝙩' => 't',
3006
- '𝙪' => 'u',
3007
- '𝙫' => 'v',
3008
- '𝙬' => 'w',
3009
- '𝙭' => 'x',
3010
- '𝙮' => 'y',
3011
- '𝙯' => 'z',
3012
- '𝙰' => 'A',
3013
- '𝙱' => 'B',
3014
- '𝙲' => 'C',
3015
- '𝙳' => 'D',
3016
- '𝙴' => 'E',
3017
- '𝙵' => 'F',
3018
- '𝙶' => 'G',
3019
- '𝙷' => 'H',
3020
- '𝙸' => 'I',
3021
- '𝙹' => 'J',
3022
- '𝙺' => 'K',
3023
- '𝙻' => 'L',
3024
- '𝙼' => 'M',
3025
- '𝙽' => 'N',
3026
- '𝙾' => 'O',
3027
- '𝙿' => 'P',
3028
- '𝚀' => 'Q',
3029
- '𝚁' => 'R',
3030
- '𝚂' => 'S',
3031
- '𝚃' => 'T',
3032
- '𝚄' => 'U',
3033
- '𝚅' => 'V',
3034
- '𝚆' => 'W',
3035
- '𝚇' => 'X',
3036
- '𝚈' => 'Y',
3037
- '𝚉' => 'Z',
3038
- '𝚊' => 'a',
3039
- '𝚋' => 'b',
3040
- '𝚌' => 'c',
3041
- '𝚍' => 'd',
3042
- '𝚎' => 'e',
3043
- '𝚏' => 'f',
3044
- '𝚐' => 'g',
3045
- '𝚑' => 'h',
3046
- '𝚒' => 'i',
3047
- '𝚓' => 'j',
3048
- '𝚔' => 'k',
3049
- '𝚕' => 'l',
3050
- '𝚖' => 'm',
3051
- '𝚗' => 'n',
3052
- '𝚘' => 'o',
3053
- '𝚙' => 'p',
3054
- '𝚚' => 'q',
3055
- '𝚛' => 'r',
3056
- '𝚜' => 's',
3057
- '𝚝' => 't',
3058
- '𝚞' => 'u',
3059
- '𝚟' => 'v',
3060
- '𝚠' => 'w',
3061
- '𝚡' => 'x',
3062
- '𝚢' => 'y',
3063
- '𝚣' => 'z',
3064
- '𝚤' => 'ı',
3065
- '𝚥' => 'ȷ',
3066
- '𝚨' => 'Α',
3067
- '𝚩' => 'Β',
3068
- '𝚪' => 'Γ',
3069
- '𝚫' => 'Δ',
3070
- '𝚬' => 'Ε',
3071
- '𝚭' => 'Ζ',
3072
- '𝚮' => 'Η',
3073
- '𝚯' => 'Θ',
3074
- '𝚰' => 'Ι',
3075
- '𝚱' => 'Κ',
3076
- '𝚲' => 'Λ',
3077
- '𝚳' => 'Μ',
3078
- '𝚴' => 'Ν',
3079
- '𝚵' => 'Ξ',
3080
- '𝚶' => 'Ο',
3081
- '𝚷' => 'Π',
3082
- '𝚸' => 'Ρ',
3083
- '𝚹' => 'Θ',
3084
- '𝚺' => 'Σ',
3085
- '𝚻' => 'Τ',
3086
- '𝚼' => 'Υ',
3087
- '𝚽' => 'Φ',
3088
- '𝚾' => 'Χ',
3089
- '𝚿' => 'Ψ',
3090
- '𝛀' => 'Ω',
3091
- '𝛁' => '∇',
3092
- '𝛂' => 'α',
3093
- '𝛃' => 'β',
3094
- '𝛄' => 'γ',
3095
- '𝛅' => 'δ',
3096
- '𝛆' => 'ε',
3097
- '𝛇' => 'ζ',
3098
- '𝛈' => 'η',
3099
- '𝛉' => 'θ',
3100
- '𝛊' => 'ι',
3101
- '𝛋' => 'κ',
3102
- '𝛌' => 'λ',
3103
- '𝛍' => 'μ',
3104
- '𝛎' => 'ν',
3105
- '𝛏' => 'ξ',
3106
- '𝛐' => 'ο',
3107
- '𝛑' => 'π',
3108
- '𝛒' => 'ρ',
3109
- '𝛓' => 'ς',
3110
- '𝛔' => 'σ',
3111
- '𝛕' => 'τ',
3112
- '𝛖' => 'υ',
3113
- '𝛗' => 'φ',
3114
- '𝛘' => 'χ',
3115
- '𝛙' => 'ψ',
3116
- '𝛚' => 'ω',
3117
- '𝛛' => '∂',
3118
- '𝛜' => 'ε',
3119
- '𝛝' => 'θ',
3120
- '𝛞' => 'κ',
3121
- '𝛟' => 'φ',
3122
- '𝛠' => 'ρ',
3123
- '𝛡' => 'π',
3124
- '𝛢' => 'Α',
3125
- '𝛣' => 'Β',
3126
- '𝛤' => 'Γ',
3127
- '𝛥' => 'Δ',
3128
- '𝛦' => 'Ε',
3129
- '𝛧' => 'Ζ',
3130
- '𝛨' => 'Η',
3131
- '𝛩' => 'Θ',
3132
- '𝛪' => 'Ι',
3133
- '𝛫' => 'Κ',
3134
- '𝛬' => 'Λ',
3135
- '𝛭' => 'Μ',
3136
- '𝛮' => 'Ν',
3137
- '𝛯' => 'Ξ',
3138
- '𝛰' => 'Ο',
3139
- '𝛱' => 'Π',
3140
- '𝛲' => 'Ρ',
3141
- '𝛳' => 'Θ',
3142
- '𝛴' => 'Σ',
3143
- '𝛵' => 'Τ',
3144
- '𝛶' => 'Υ',
3145
- '𝛷' => 'Φ',
3146
- '𝛸' => 'Χ',
3147
- '𝛹' => 'Ψ',
3148
- '𝛺' => 'Ω',
3149
- '𝛻' => '∇',
3150
- '𝛼' => 'α',
3151
- '𝛽' => 'β',
3152
- '𝛾' => 'γ',
3153
- '𝛿' => 'δ',
3154
- '𝜀' => 'ε',
3155
- '𝜁' => 'ζ',
3156
- '𝜂' => 'η',
3157
- '𝜃' => 'θ',
3158
- '𝜄' => 'ι',
3159
- '𝜅' => 'κ',
3160
- '𝜆' => 'λ',
3161
- '𝜇' => 'μ',
3162
- '𝜈' => 'ν',
3163
- '𝜉' => 'ξ',
3164
- '𝜊' => 'ο',
3165
- '𝜋' => 'π',
3166
- '𝜌' => 'ρ',
3167
- '𝜍' => 'ς',
3168
- '𝜎' => 'σ',
3169
- '𝜏' => 'τ',
3170
- '𝜐' => 'υ',
3171
- '𝜑' => 'φ',
3172
- '𝜒' => 'χ',
3173
- '𝜓' => 'ψ',
3174
- '𝜔' => 'ω',
3175
- '𝜕' => '∂',
3176
- '𝜖' => 'ε',
3177
- '𝜗' => 'θ',
3178
- '𝜘' => 'κ',
3179
- '𝜙' => 'φ',
3180
- '𝜚' => 'ρ',
3181
- '𝜛' => 'π',
3182
- '𝜜' => 'Α',
3183
- '𝜝' => 'Β',
3184
- '𝜞' => 'Γ',
3185
- '𝜟' => 'Δ',
3186
- '𝜠' => 'Ε',
3187
- '𝜡' => 'Ζ',
3188
- '𝜢' => 'Η',
3189
- '𝜣' => 'Θ',
3190
- '𝜤' => 'Ι',
3191
- '𝜥' => 'Κ',
3192
- '𝜦' => 'Λ',
3193
- '𝜧' => 'Μ',
3194
- '𝜨' => 'Ν',
3195
- '𝜩' => 'Ξ',
3196
- '𝜪' => 'Ο',
3197
- '𝜫' => 'Π',
3198
- '𝜬' => 'Ρ',
3199
- '𝜭' => 'Θ',
3200
- '𝜮' => 'Σ',
3201
- '𝜯' => 'Τ',
3202
- '𝜰' => 'Υ',
3203
- '𝜱' => 'Φ',
3204
- '𝜲' => 'Χ',
3205
- '𝜳' => 'Ψ',
3206
- '𝜴' => 'Ω',
3207
- '𝜵' => '∇',
3208
- '𝜶' => 'α',
3209
- '𝜷' => 'β',
3210
- '𝜸' => 'γ',
3211
- '𝜹' => 'δ',
3212
- '𝜺' => 'ε',
3213
- '𝜻' => 'ζ',
3214
- '𝜼' => 'η',
3215
- '𝜽' => 'θ',
3216
- '𝜾' => 'ι',
3217
- '𝜿' => 'κ',
3218
- '𝝀' => 'λ',
3219
- '𝝁' => 'μ',
3220
- '𝝂' => 'ν',
3221
- '𝝃' => 'ξ',
3222
- '𝝄' => 'ο',
3223
- '𝝅' => 'π',
3224
- '𝝆' => 'ρ',
3225
- '𝝇' => 'ς',
3226
- '𝝈' => 'σ',
3227
- '𝝉' => 'τ',
3228
- '𝝊' => 'υ',
3229
- '𝝋' => 'φ',
3230
- '𝝌' => 'χ',
3231
- '𝝍' => 'ψ',
3232
- '𝝎' => 'ω',
3233
- '𝝏' => '∂',
3234
- '𝝐' => 'ε',
3235
- '𝝑' => 'θ',
3236
- '𝝒' => 'κ',
3237
- '𝝓' => 'φ',
3238
- '𝝔' => 'ρ',
3239
- '𝝕' => 'π',
3240
- '𝝖' => 'Α',
3241
- '𝝗' => 'Β',
3242
- '𝝘' => 'Γ',
3243
- '𝝙' => 'Δ',
3244
- '𝝚' => 'Ε',
3245
- '𝝛' => 'Ζ',
3246
- '𝝜' => 'Η',
3247
- '𝝝' => 'Θ',
3248
- '𝝞' => 'Ι',
3249
- '𝝟' => 'Κ',
3250
- '𝝠' => 'Λ',
3251
- '𝝡' => 'Μ',
3252
- '𝝢' => 'Ν',
3253
- '𝝣' => 'Ξ',
3254
- '𝝤' => 'Ο',
3255
- '𝝥' => 'Π',
3256
- '𝝦' => 'Ρ',
3257
- '𝝧' => 'Θ',
3258
- '𝝨' => 'Σ',
3259
- '𝝩' => 'Τ',
3260
- '𝝪' => 'Υ',
3261
- '𝝫' => 'Φ',
3262
- '𝝬' => 'Χ',
3263
- '𝝭' => 'Ψ',
3264
- '𝝮' => 'Ω',
3265
- '𝝯' => '∇',
3266
- '𝝰' => 'α',
3267
- '𝝱' => 'β',
3268
- '𝝲' => 'γ',
3269
- '𝝳' => 'δ',
3270
- '𝝴' => 'ε',
3271
- '𝝵' => 'ζ',
3272
- '𝝶' => 'η',
3273
- '𝝷' => 'θ',
3274
- '𝝸' => 'ι',
3275
- '𝝹' => 'κ',
3276
- '𝝺' => 'λ',
3277
- '𝝻' => 'μ',
3278
- '𝝼' => 'ν',
3279
- '𝝽' => 'ξ',
3280
- '𝝾' => 'ο',
3281
- '𝝿' => 'π',
3282
- '𝞀' => 'ρ',
3283
- '𝞁' => 'ς',
3284
- '𝞂' => 'σ',
3285
- '𝞃' => 'τ',
3286
- '𝞄' => 'υ',
3287
- '𝞅' => 'φ',
3288
- '𝞆' => 'χ',
3289
- '𝞇' => 'ψ',
3290
- '𝞈' => 'ω',
3291
- '𝞉' => '∂',
3292
- '𝞊' => 'ε',
3293
- '𝞋' => 'θ',
3294
- '𝞌' => 'κ',
3295
- '𝞍' => 'φ',
3296
- '𝞎' => 'ρ',
3297
- '𝞏' => 'π',
3298
- '𝞐' => 'Α',
3299
- '𝞑' => 'Β',
3300
- '𝞒' => 'Γ',
3301
- '𝞓' => 'Δ',
3302
- '𝞔' => 'Ε',
3303
- '𝞕' => 'Ζ',
3304
- '𝞖' => 'Η',
3305
- '𝞗' => 'Θ',
3306
- '𝞘' => 'Ι',
3307
- '𝞙' => 'Κ',
3308
- '𝞚' => 'Λ',
3309
- '𝞛' => 'Μ',
3310
- '𝞜' => 'Ν',
3311
- '𝞝' => 'Ξ',
3312
- '𝞞' => 'Ο',
3313
- '𝞟' => 'Π',
3314
- '𝞠' => 'Ρ',
3315
- '𝞡' => 'Θ',
3316
- '𝞢' => 'Σ',
3317
- '𝞣' => 'Τ',
3318
- '𝞤' => 'Υ',
3319
- '𝞥' => 'Φ',
3320
- '𝞦' => 'Χ',
3321
- '𝞧' => 'Ψ',
3322
- '𝞨' => 'Ω',
3323
- '𝞩' => '∇',
3324
- '𝞪' => 'α',
3325
- '𝞫' => 'β',
3326
- '𝞬' => 'γ',
3327
- '𝞭' => 'δ',
3328
- '𝞮' => 'ε',
3329
- '𝞯' => 'ζ',
3330
- '𝞰' => 'η',
3331
- '𝞱' => 'θ',
3332
- '𝞲' => 'ι',
3333
- '𝞳' => 'κ',
3334
- '𝞴' => 'λ',
3335
- '𝞵' => 'μ',
3336
- '𝞶' => 'ν',
3337
- '𝞷' => 'ξ',
3338
- '𝞸' => 'ο',
3339
- '𝞹' => 'π',
3340
- '𝞺' => 'ρ',
3341
- '𝞻' => 'ς',
3342
- '𝞼' => 'σ',
3343
- '𝞽' => 'τ',
3344
- '𝞾' => 'υ',
3345
- '𝞿' => 'φ',
3346
- '𝟀' => 'χ',
3347
- '𝟁' => 'ψ',
3348
- '𝟂' => 'ω',
3349
- '𝟃' => '∂',
3350
- '𝟄' => 'ε',
3351
- '𝟅' => 'θ',
3352
- '𝟆' => 'κ',
3353
- '𝟇' => 'φ',
3354
- '𝟈' => 'ρ',
3355
- '𝟉' => 'π',
3356
- '𝟊' => 'Ϝ',
3357
- '𝟋' => 'ϝ',
3358
- '𝟎' => '0',
3359
- '𝟏' => '1',
3360
- '𝟐' => '2',
3361
- '𝟑' => '3',
3362
- '𝟒' => '4',
3363
- '𝟓' => '5',
3364
- '𝟔' => '6',
3365
- '𝟕' => '7',
3366
- '𝟖' => '8',
3367
- '𝟗' => '9',
3368
- '𝟘' => '0',
3369
- '𝟙' => '1',
3370
- '𝟚' => '2',
3371
- '𝟛' => '3',
3372
- '𝟜' => '4',
3373
- '𝟝' => '5',
3374
- '𝟞' => '6',
3375
- '𝟟' => '7',
3376
- '𝟠' => '8',
3377
- '𝟡' => '9',
3378
- '𝟢' => '0',
3379
- '𝟣' => '1',
3380
- '𝟤' => '2',
3381
- '𝟥' => '3',
3382
- '𝟦' => '4',
3383
- '𝟧' => '5',
3384
- '𝟨' => '6',
3385
- '𝟩' => '7',
3386
- '𝟪' => '8',
3387
- '𝟫' => '9',
3388
- '𝟬' => '0',
3389
- '𝟭' => '1',
3390
- '𝟮' => '2',
3391
- '𝟯' => '3',
3392
- '𝟰' => '4',
3393
- '𝟱' => '5',
3394
- '𝟲' => '6',
3395
- '𝟳' => '7',
3396
- '𝟴' => '8',
3397
- '𝟵' => '9',
3398
- '𝟶' => '0',
3399
- '𝟷' => '1',
3400
- '𝟸' => '2',
3401
- '𝟹' => '3',
3402
- '𝟺' => '4',
3403
- '𝟻' => '5',
3404
- '𝟼' => '6',
3405
- '𝟽' => '7',
3406
- '𝟾' => '8',
3407
- '𝟿' => '9',
3408
- '𞸀' => 'ا',
3409
- '𞸁' => 'ب',
3410
- '𞸂' => 'ج',
3411
- '𞸃' => 'د',
3412
- '𞸅' => 'و',
3413
- '𞸆' => 'ز',
3414
- '𞸇' => 'ح',
3415
- '𞸈' => 'ط',
3416
- '𞸉' => 'ي',
3417
- '𞸊' => 'ك',
3418
- '𞸋' => 'ل',
3419
- '𞸌' => 'م',
3420
- '𞸍' => 'ن',
3421
- '𞸎' => 'س',
3422
- '𞸏' => 'ع',
3423
- '𞸐' => 'ف',
3424
- '𞸑' => 'ص',
3425
- '𞸒' => 'ق',
3426
- '𞸓' => 'ر',
3427
- '𞸔' => 'ش',
3428
- '𞸕' => 'ت',
3429
- '𞸖' => 'ث',
3430
- '𞸗' => 'خ',
3431
- '𞸘' => 'ذ',
3432
- '𞸙' => 'ض',
3433
- '𞸚' => 'ظ',
3434
- '𞸛' => 'غ',
3435
- '𞸜' => 'ٮ',
3436
- '𞸝' => 'ں',
3437
- '𞸞' => 'ڡ',
3438
- '𞸟' => 'ٯ',
3439
- '𞸡' => 'ب',
3440
- '𞸢' => 'ج',
3441
- '𞸤' => 'ه',
3442
- '𞸧' => 'ح',
3443
- '𞸩' => 'ي',
3444
- '𞸪' => 'ك',
3445
- '𞸫' => 'ل',
3446
- '𞸬' => 'م',
3447
- '𞸭' => 'ن',
3448
- '𞸮' => 'س',
3449
- '𞸯' => 'ع',
3450
- '𞸰' => 'ف',
3451
- '𞸱' => 'ص',
3452
- '𞸲' => 'ق',
3453
- '𞸴' => 'ش',
3454
- '𞸵' => 'ت',
3455
- '𞸶' => 'ث',
3456
- '𞸷' => 'خ',
3457
- '𞸹' => 'ض',
3458
- '𞸻' => 'غ',
3459
- '𞹂' => 'ج',
3460
- '𞹇' => 'ح',
3461
- '𞹉' => 'ي',
3462
- '𞹋' => 'ل',
3463
- '𞹍' => 'ن',
3464
- '𞹎' => 'س',
3465
- '𞹏' => 'ع',
3466
- '𞹑' => 'ص',
3467
- '𞹒' => 'ق',
3468
- '𞹔' => 'ش',
3469
- '𞹗' => 'خ',
3470
- '𞹙' => 'ض',
3471
- '𞹛' => 'غ',
3472
- '𞹝' => 'ں',
3473
- '𞹟' => 'ٯ',
3474
- '𞹡' => 'ب',
3475
- '𞹢' => 'ج',
3476
- '𞹤' => 'ه',
3477
- '𞹧' => 'ح',
3478
- '𞹨' => 'ط',
3479
- '𞹩' => 'ي',
3480
- '𞹪' => 'ك',
3481
- '𞹬' => 'م',
3482
- '𞹭' => 'ن',
3483
- '𞹮' => 'س',
3484
- '𞹯' => 'ع',
3485
- '𞹰' => 'ف',
3486
- '𞹱' => 'ص',
3487
- '𞹲' => 'ق',
3488
- '𞹴' => 'ش',
3489
- '𞹵' => 'ت',
3490
- '𞹶' => 'ث',
3491
- '𞹷' => 'خ',
3492
- '𞹹' => 'ض',
3493
- '𞹺' => 'ظ',
3494
- '𞹻' => 'غ',
3495
- '𞹼' => 'ٮ',
3496
- '𞹾' => 'ڡ',
3497
- '𞺀' => 'ا',
3498
- '𞺁' => 'ب',
3499
- '𞺂' => 'ج',
3500
- '𞺃' => 'د',
3501
- '𞺄' => 'ه',
3502
- '𞺅' => 'و',
3503
- '𞺆' => 'ز',
3504
- '𞺇' => 'ح',
3505
- '𞺈' => 'ط',
3506
- '𞺉' => 'ي',
3507
- '𞺋' => 'ل',
3508
- '𞺌' => 'م',
3509
- '𞺍' => 'ن',
3510
- '𞺎' => 'س',
3511
- '𞺏' => 'ع',
3512
- '𞺐' => 'ف',
3513
- '𞺑' => 'ص',
3514
- '𞺒' => 'ق',
3515
- '𞺓' => 'ر',
3516
- '𞺔' => 'ش',
3517
- '𞺕' => 'ت',
3518
- '𞺖' => 'ث',
3519
- '𞺗' => 'خ',
3520
- '𞺘' => 'ذ',
3521
- '𞺙' => 'ض',
3522
- '𞺚' => 'ظ',
3523
- '𞺛' => 'غ',
3524
- '𞺡' => 'ب',
3525
- '𞺢' => 'ج',
3526
- '𞺣' => 'د',
3527
- '𞺥' => 'و',
3528
- '𞺦' => 'ز',
3529
- '𞺧' => 'ح',
3530
- '𞺨' => 'ط',
3531
- '𞺩' => 'ي',
3532
- '𞺫' => 'ل',
3533
- '𞺬' => 'م',
3534
- '𞺭' => 'ن',
3535
- '𞺮' => 'س',
3536
- '𞺯' => 'ع',
3537
- '𞺰' => 'ف',
3538
- '𞺱' => 'ص',
3539
- '𞺲' => 'ق',
3540
- '𞺳' => 'ر',
3541
- '𞺴' => 'ش',
3542
- '𞺵' => 'ت',
3543
- '𞺶' => 'ث',
3544
- '𞺷' => 'خ',
3545
- '𞺸' => 'ذ',
3546
- '𞺹' => 'ض',
3547
- '𞺺' => 'ظ',
3548
- '𞺻' => 'غ',
3549
- '🄀' => '0.',
3550
- '🄁' => '0,',
3551
- '🄂' => '1,',
3552
- '🄃' => '2,',
3553
- '🄄' => '3,',
3554
- '🄅' => '4,',
3555
- '🄆' => '5,',
3556
- '🄇' => '6,',
3557
- '🄈' => '7,',
3558
- '🄉' => '8,',
3559
- '🄊' => '9,',
3560
- '🄐' => '(A)',
3561
- '🄑' => '(B)',
3562
- '🄒' => '(C)',
3563
- '🄓' => '(D)',
3564
- '🄔' => '(E)',
3565
- '🄕' => '(F)',
3566
- '🄖' => '(G)',
3567
- '🄗' => '(H)',
3568
- '🄘' => '(I)',
3569
- '🄙' => '(J)',
3570
- '🄚' => '(K)',
3571
- '🄛' => '(L)',
3572
- '🄜' => '(M)',
3573
- '🄝' => '(N)',
3574
- '🄞' => '(O)',
3575
- '🄟' => '(P)',
3576
- '🄠' => '(Q)',
3577
- '🄡' => '(R)',
3578
- '🄢' => '(S)',
3579
- '🄣' => '(T)',
3580
- '🄤' => '(U)',
3581
- '🄥' => '(V)',
3582
- '🄦' => '(W)',
3583
- '🄧' => '(X)',
3584
- '🄨' => '(Y)',
3585
- '🄩' => '(Z)',
3586
- '🄪' => '〔S〕',
3587
- '🄫' => 'C',
3588
- '🄬' => 'R',
3589
- '🄭' => 'CD',
3590
- '🄮' => 'WZ',
3591
- '🄰' => 'A',
3592
- '🄱' => 'B',
3593
- '🄲' => 'C',
3594
- '🄳' => 'D',
3595
- '🄴' => 'E',
3596
- '🄵' => 'F',
3597
- '🄶' => 'G',
3598
- '🄷' => 'H',
3599
- '🄸' => 'I',
3600
- '🄹' => 'J',
3601
- '🄺' => 'K',
3602
- '🄻' => 'L',
3603
- '🄼' => 'M',
3604
- '🄽' => 'N',
3605
- '🄾' => 'O',
3606
- '🄿' => 'P',
3607
- '🅀' => 'Q',
3608
- '🅁' => 'R',
3609
- '🅂' => 'S',
3610
- '🅃' => 'T',
3611
- '🅄' => 'U',
3612
- '🅅' => 'V',
3613
- '🅆' => 'W',
3614
- '🅇' => 'X',
3615
- '🅈' => 'Y',
3616
- '🅉' => 'Z',
3617
- '🅊' => 'HV',
3618
- '🅋' => 'MV',
3619
- '🅌' => 'SD',
3620
- '🅍' => 'SS',
3621
- '🅎' => 'PPV',
3622
- '🅏' => 'WC',
3623
- '🅪' => 'MC',
3624
- '🅫' => 'MD',
3625
- '🅬' => 'MR',
3626
- '🆐' => 'DJ',
3627
- '🈀' => 'ほか',
3628
- '🈁' => 'ココ',
3629
- '🈂' => 'サ',
3630
- '🈐' => '手',
3631
- '🈑' => '字',
3632
- '🈒' => '双',
3633
- '🈓' => 'デ',
3634
- '🈔' => '二',
3635
- '🈕' => '多',
3636
- '🈖' => '解',
3637
- '🈗' => '天',
3638
- '🈘' => '交',
3639
- '🈙' => '映',
3640
- '🈚' => '無',
3641
- '🈛' => '料',
3642
- '🈜' => '前',
3643
- '🈝' => '後',
3644
- '🈞' => '再',
3645
- '🈟' => '新',
3646
- '🈠' => '初',
3647
- '🈡' => '終',
3648
- '🈢' => '生',
3649
- '🈣' => '販',
3650
- '🈤' => '声',
3651
- '🈥' => '吹',
3652
- '🈦' => '演',
3653
- '🈧' => '投',
3654
- '🈨' => '捕',
3655
- '🈩' => '一',
3656
- '🈪' => '三',
3657
- '🈫' => '遊',
3658
- '🈬' => '左',
3659
- '🈭' => '中',
3660
- '🈮' => '右',
3661
- '🈯' => '指',
3662
- '🈰' => '走',
3663
- '🈱' => '打',
3664
- '🈲' => '禁',
3665
- '🈳' => '空',
3666
- '🈴' => '合',
3667
- '🈵' => '満',
3668
- '🈶' => '有',
3669
- '🈷' => '月',
3670
- '🈸' => '申',
3671
- '🈹' => '割',
3672
- '🈺' => '営',
3673
- '🈻' => '配',
3674
- '🉀' => '〔本〕',
3675
- '🉁' => '〔三〕',
3676
- '🉂' => '〔二〕',
3677
- '🉃' => '〔安〕',
3678
- '🉄' => '〔点〕',
3679
- '🉅' => '〔打〕',
3680
- '🉆' => '〔盗〕',
3681
- '🉇' => '〔勝〕',
3682
- '🉈' => '〔敗〕',
3683
- '🉐' => '得',
3684
- '🉑' => '可',
3685
- '🯰' => '0',
3686
- '🯱' => '1',
3687
- '🯲' => '2',
3688
- '🯳' => '3',
3689
- '🯴' => '4',
3690
- '🯵' => '5',
3691
- '🯶' => '6',
3692
- '🯷' => '7',
3693
- '🯸' => '8',
3694
- '🯹' => '9',
3695
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/bootstrap.php DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Intl\Normalizer as p;
13
-
14
- if (\PHP_VERSION_ID >= 80000) {
15
- return require __DIR__.'/bootstrap80.php';
16
- }
17
-
18
- if (!function_exists('normalizer_is_normalized')) {
19
- function normalizer_is_normalized($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::isNormalized($string, $form); }
20
- }
21
- if (!function_exists('normalizer_normalize')) {
22
- function normalizer_normalize($string, $form = p\Normalizer::FORM_C) { return p\Normalizer::normalize($string, $form); }
23
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-intl-normalizer/bootstrap80.php DELETED
@@ -1,19 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Intl\Normalizer as p;
13
-
14
- if (!function_exists('normalizer_is_normalized')) {
15
- function normalizer_is_normalized(?string $string, ?int $form = p\Normalizer::FORM_C): bool { return p\Normalizer::isNormalized((string) $string, (int) $form); }
16
- }
17
- if (!function_exists('normalizer_normalize')) {
18
- function normalizer_normalize(?string $string, ?int $form = p\Normalizer::FORM_C): string|false { return p\Normalizer::normalize((string) $string, (int) $form); }
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-php72/Php72.php DELETED
@@ -1,217 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- namespace Symfony\Polyfill\Php72;
13
-
14
- /**
15
- * @author Nicolas Grekas <p@tchwork.com>
16
- * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
17
- *
18
- * @internal
19
- */
20
- final class Php72
21
- {
22
- private static $hashMask;
23
-
24
- public static function utf8_encode($s)
25
- {
26
- $s .= $s;
27
- $len = \strlen($s);
28
-
29
- for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {
30
- switch (true) {
31
- case $s[$i] < "\x80": $s[$j] = $s[$i]; break;
32
- case $s[$i] < "\xC0": $s[$j] = "\xC2"; $s[++$j] = $s[$i]; break;
33
- default: $s[$j] = "\xC3"; $s[++$j] = \chr(\ord($s[$i]) - 64); break;
34
- }
35
- }
36
-
37
- return substr($s, 0, $j);
38
- }
39
-
40
- public static function utf8_decode($s)
41
- {
42
- $s = (string) $s;
43
- $len = \strlen($s);
44
-
45
- for ($i = 0, $j = 0; $i < $len; ++$i, ++$j) {
46
- switch ($s[$i] & "\xF0") {
47
- case "\xC0":
48
- case "\xD0":
49
- $c = (\ord($s[$i] & "\x1F") << 6) | \ord($s[++$i] & "\x3F");
50
- $s[$j] = $c < 256 ? \chr($c) : '?';
51
- break;
52
-
53
- case "\xF0":
54
- ++$i;
55
- // no break
56
-
57
- case "\xE0":
58
- $s[$j] = '?';
59
- $i += 2;
60
- break;
61
-
62
- default:
63
- $s[$j] = $s[$i];
64
- }
65
- }
66
-
67
- return substr($s, 0, $j);
68
- }
69
-
70
- public static function php_os_family()
71
- {
72
- if ('\\' === \DIRECTORY_SEPARATOR) {
73
- return 'Windows';
74
- }
75
-
76
- $map = [
77
- 'Darwin' => 'Darwin',
78
- 'DragonFly' => 'BSD',
79
- 'FreeBSD' => 'BSD',
80
- 'NetBSD' => 'BSD',
81
- 'OpenBSD' => 'BSD',
82
- 'Linux' => 'Linux',
83
- 'SunOS' => 'Solaris',
84
- ];
85
-
86
- return isset($map[\PHP_OS]) ? $map[\PHP_OS] : 'Unknown';
87
- }
88
-
89
- public static function spl_object_id($object)
90
- {
91
- if (null === self::$hashMask) {
92
- self::initHashMask();
93
- }
94
- if (null === $hash = spl_object_hash($object)) {
95
- return;
96
- }
97
-
98
- // On 32-bit systems, PHP_INT_SIZE is 4,
99
- return self::$hashMask ^ hexdec(substr($hash, 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
100
- }
101
-
102
- public static function sapi_windows_vt100_support($stream, $enable = null)
103
- {
104
- if (!\is_resource($stream)) {
105
- trigger_error('sapi_windows_vt100_support() expects parameter 1 to be resource, '.\gettype($stream).' given', \E_USER_WARNING);
106
-
107
- return false;
108
- }
109
-
110
- $meta = stream_get_meta_data($stream);
111
-
112
- if ('STDIO' !== $meta['stream_type']) {
113
- trigger_error('sapi_windows_vt100_support() was not able to analyze the specified stream', \E_USER_WARNING);
114
-
115
- return false;
116
- }
117
-
118
- // We cannot actually disable vt100 support if it is set
119
- if (false === $enable || !self::stream_isatty($stream)) {
120
- return false;
121
- }
122
-
123
- // The native function does not apply to stdin
124
- $meta = array_map('strtolower', $meta);
125
- $stdin = 'php://stdin' === $meta['uri'] || 'php://fd/0' === $meta['uri'];
126
-
127
- return !$stdin
128
- && (false !== getenv('ANSICON')
129
- || 'ON' === getenv('ConEmuANSI')
130
- || 'xterm' === getenv('TERM')
131
- || 'Hyper' === getenv('TERM_PROGRAM'));
132
- }
133
-
134
- public static function stream_isatty($stream)
135
- {
136
- if (!\is_resource($stream)) {
137
- trigger_error('stream_isatty() expects parameter 1 to be resource, '.\gettype($stream).' given', \E_USER_WARNING);
138
-
139
- return false;
140
- }
141
-
142
- if ('\\' === \DIRECTORY_SEPARATOR) {
143
- $stat = @fstat($stream);
144
- // Check if formatted mode is S_IFCHR
145
- return $stat ? 0020000 === ($stat['mode'] & 0170000) : false;
146
- }
147
-
148
- return \function_exists('posix_isatty') && @posix_isatty($stream);
149
- }
150
-
151
- private static function initHashMask()
152
- {
153
- $obj = (object) [];
154
- self::$hashMask = -1;
155
-
156
- // check if we are nested in an output buffering handler to prevent a fatal error with ob_start() below
157
- $obFuncs = ['ob_clean', 'ob_end_clean', 'ob_flush', 'ob_end_flush', 'ob_get_contents', 'ob_get_flush'];
158
- foreach (debug_backtrace(\PHP_VERSION_ID >= 50400 ? \DEBUG_BACKTRACE_IGNORE_ARGS : false) as $frame) {
159
- if (isset($frame['function'][0]) && !isset($frame['class']) && 'o' === $frame['function'][0] && \in_array($frame['function'], $obFuncs)) {
160
- $frame['line'] = 0;
161
- break;
162
- }
163
- }
164
- if (!empty($frame['line'])) {
165
- ob_start();
166
- debug_zval_dump($obj);
167
- self::$hashMask = (int) substr(ob_get_clean(), 17);
168
- }
169
-
170
- self::$hashMask ^= hexdec(substr(spl_object_hash($obj), 16 - (\PHP_INT_SIZE * 2 - 1), (\PHP_INT_SIZE * 2 - 1)));
171
- }
172
-
173
- public static function mb_chr($code, $encoding = null)
174
- {
175
- if (0x80 > $code %= 0x200000) {
176
- $s = \chr($code);
177
- } elseif (0x800 > $code) {
178
- $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F);
179
- } elseif (0x10000 > $code) {
180
- $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
181
- } else {
182
- $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F);
183
- }
184
-
185
- if ('UTF-8' !== $encoding = $encoding ?? mb_internal_encoding()) {
186
- $s = mb_convert_encoding($s, $encoding, 'UTF-8');
187
- }
188
-
189
- return $s;
190
- }
191
-
192
- public static function mb_ord($s, $encoding = null)
193
- {
194
- if (null === $encoding) {
195
- $s = mb_convert_encoding($s, 'UTF-8');
196
- } elseif ('UTF-8' !== $encoding) {
197
- $s = mb_convert_encoding($s, 'UTF-8', $encoding);
198
- }
199
-
200
- if (1 === \strlen($s)) {
201
- return \ord($s);
202
- }
203
-
204
- $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0;
205
- if (0xF0 <= $code) {
206
- return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80;
207
- }
208
- if (0xE0 <= $code) {
209
- return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80;
210
- }
211
- if (0xC0 <= $code) {
212
- return (($code - 0xC0) << 6) + $s[2] - 0x80;
213
- }
214
-
215
- return $code;
216
- }
217
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
vendor/symfony/polyfill-php72/bootstrap.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of the Symfony package.
5
- *
6
- * (c) Fabien Potencier <fabien@symfony.com>
7
- *
8
- * For the full copyright and license information, please view the LICENSE
9
- * file that was distributed with this source code.
10
- */
11
-
12
- use Symfony\Polyfill\Php72 as p;
13
-
14
- if (\PHP_VERSION_ID >= 70200) {
15
- return;
16
- }
17
-
18
- if (!defined('PHP_FLOAT_DIG')) {
19
- define('PHP_FLOAT_DIG', 15);
20
- }
21
- if (!defined('PHP_FLOAT_EPSILON')) {
22
- define('PHP_FLOAT_EPSILON', 2.2204460492503E-16);
23
- }
24
- if (!defined('PHP_FLOAT_MIN')) {
25
- define('PHP_FLOAT_MIN', 2.2250738585072E-308);
26
- }
27
- if (!defined('PHP_FLOAT_MAX')) {
28
- define('PHP_FLOAT_MAX', 1.7976931348623157E+308);
29
- }
30
- if (!defined('PHP_OS_FAMILY')) {
31
- define('PHP_OS_FAMILY', p\Php72::php_os_family());
32
- }
33
-
34
- if ('\\' === \DIRECTORY_SEPARATOR && !function_exists('sapi_windows_vt100_support')) {
35
- function sapi_windows_vt100_support($stream, $enable = null) { return p\Php72::sapi_windows_vt100_support($stream, $enable); }
36
- }
37
- if (!function_exists('stream_isatty')) {
38
- function stream_isatty($stream) { return p\Php72::stream_isatty($stream); }
39
- }
40
- if (!function_exists('utf8_encode')) {
41
- function utf8_encode($string) { return p\Php72::utf8_encode($string); }
42
- }
43
- if (!function_exists('utf8_decode')) {
44
- function utf8_decode($string) { return p\Php72::utf8_decode($string); }
45
- }
46
- if (!function_exists('spl_object_id')) {
47
- function spl_object_id($object) { return p\Php72::spl_object_id($object); }
48
- }
49
- if (!function_exists('mb_ord')) {
50
- function mb_ord($string, $encoding = null) { return p\Php72::mb_ord($string, $encoding); }
51
- }
52
- if (!function_exists('mb_chr')) {
53
- function mb_chr($codepoint, $encoding = null) { return p\Php72::mb_chr($codepoint, $encoding); }
54
- }
55
- if (!function_exists('mb_scrub')) {
56
- function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); }
57
- }