Bug 1466807 - Update encoding_rs to 0.8.0. r=emk
authorHenri Sivonen <hsivonen@hsivonen.fi>
Tue, 05 Jun 2018 13:50:20 +0300
changeset 478666 466d43707902ec86b9729c86cd7e844b3af7f075
parent 478665 996974585c5866548891cc5f347eec68036815bb
child 478667 67f15f4455067ee2d85245e5482d7241880911a1
push id1757
push userffxbld-merge
push dateFri, 24 Aug 2018 17:02:43 +0000
treeherdermozilla-release@736023aebdb1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemk
bugs1466807
milestone62.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1466807 - Update encoding_rs to 0.8.0. r=emk MozReview-Commit-ID: 30vmruy1kiL
Cargo.lock
intl/encoding_glue/Cargo.toml
third_party/rust/encoding_c/.cargo-checksum.json
third_party/rust/encoding_c/Cargo.toml
third_party/rust/encoding_c/include/encoding_rs_cpp.h
third_party/rust/encoding_c/src/lib.rs
third_party/rust/encoding_rs/.cargo-checksum.json
third_party/rust/encoding_rs/.travis.yml
third_party/rust/encoding_rs/CONTRIBUTING.md
third_party/rust/encoding_rs/Cargo.toml
third_party/rust/encoding_rs/README.md
third_party/rust/encoding_rs/doc/Big5.txt
third_party/rust/encoding_rs/doc/EUC-JP.txt
third_party/rust/encoding_rs/doc/EUC-KR.txt
third_party/rust/encoding_rs/doc/GBK.txt
third_party/rust/encoding_rs/doc/IBM866.txt
third_party/rust/encoding_rs/doc/ISO-2022-JP.txt
third_party/rust/encoding_rs/doc/ISO-8859-10.txt
third_party/rust/encoding_rs/doc/ISO-8859-13.txt
third_party/rust/encoding_rs/doc/ISO-8859-14.txt
third_party/rust/encoding_rs/doc/ISO-8859-15.txt
third_party/rust/encoding_rs/doc/ISO-8859-16.txt
third_party/rust/encoding_rs/doc/ISO-8859-2.txt
third_party/rust/encoding_rs/doc/ISO-8859-3.txt
third_party/rust/encoding_rs/doc/ISO-8859-4.txt
third_party/rust/encoding_rs/doc/ISO-8859-5.txt
third_party/rust/encoding_rs/doc/ISO-8859-6.txt
third_party/rust/encoding_rs/doc/ISO-8859-7.txt
third_party/rust/encoding_rs/doc/ISO-8859-8-I.txt
third_party/rust/encoding_rs/doc/ISO-8859-8.txt
third_party/rust/encoding_rs/doc/KOI8-R.txt
third_party/rust/encoding_rs/doc/KOI8-U.txt
third_party/rust/encoding_rs/doc/Shift_JIS.txt
third_party/rust/encoding_rs/doc/UTF-16BE.txt
third_party/rust/encoding_rs/doc/UTF-16LE.txt
third_party/rust/encoding_rs/doc/UTF-8.txt
third_party/rust/encoding_rs/doc/gb18030.txt
third_party/rust/encoding_rs/doc/macintosh.txt
third_party/rust/encoding_rs/doc/replacement.txt
third_party/rust/encoding_rs/doc/windows-1250.txt
third_party/rust/encoding_rs/doc/windows-1251.txt
third_party/rust/encoding_rs/doc/windows-1252.txt
third_party/rust/encoding_rs/doc/windows-1253.txt
third_party/rust/encoding_rs/doc/windows-1254.txt
third_party/rust/encoding_rs/doc/windows-1255.txt
third_party/rust/encoding_rs/doc/windows-1256.txt
third_party/rust/encoding_rs/doc/windows-1257.txt
third_party/rust/encoding_rs/doc/windows-1258.txt
third_party/rust/encoding_rs/doc/windows-874.txt
third_party/rust/encoding_rs/doc/x-mac-cyrillic.txt
third_party/rust/encoding_rs/doc/x-user-defined.txt
third_party/rust/encoding_rs/generate-encoding-data.py
third_party/rust/encoding_rs/rustfmt.toml
third_party/rust/encoding_rs/src/ascii.rs
third_party/rust/encoding_rs/src/big5.rs
third_party/rust/encoding_rs/src/data.rs
third_party/rust/encoding_rs/src/euc_jp.rs
third_party/rust/encoding_rs/src/euc_kr.rs
third_party/rust/encoding_rs/src/gb18030.rs
third_party/rust/encoding_rs/src/handles.rs
third_party/rust/encoding_rs/src/iso_2022_jp.rs
third_party/rust/encoding_rs/src/lib.rs
third_party/rust/encoding_rs/src/macros.rs
third_party/rust/encoding_rs/src/mem.rs
third_party/rust/encoding_rs/src/replacement.rs
third_party/rust/encoding_rs/src/shift_jis.rs
third_party/rust/encoding_rs/src/simd_funcs.rs
third_party/rust/encoding_rs/src/single_byte.rs
third_party/rust/encoding_rs/src/testing.rs
third_party/rust/encoding_rs/src/utf_16.rs
third_party/rust/encoding_rs/src/utf_8.rs
third_party/rust/encoding_rs/src/utf_8_core.rs
third_party/rust/encoding_rs/src/variant.rs
third_party/rust/encoding_rs/src/x_user_defined.rs
third_party/rust/simd/.cargo-checksum.json
third_party/rust/simd/Cargo.toml
third_party/rust/simd/README.md
third_party/rust/simd/src/arm/neon.rs
third_party/rust/simd/src/lib.rs
toolkit/library/gtest/rust/Cargo.toml
toolkit/library/rust/Cargo.toml
toolkit/library/rust/gkrust-features.mozbuild
toolkit/library/rust/shared/Cargo.toml
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -617,38 +617,38 @@ source = "registry+https://github.com/ru
 
 [[package]]
 name = "ena"
 version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "encoding_c"
-version = "0.8.0"
+version = "0.9.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
- "encoding_rs 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "encoding_glue"
 version = "0.1.0"
 dependencies = [
- "encoding_rs 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "nserror 0.1.0",
  "nsstring 0.1.0",
 ]
 
 [[package]]
 name = "encoding_rs"
-version = "0.7.2"
+version = "0.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "simd 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "simd 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "env_logger"
 version = "0.5.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "atty 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -834,17 +834,17 @@ dependencies = [
 name = "gkrust-shared"
 version = "0.1.0"
 dependencies = [
  "audioipc-client 0.4.0",
  "audioipc-server 0.2.3",
  "cose-c 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "cubeb-pulse 0.2.0",
  "cubeb-sys 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "encoding_c 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "encoding_glue 0.1.0",
  "env_logger 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "geckoservo 0.0.1",
  "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "mozurl 0.0.1",
  "mp4parse_capi 0.10.1",
  "netwerk_helper 0.0.1",
  "nserror 0.1.0",
@@ -1825,17 +1825,17 @@ name = "servo_arc"
 version = "0.1.1"
 dependencies = [
  "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
  "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "simd"
-version = "0.2.1"
+version = "0.2.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
 name = "siphasher"
 version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
 [[package]]
@@ -2556,18 +2556,18 @@ dependencies = [
 "checksum debug_unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9a032eac705ca39214d169f83e3d3da290af06d8d1d344d1baad2fd002dca4b3"
 "checksum diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "3c2b69f912779fbb121ceb775d74d51e915af17aaebc38d28a592843a2dd0a3a"
 "checksum docopt 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d8acd393692c503b168471874953a2531df0e9ab77d0b6bbc582395743300a4a"
 "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"
 "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d"
 "checksum dwrote 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b26e30aaa6bf31ec830db15fec14ed04f0f2ecfcc486ecfce88c55d3389b237f"
 "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a"
 "checksum ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe5a5078ac8c506d3e4430763b1ba9b609b1286913e7d08e581d1c2de9b7e5"
-"checksum encoding_c 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "93ec52324ca72f423237a413ca0e1c60654c8b3d0934fcd5fd888508dfcc4ba7"
-"checksum encoding_rs 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "98fd0f24d1fb71a4a6b9330c8ca04cbd4e7cc5d846b54ca74ff376bc7c9f798d"
+"checksum encoding_c 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "769ecb8b33323998e482b218c0d13cd64c267609023b4b7ec3ee740714c318ee"
+"checksum encoding_rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c6848cbd169668c2338be9940ac8968179edcd8704248e1e0c885a306c42772e"
 "checksum env_logger 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0561146661ae44c579e993456bc76d11ce1e0c7d745e57b2fa7146b6e49fa2ad"
 "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"
 "checksum euclid 0.17.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c95fd0d455f114291a3109286bd387bd423770058474a2d3f38b712cd661df60"
 "checksum fixedbitset 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "85cb8fec437468d86dc7c83ca7cfc933341d561873275f22dd5eedefa63a6478"
 "checksum flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9fac2277e84e5e858483756647a9d0aa8d9a2b7cba517fd84325a0aaa69a0909"
 "checksum fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"
 "checksum foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5ebc04f19019fff1f2d627b5581574ead502f80c48c88900575a46e0840fe5d0"
 "checksum freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b659e75b7a7338fe75afd7f909fc2b71937845cffb6ebe54ba2e50f13d8e903d"
@@ -2670,17 +2670,17 @@ dependencies = [
 "checksum same-file 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cfb6eded0b06a0b512c8ddbcf04089138c9b4362c2f696f3c3d76039d68f3637"
 "checksum scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"
 "checksum scopeguard 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c79eb2c3ac4bc2507cda80e7f3ac5b88bd8eae4c0914d5663e6a8933994be918"
 "checksum semver 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a3186ec9e65071a2095434b1f5bb24838d4e8e130f584c790f6033c79943537"
 "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
 "checksum serde 1.0.58 (registry+https://github.com/rust-lang/crates.io-index)" = "34e9df8efbe7a2c12ceec1fc8744d56ae3374d8ae325f4a0028949d16433d554"
 "checksum serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)" = "adb6e51a6b3696b301bc221d785f898b4457c619b51d7ce195a6d20baecb37b3"
 "checksum serde_derive 1.0.58 (git+https://github.com/servo/serde?branch=deserialize_from_enums7)" = "<none>"
-"checksum simd 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3dd0805c7363ab51a829a1511ad24b6ed0349feaa756c4bc2f977f9f496e6673"
+"checksum simd 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ed3686dd9418ebcc3a26a0c0ae56deab0681e53fe899af91f5bbcee667ebffb1"
 "checksum siphasher 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ffc669b726f2bc9a3bcff66e5e23b56ba6bf70e22a34c3d7b6d0b3450b65b84"
 "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
 "checksum smallbitvec 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c63726029f0069f88467873e47f392575f28f9f16b72ac65465263db4b3a13c"
 "checksum smallvec 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "44db0ecb22921ef790d17ae13a3f6d15784183ff5f2a01aa32098c7498d2b4b9"
 "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b"
 "checksum string_cache 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "39cb4173bcbd1319da31faa5468a7e3870683d7a237150b0b0aaafd546f6ad12"
 "checksum string_cache_codegen 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "479cde50c3539481f33906a387f2bd17c8e87cb848c35b6021d41fb81ff9b4d7"
 "checksum string_cache_shared 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc"
--- a/intl/encoding_glue/Cargo.toml
+++ b/intl/encoding_glue/Cargo.toml
@@ -2,14 +2,13 @@
 name = "encoding_glue"
 description = "FFI functions for mozilla::Encoding that aren't appropriate to share on crates.io due to m-c dependencies"
 version = "0.1.0"
 authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
 license = "MIT/Apache-2.0"
 
 [features]
 simd-accel = ["encoding_rs/simd-accel"]
-no-static-ideograph-encoder-tables = ["encoding_rs/no-static-ideograph-encoder-tables"]
 
 [dependencies]
-encoding_rs = "0.7.0"
+encoding_rs = "0.8.0"
 nsstring = { path = "../../servo/support/gecko/nsstring" }
 nserror = { path = "../../xpcom/rust/nserror" }
--- a/third_party/rust/encoding_c/.cargo-checksum.json
+++ b/third_party/rust/encoding_c/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{"CONTRIBUTING.md":"8cd9262df951c4b42078aa55064ca3b8ef2676c06b8fc7c281c02ee3f1ae04a8","COPYRIGHT":"65fb11bb8d2aac1ea00620273e0595ff71f4a335d25b67acbccbaa1b9ad5a409","Cargo.toml":"ff4fa375e664d63f9949265be588ebb23e09cdda7632ac3375d60af8fa8cb185","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"90df74ddb43e7f5aa5068890eacc151ecca7c997c9515cf17aea30b8734075bf","README.md":"089e6895e665a791c081fc7d7d9e953e2d4bb46c3774a050e9c6b0b574beabac","build-disabled.rs":"d65ed45d33ce834ab9f9f7c5f308e0a72605aa34ede6dca45a2077a2deee5cfa","include/encoding_rs.h":"b37624428fa0cdc61d0e93b8b6f1bcf58768f0a8eabd0ae2b606d01627ac9bb3","include/encoding_rs_cpp.h":"8bd8c41b6a919f939f57fd7c733129f3bd4297cc38a6a488899dcac142f7ad83","include/encoding_rs_statics.h":"05561c00809483282daab356113c67c31ff5df5bbe4dbfd79a7fa56cf36bbea7","src/lib.rs":"9299d8052a6af4932290f34d2a7abf5ba4e497bf56941e62cb802c5c058f96bc"},"package":"93ec52324ca72f423237a413ca0e1c60654c8b3d0934fcd5fd888508dfcc4ba7"}
\ No newline at end of file
+{"files":{"CONTRIBUTING.md":"8cd9262df951c4b42078aa55064ca3b8ef2676c06b8fc7c281c02ee3f1ae04a8","COPYRIGHT":"65fb11bb8d2aac1ea00620273e0595ff71f4a335d25b67acbccbaa1b9ad5a409","Cargo.toml":"f37a666e0904c65ad683e1e0a0145eb0a18a045d4fdfdca3f94c9444b18d76c3","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"90df74ddb43e7f5aa5068890eacc151ecca7c997c9515cf17aea30b8734075bf","README.md":"089e6895e665a791c081fc7d7d9e953e2d4bb46c3774a050e9c6b0b574beabac","build-disabled.rs":"d65ed45d33ce834ab9f9f7c5f308e0a72605aa34ede6dca45a2077a2deee5cfa","include/encoding_rs.h":"b37624428fa0cdc61d0e93b8b6f1bcf58768f0a8eabd0ae2b606d01627ac9bb3","include/encoding_rs_cpp.h":"07fa690f72689d6b0cc6becf4d0cc93c31bd4ee2e583a9c018d12912a6e0e2d1","include/encoding_rs_statics.h":"05561c00809483282daab356113c67c31ff5df5bbe4dbfd79a7fa56cf36bbea7","src/lib.rs":"43a123199a366a3d79b0e535e35083b7501da7eddec32635eca6fb2f56caded8"},"package":"769ecb8b33323998e482b218c0d13cd64c267609023b4b7ec3ee740714c318ee"}
\ No newline at end of file
--- a/third_party/rust/encoding_c/Cargo.toml
+++ b/third_party/rust/encoding_c/Cargo.toml
@@ -7,23 +7,25 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "encoding_c"
-version = "0.8.0"
+version = "0.9.0"
 authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
 description = "C API for encoding_rs"
 homepage = "https://docs.rs/encoding_c/"
 documentation = "https://docs.rs/encoding_c/"
 readme = "README.md"
 keywords = ["ffi", "capi", "encoding", "unicode", "charset"]
 license = "MIT/Apache-2.0"
 repository = "https://github.com/hsivonen/encoding_c"
 [dependencies.encoding_rs]
-version = "0.7.0"
+version = "0.8.0"
 
 [features]
+less-slow-big5-hanzi-encode = ["encoding_rs/less-slow-big5-hanzi-encode"]
+less-slow-gb-hanzi-encode = ["encoding_rs/less-slow-gb-hanzi-encode"]
+less-slow-kanji-encode = ["encoding_rs/less-slow-kanji-encode"]
 simd-accel = ["encoding_rs/simd-accel"]
-no-static-ideograph-encoder-tables = ["encoding_rs/no-static-ideograph-encoder-tables"]
--- a/third_party/rust/encoding_c/include/encoding_rs_cpp.h
+++ b/third_party/rust/encoding_c/include/encoding_rs_cpp.h
@@ -8,27 +8,39 @@
 // except according to those terms.
 
 #pragma once
 
 #ifndef encoding_rs_cpp_h_
 #define encoding_rs_cpp_h_
 
 #include "gsl/gsl"
-#include <experimental/optional>
 #include <memory>
+#include <optional>
 #include <string>
+#include <string_view>
 #include <tuple>
+#include <vector>
 
+namespace encoding_rs {
 class Encoding;
 class Decoder;
 class Encoder;
+}; // namespace encoding_rs
+
+#define ENCODING_RS_ENCODING encoding_rs::Encoding
+#define ENCODING_RS_NOT_NULL_CONST_ENCODING_PTR                                \
+  gsl::not_null<const encoding_rs::Encoding*>
+#define ENCODING_RS_ENCODER encoding_rs::Encoder
+#define ENCODING_RS_DECODER encoding_rs::Decoder
 
 #include "encoding_rs.h"
 
+namespace encoding_rs {
+
 /**
  * A converter that decodes a byte stream into Unicode according to a
  * character encoding in a streaming (incremental) manner.
  *
  * The various `decode_*` methods take an input buffer (`src`) and an output
  * buffer `dst` both of which are caller-allocated. There are variants for
  * both UTF-8 and UTF-16 output buffers.
  *
@@ -118,166 +130,201 @@ class Encoder;
  * accommodate one character of output, an infinite loop ensues. When
  * converting with a fixed-size output buffer, it generally makes sense to
  * make the buffer fairly large (e.g. couple of kilobytes).
  */
 class Decoder final
 {
 public:
   ~Decoder() {}
-  static void operator delete(void* decoder)
+  static inline void operator delete(void* decoder)
   {
     decoder_free(reinterpret_cast<Decoder*>(decoder));
   }
 
   /**
    * The `Encoding` this `Decoder` is for.
    *
    * BOM sniffing can change the return value of this method during the life
    * of the decoder.
    */
   inline gsl::not_null<const Encoding*> encoding() const
   {
-    return decoder_encoding(this);
+    return gsl::not_null<const Encoding*>(decoder_encoding(this));
   }
 
   /**
    * Query the worst-case UTF-8 output size _with replacement_.
    *
    * Returns the size of the output buffer in UTF-8 code units (`uint8_t`)
    * that will not overflow given the current state of the decoder and
    * `byte_length` number of additional input bytes when decoding with
    * errors handled by outputting a REPLACEMENT CHARACTER for each malformed
-   * sequence or `SIZE_MAX` if `size_t` would overflow.
+   * sequence or `std::optional` without value if `size_t` would overflow.
    */
-  inline size_t max_utf8_buffer_length(size_t byte_length) const
+  inline std::optional<size_t> max_utf8_buffer_length(size_t byte_length) const
   {
-    return decoder_max_utf8_buffer_length(this, byte_length);
+    size_t val = decoder_max_utf8_buffer_length(this, byte_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Query the worst-case UTF-8 output size _without replacement_.
    *
    * Returns the size of the output buffer in UTF-8 code units (`uint8_t`)
    * that will not overflow given the current state of the decoder and
    * `byte_length` number of additional input bytes when decoding without
-   * replacement error handling or `SIZE_MAX` if `size_t` would overflow.
+   * replacement error handling or `std::optional` without value if `size_t`
+   * would overflow.
    *
    * Note that this value may be too small for the `_with_replacement` case.
    * Use `max_utf8_buffer_length()` for that case.
    */
-  inline size_t max_utf8_buffer_length_without_replacement(
+  inline std::optional<size_t> max_utf8_buffer_length_without_replacement(
     size_t byte_length) const
   {
-    return decoder_max_utf8_buffer_length_without_replacement(this,
-                                                              byte_length);
+    size_t val =
+      decoder_max_utf8_buffer_length_without_replacement(this, byte_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Incrementally decode a byte stream into UTF-8 with malformed sequences
    * replaced with the REPLACEMENT CHARACTER.
    *
    * See the documentation of the class for documentation for `decode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t, bool> decode_to_utf8(
-    gsl::span<const uint8_t> src, gsl::span<uint8_t> dst, bool last)
+    gsl::span<const uint8_t> src,
+    gsl::span<uint8_t> dst,
+    bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     bool had_replacements;
     uint32_t result =
-      decoder_decode_to_utf8(this, null_to_bogus<const uint8_t>(src.data()),
-                             &src_read, null_to_bogus<uint8_t>(dst.data()),
-                             &dst_written, last, &had_replacements);
-    return std::make_tuple(result, src_read, dst_written, had_replacements);
+      decoder_decode_to_utf8(this,
+                             null_to_bogus<const uint8_t>(src.data()),
+                             &src_read,
+                             null_to_bogus<uint8_t>(dst.data()),
+                             &dst_written,
+                             last,
+                             &had_replacements);
+    return { result, src_read, dst_written, had_replacements };
   }
 
   /**
    * Incrementally decode a byte stream into UTF-8 _without replacement_.
    *
    * See the documentation of the class for documentation for `decode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t>
   decode_to_utf8_without_replacement(gsl::span<const uint8_t> src,
-                                     gsl::span<uint8_t> dst, bool last)
+                                     gsl::span<uint8_t> dst,
+                                     bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     uint32_t result = decoder_decode_to_utf8_without_replacement(
-      this, null_to_bogus<const uint8_t>(src.data()), &src_read,
-      null_to_bogus<uint8_t>(dst.data()), &dst_written, last);
-    return std::make_tuple(result, src_read, dst_written);
+      this,
+      null_to_bogus<const uint8_t>(src.data()),
+      &src_read,
+      null_to_bogus<uint8_t>(dst.data()),
+      &dst_written,
+      last);
+    return { result, src_read, dst_written };
   }
 
   /**
    * Query the worst-case UTF-16 output size (with or without replacement).
    *
    * Returns the size of the output buffer in UTF-16 code units (`char16_t`)
    * that will not overflow given the current state of the decoder and
-   * `byte_length` number of additional input bytes or `SIZE_MAX` if
-   * `size_t` would overflow.
+   * `byte_length` number of additional input bytes  or `std::optional`
+   * without value if `size_t` would overflow.
    *
    * Since the REPLACEMENT CHARACTER fits into one UTF-16 code unit, the
    * return value of this method applies also in the
    * `_without_replacement` case.
    */
-  inline size_t max_utf16_buffer_length(size_t u16_length) const
+  inline std::optional<size_t> max_utf16_buffer_length(size_t byte_length) const
   {
-    return decoder_max_utf16_buffer_length(this, u16_length);
+    size_t val = decoder_max_utf16_buffer_length(this, byte_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Incrementally decode a byte stream into UTF-16 with malformed sequences
    * replaced with the REPLACEMENT CHARACTER.
    *
    * See the documentation of the class for documentation for `decode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t, bool> decode_to_utf16(
-    gsl::span<const uint8_t> src, gsl::span<char16_t> dst, bool last)
+    gsl::span<const uint8_t> src,
+    gsl::span<char16_t> dst,
+    bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     bool had_replacements;
     uint32_t result =
-      decoder_decode_to_utf16(this, null_to_bogus<const uint8_t>(src.data()),
-                              &src_read, null_to_bogus<char16_t>(dst.data()),
-                              &dst_written, last, &had_replacements);
-    return std::make_tuple(result, src_read, dst_written, had_replacements);
+      decoder_decode_to_utf16(this,
+                              null_to_bogus<const uint8_t>(src.data()),
+                              &src_read,
+                              null_to_bogus<char16_t>(dst.data()),
+                              &dst_written,
+                              last,
+                              &had_replacements);
+    return { result, src_read, dst_written, had_replacements };
   }
 
   /**
    * Incrementally decode a byte stream into UTF-16 _without replacement_.
    *
    * See the documentation of the class for documentation for `decode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t>
   decode_to_utf16_without_replacement(gsl::span<const uint8_t> src,
-                                      gsl::span<char16_t> dst, bool last)
+                                      gsl::span<char16_t> dst,
+                                      bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     uint32_t result = decoder_decode_to_utf16_without_replacement(
-      this, null_to_bogus<const uint8_t>(src.data()), &src_read,
-      null_to_bogus<char16_t>(dst.data()), &dst_written, last);
-    return std::make_tuple(result, src_read, dst_written);
+      this,
+      null_to_bogus<const uint8_t>(src.data()),
+      &src_read,
+      null_to_bogus<char16_t>(dst.data()),
+      &dst_written,
+      last);
+    return { result, src_read, dst_written };
   }
 
 private:
   /**
    * Replaces `nullptr` with a bogus pointer suitable for use as part of a
    * zero-length Rust slice.
    */
-  template <class T>
+  template<class T>
   static inline T* null_to_bogus(T* ptr)
   {
-    return ptr ? ptr : reinterpret_cast<T*>(0x1);
+    return ptr ? ptr : reinterpret_cast<T*>(alignof(T));
   }
 
   Decoder() = delete;
   Decoder(const Decoder&) = delete;
   Decoder& operator=(const Decoder&) = delete;
 };
 
 /**
@@ -384,27 +431,27 @@ private:
  * converting with a fixed-size output buffer, it generally makes sense to
  * make the buffer fairly large (e.g. couple of kilobytes).
  */
 class Encoder final
 {
 public:
   ~Encoder() {}
 
-  static void operator delete(void* encoder)
+  static inline void operator delete(void* encoder)
   {
     encoder_free(reinterpret_cast<Encoder*>(encoder));
   }
 
   /**
    * The `Encoding` this `Encoder` is for.
    */
   inline gsl::not_null<const Encoding*> encoding() const
   {
-    return encoder_encoding(this);
+    return gsl::not_null<const Encoding*>(encoder_encoding(this));
   }
 
   /**
    * Returns `true` if this is an ISO-2022-JP encoder that's not in the
    * ASCII state and `false` otherwise.
    */
   inline bool has_pending_state() const
   {
@@ -415,154 +462,190 @@ public:
    * Query the worst-case output size when encoding from UTF-8 with
    * replacement.
    *
    * Returns the size of the output buffer in bytes that will not overflow
    * given the current state of the encoder and `byte_length` number of
    * additional input code units if there are no unmappable characters in
    * the input or `SIZE_MAX` if `size_t` would overflow.
    */
-  inline size_t max_buffer_length_from_utf8_if_no_unmappables(
+  inline std::optional<size_t> max_buffer_length_from_utf8_if_no_unmappables(
     size_t byte_length) const
   {
-    return encoder_max_buffer_length_from_utf8_if_no_unmappables(this,
-                                                                 byte_length);
+    size_t val =
+      encoder_max_buffer_length_from_utf8_if_no_unmappables(this, byte_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Query the worst-case output size when encoding from UTF-8 without
    * replacement.
    *
    * Returns the size of the output buffer in bytes that will not overflow
    * given the current state of the encoder and `byte_length` number of
    * additional input code units or `SIZE_MAX` if `size_t` would overflow.
    */
-  inline size_t max_buffer_length_from_utf8_without_replacement(
+  inline std::optional<size_t> max_buffer_length_from_utf8_without_replacement(
     size_t byte_length) const
   {
-    return encoder_max_buffer_length_from_utf8_without_replacement(this,
-                                                                   byte_length);
+    size_t val = encoder_max_buffer_length_from_utf8_without_replacement(
+      this, byte_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Incrementally encode into byte stream from UTF-8 with unmappable
    * characters replaced with HTML (decimal) numeric character references.
    *
    * See the documentation of the class for documentation for `encode_*`
    * methods collectively.
    */
-  inline std::tuple<uint32_t, size_t, size_t, bool> encode_from_utf8(
-    gsl::span<const uint8_t> src, gsl::span<uint8_t> dst, bool last)
+  inline std::tuple<uint32_t, size_t, size_t, bool>
+  encode_from_utf8(std::string_view src, gsl::span<uint8_t> dst, bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     bool had_replacements;
     uint32_t result =
-      encoder_encode_from_utf8(this, null_to_bogus<const uint8_t>(src.data()),
-                               &src_read, null_to_bogus<uint8_t>(dst.data()),
-                               &dst_written, last, &had_replacements);
-    return std::make_tuple(result, src_read, dst_written, had_replacements);
+      encoder_encode_from_utf8(this,
+                               null_to_bogus<const uint8_t>(
+                                 reinterpret_cast<const uint8_t*>(src.data())),
+                               &src_read,
+                               null_to_bogus<uint8_t>(dst.data()),
+                               &dst_written,
+                               last,
+                               &had_replacements);
+    return { result, src_read, dst_written, had_replacements };
   }
 
   /**
    * Incrementally encode into byte stream from UTF-8 _without replacement_.
    *
    * See the documentation of the class for documentation for `encode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t>
-  encode_from_utf8_without_replacement(gsl::span<const uint8_t> src,
-                                       gsl::span<uint8_t> dst, bool last)
+  encode_from_utf8_without_replacement(std::string_view src,
+                                       gsl::span<uint8_t> dst,
+                                       bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     uint32_t result = encoder_encode_from_utf8_without_replacement(
-      this, null_to_bogus<const uint8_t>(src.data()), &src_read,
-      null_to_bogus<uint8_t>(dst.data()), &dst_written, last);
-    return std::make_tuple(result, src_read, dst_written);
+      this,
+      null_to_bogus<const uint8_t>(
+        reinterpret_cast<const uint8_t*>(src.data())),
+      &src_read,
+      null_to_bogus<uint8_t>(dst.data()),
+      &dst_written,
+      last);
+    return { result, src_read, dst_written };
   }
 
   /**
    * Query the worst-case output size when encoding from UTF-16 with
    * replacement.
    *
    * Returns the size of the output buffer in bytes that will not overflow
    * given the current state of the encoder and `u16_length` number of
    * additional input code units if there are no unmappable characters in
    * the input or `SIZE_MAX` if `size_t` would overflow.
    */
-  inline size_t max_buffer_length_from_utf16_if_no_unmappables(
+  inline std::optional<size_t> max_buffer_length_from_utf16_if_no_unmappables(
     size_t u16_length) const
   {
-    return encoder_max_buffer_length_from_utf16_if_no_unmappables(this,
-                                                                  u16_length);
+    size_t val =
+      encoder_max_buffer_length_from_utf16_if_no_unmappables(this, u16_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Query the worst-case output size when encoding from UTF-16 without
    * replacement.
    *
    * Returns the size of the output buffer in bytes that will not overflow
    * given the current state of the encoder and `u16_length` number of
    * additional input code units or `SIZE_MAX` if `size_t` would overflow.
    */
-  inline size_t max_buffer_length_from_utf16_without_replacement(
+  inline std::optional<size_t> max_buffer_length_from_utf16_without_replacement(
     size_t u16_length) const
   {
-    return encoder_max_buffer_length_from_utf16_without_replacement(this,
-                                                                    u16_length);
+    size_t val = encoder_max_buffer_length_from_utf16_without_replacement(
+      this, u16_length);
+    if (val == SIZE_MAX) {
+      return std::nullopt;
+    }
+    return val;
   }
 
   /**
    * Incrementally encode into byte stream from UTF-16 with unmappable
    * characters replaced with HTML (decimal) numeric character references.
    *
    * See the documentation of the class for documentation for `encode_*`
    * methods collectively.
    */
-  inline std::tuple<uint32_t, size_t, size_t, bool> encode_from_utf16(
-    gsl::span<const char16_t> src, gsl::span<uint8_t> dst, bool last)
+  inline std::tuple<uint32_t, size_t, size_t, bool>
+  encode_from_utf16(std::u16string_view src, gsl::span<uint8_t> dst, bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     bool had_replacements;
     uint32_t result =
-      encoder_encode_from_utf16(this, null_to_bogus<const char16_t>(src.data()),
-                                &src_read, null_to_bogus<uint8_t>(dst.data()),
-                                &dst_written, last, &had_replacements);
-    return std::make_tuple(result, src_read, dst_written, had_replacements);
+      encoder_encode_from_utf16(this,
+                                null_to_bogus<const char16_t>(src.data()),
+                                &src_read,
+                                null_to_bogus<uint8_t>(dst.data()),
+                                &dst_written,
+                                last,
+                                &had_replacements);
+    return { result, src_read, dst_written, had_replacements };
   }
 
   /**
    * Incrementally encode into byte stream from UTF-16 _without replacement_.
    *
    * See the documentation of the class for documentation for `encode_*`
    * methods collectively.
    */
   inline std::tuple<uint32_t, size_t, size_t>
-  encode_from_utf16_without_replacement(gsl::span<const char16_t> src,
-                                        gsl::span<uint8_t> dst, bool last)
+  encode_from_utf16_without_replacement(std::u16string_view src,
+                                        gsl::span<uint8_t> dst,
+                                        bool last)
   {
     size_t src_read = src.size();
     size_t dst_written = dst.size();
     uint32_t result = encoder_encode_from_utf16_without_replacement(
-      this, null_to_bogus<const char16_t>(src.data()), &src_read,
-      null_to_bogus<uint8_t>(dst.data()), &dst_written, last);
-    return std::make_tuple(result, src_read, dst_written);
+      this,
+      null_to_bogus<const char16_t>(src.data()),
+      &src_read,
+      null_to_bogus<uint8_t>(dst.data()),
+      &dst_written,
+      last);
+    return { result, src_read, dst_written };
   }
 
 private:
   /**
    * Replaces `nullptr` with a bogus pointer suitable for use as part of a
    * zero-length Rust slice.
    */
-  template <class T>
+  template<class T>
   static inline T* null_to_bogus(T* ptr)
   {
-    return ptr ? ptr : reinterpret_cast<T*>(0x1);
+    return ptr ? ptr : reinterpret_cast<T*>(alignof(T));
   }
 
   Encoder() = delete;
   Encoder(const Encoder&) = delete;
   Encoder& operator=(const Encoder&) = delete;
 };
 
 /**
@@ -665,27 +748,32 @@ public:
 
   /**
    * Performs non-incremental BOM sniffing.
    *
    * The argument must either be a buffer representing the entire input
    * stream (non-streaming case) or a buffer representing at least the first
    * three bytes of the input stream (streaming case).
    *
-   * Returns `make_tuple(UTF_8_ENCODING, 3)`, `make_tuple(UTF_16LE_ENCODING, 2)`
-   * or `make_tuple(UTF_16BE_ENCODING, 3)` if the argument starts with the
-   * UTF-8, UTF-16LE or UTF-16BE BOM or `make_tuple(nullptr, 0)` otherwise.
+   * Returns a std::optinal wrapping `make_tuple(UTF_8_ENCODING, 3)`,
+   * `make_tuple(UTF_16LE_ENCODING, 2)` or `make_tuple(UTF_16BE_ENCODING, 3)`
+   * if the argument starts with the UTF-8, UTF-16LE or UTF-16BE BOM or
+   * `std::nullopt` otherwise.
    */
-  static inline std::tuple<const Encoding*, size_t> for_bom(
-    gsl::span<const uint8_t> buffer)
+  static inline std::optional<
+    std::tuple<gsl::not_null<const Encoding*>, size_t>>
+  for_bom(gsl::span<const uint8_t> buffer)
   {
     size_t len = buffer.size();
     const Encoding* encoding =
-      encoding_for_bom(null_to_bogus<const uint8_t>(buffer.data()), &len);
-    return std::make_tuple(encoding, len);
+      encoding_for_bom(null_to_bogus(buffer.data()), &len);
+    if (encoding) {
+      return std::make_tuple(gsl::not_null<const Encoding*>(encoding), len);
+    }
+    return std::nullopt;
   }
 
   /**
    * Returns the name of this encoding.
    *
    * This name is appropriate to return as-is from the DOM
    * `document.characterSet` property.
    */
@@ -717,17 +805,17 @@ public:
   }
 
   /**
    * Returns the _output encoding_ of this encoding. This is UTF-8 for
    * UTF-16BE, UTF-16LE and replacement and the encoding itself otherwise.
    */
   inline gsl::not_null<const Encoding*> output_encoding() const
   {
-    return encoding_output_encoding(this);
+    return gsl::not_null<const Encoding*>(encoding_output_encoding(this));
   }
 
   /**
    * Decode complete input to `std::string` _with BOM sniffing_ and with
    * malformed sequences replaced with the REPLACEMENT CHARACTER when the
    * entire input is available as a single buffer (i.e. the end of the
    * buffer marks the end of the stream).
    *
@@ -739,31 +827,30 @@ public:
    *
    * The third item in the returned tuple indicates whether there were
    * malformed sequences (that were replaced with the REPLACEMENT CHARACTER).
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use `new_decoder()`
    * when decoding segmented input.
    */
-  inline std::tuple<std::string, const Encoding*, bool> decode(
+  inline std::tuple<std::string, gsl::not_null<const Encoding*>, bool> decode(
     gsl::span<const uint8_t> bytes) const
   {
+    auto opt = Encoding::for_bom(bytes);
     const Encoding* encoding;
-    size_t bom_length;
-    std::tie(encoding, bom_length) = Encoding::for_bom(bytes);
-    if (encoding) {
+    if (opt) {
+      size_t bom_length;
+      std::tie(encoding, bom_length) = *opt;
       bytes = bytes.subspan(bom_length);
     } else {
       encoding = this;
     }
-    bool had_errors;
-    std::string str;
-    std::tie(str, had_errors) = encoding->decode_without_bom_handling(bytes);
-    return std::make_tuple(str, encoding, had_errors);
+    auto [str, had_errors] = encoding->decode_without_bom_handling(bytes);
+    return { str, gsl::not_null<const Encoding*>(encoding), had_errors };
   }
 
   /**
    * Decode complete input to `std::string` _with BOM removal_ and with
    * malformed sequences replaced with the REPLACEMENT CHARACTER when the
    * entire input is available as a single buffer (i.e. the end of the
    * buffer marks the end of the stream).
    *
@@ -813,34 +900,30 @@ public:
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use
    * `new_decoder_without_bom_handling()` when decoding segmented input.
    */
   inline std::tuple<std::string, bool> decode_without_bom_handling(
     gsl::span<const uint8_t> bytes) const
   {
     auto decoder = new_decoder_without_bom_handling();
-    size_t needed = decoder->max_utf8_buffer_length(bytes.size());
-    if (needed == SIZE_MAX) {
+    auto needed = decoder->max_utf8_buffer_length(bytes.size());
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::string string(needed, '\0');
-    uint32_t result;
-    size_t read;
-    size_t written;
-    bool had_errors;
-    std::tie(result, read, written, had_errors) = decoder->decode_to_utf8(
+    std::string string(needed.value(), '\0');
+    const auto [result, read, written, had_errors] = decoder->decode_to_utf8(
       bytes,
       gsl::make_span(reinterpret_cast<uint8_t*>(&string[0]), string.size()),
       true);
     assert(read == static_cast<size_t>(bytes.size()));
     assert(written <= static_cast<size_t>(string.size()));
     assert(result == INPUT_EMPTY);
     string.resize(written);
-    return std::make_tuple(string, had_errors);
+    return { string, had_errors };
   }
 
   /**
    * Decode complete input to `std::string` _without BOM handling_ and
    * _with malformed sequences treated as fatal_ when the entire input is
    * available as a single buffer (i.e. the end of the buffer marks the end
    * of the stream).
    *
@@ -851,31 +934,28 @@ public:
    *
    * Returns `None` if a malformed sequence was encountered and the result
    * of the decode as `Some(String)` otherwise.
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use
    * `new_decoder_without_bom_handling()` when decoding segmented input.
    */
-  inline std::experimental::optional<std::string>
+  inline std::optional<std::string>
   decode_without_bom_handling_and_without_replacement(
     gsl::span<const uint8_t> bytes) const
   {
     auto decoder = new_decoder_without_bom_handling();
-    size_t needed =
+    auto needed =
       decoder->max_utf8_buffer_length_without_replacement(bytes.size());
-    if (needed == SIZE_MAX) {
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::string string(needed, '\0');
-    uint32_t result;
-    size_t read;
-    size_t written;
-    std::tie(result, read, written) =
+    std::string string(needed.value(), '\0');
+    const auto [result, read, written] =
       decoder->decode_to_utf8_without_replacement(
         bytes,
         gsl::make_span(reinterpret_cast<uint8_t*>(&string[0]), string.size()),
         true);
     assert(result != OUTPUT_FULL);
     if (result == INPUT_EMPTY) {
       assert(read == static_cast<size_t>(bytes.size()));
       assert(written <= static_cast<size_t>(string.size()));
@@ -898,31 +978,30 @@ public:
    *
    * The third item in the returned tuple indicates whether there were
    * malformed sequences (that were replaced with the REPLACEMENT CHARACTER).
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use `new_decoder()`
    * when decoding segmented input.
    */
-  inline std::tuple<std::u16string, const Encoding*, bool> decode16(
-    gsl::span<const uint8_t> bytes) const
+  inline std::tuple<std::u16string, gsl::not_null<const Encoding*>, bool>
+  decode16(gsl::span<const uint8_t> bytes) const
   {
+    auto opt = Encoding::for_bom(bytes);
     const Encoding* encoding;
-    size_t bom_length;
-    std::tie(encoding, bom_length) = Encoding::for_bom(bytes);
-    if (encoding) {
+    if (opt) {
+      size_t bom_length;
+      std::tie(encoding, bom_length) = *opt;
       bytes = bytes.subspan(bom_length);
     } else {
       encoding = this;
     }
-    bool had_errors;
-    std::u16string str;
-    std::tie(str, had_errors) = encoding->decode16_without_bom_handling(bytes);
-    return std::make_tuple(str, encoding, had_errors);
+    auto [str, had_errors] = encoding->decode16_without_bom_handling(bytes);
+    return { str, gsl::not_null<const Encoding*>(encoding), had_errors };
   }
 
   /**
    * Decode complete input to `std::u16string` _with BOM removal_ and with
    * malformed sequences replaced with the REPLACEMENT CHARACTER when the
    * entire input is available as a single buffer (i.e. the end of the
    * buffer marks the end of the stream).
    *
@@ -972,32 +1051,28 @@ public:
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use
    * `new_decoder_without_bom_handling()` when decoding segmented input.
    */
   inline std::tuple<std::u16string, bool> decode16_without_bom_handling(
     gsl::span<const uint8_t> bytes) const
   {
     auto decoder = new_decoder_without_bom_handling();
-    size_t needed = decoder->max_utf16_buffer_length(bytes.size());
-    if (needed == SIZE_MAX) {
+    auto needed = decoder->max_utf16_buffer_length(bytes.size());
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::u16string string(needed, '\0');
-    uint32_t result;
-    size_t read;
-    size_t written;
-    bool had_errors;
-    std::tie(result, read, written, had_errors) = decoder->decode_to_utf16(
+    std::u16string string(needed.value(), '\0');
+    const auto [result, read, written, had_errors] = decoder->decode_to_utf16(
       bytes, gsl::make_span(&string[0], string.size()), true);
     assert(read == static_cast<size_t>(bytes.size()));
     assert(written <= static_cast<size_t>(string.size()));
     assert(result == INPUT_EMPTY);
     string.resize(written);
-    return std::make_tuple(string, had_errors);
+    return { string, had_errors };
   }
 
   /**
    * Decode complete input to `std::u16string` _without BOM handling_ and
    * _with malformed sequences treated as fatal_ when the entire input is
    * available as a single buffer (i.e. the end of the buffer marks the end
    * of the stream).
    *
@@ -1008,30 +1083,27 @@ public:
    *
    * Returns `None` if a malformed sequence was encountered and the result
    * of the decode as `Some(String)` otherwise.
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use
    * `new_decoder_without_bom_handling()` when decoding segmented input.
    */
-  inline std::experimental::optional<std::u16string>
+  inline std::optional<std::u16string>
   decode16_without_bom_handling_and_without_replacement(
     gsl::span<const uint8_t> bytes) const
   {
     auto decoder = new_decoder_without_bom_handling();
-    size_t needed = decoder->max_utf16_buffer_length(bytes.size());
-    if (needed == SIZE_MAX) {
+    auto needed = decoder->max_utf16_buffer_length(bytes.size());
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::u16string string(needed, '\0');
-    uint32_t result;
-    size_t read;
-    size_t written;
-    std::tie(result, read, written) =
+    std::u16string string(needed.value(), '\0');
+    const auto [result, read, written] =
       decoder->decode_to_utf16_without_replacement(
         bytes, gsl::make_span(&string[0], string.size()), true);
     assert(result != OUTPUT_FULL);
     if (result == INPUT_EMPTY) {
       assert(read == static_cast<size_t>(bytes.size()));
       assert(written <= static_cast<size_t>(string.size()));
       string.resize(written);
       return string;
@@ -1054,57 +1126,56 @@ public:
    * The third item in the returned tuple indicates whether there were
    * unmappable characters (that were replaced with HTML numeric character
    * references).
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use `new_encoder()`
    * when encoding segmented output.
    */
-  inline std::tuple<std::vector<uint8_t>, const Encoding*, bool> encode(
-    gsl::span<const uint8_t> string) const
+  inline std::tuple<std::vector<uint8_t>, gsl::not_null<const Encoding*>, bool>
+  encode(std::string_view string) const
   {
     auto output_enc = output_encoding();
     if (output_enc == UTF_8_ENCODING) {
       std::vector<uint8_t> vec(string.size());
       std::memcpy(&vec[0], string.data(), string.size());
     }
     auto encoder = output_enc->new_encoder();
-    size_t needed =
+    auto needed =
       encoder->max_buffer_length_from_utf8_if_no_unmappables(string.size());
-    if (needed == SIZE_MAX) {
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::vector<uint8_t> vec(needed);
+    std::vector<uint8_t> vec(needed.value());
     bool total_had_errors = false;
     size_t total_read = 0;
     size_t total_written = 0;
-    uint32_t result;
-    size_t read;
-    size_t written;
-    bool had_errors;
     for (;;) {
-      std::tie(result, read, written, had_errors) = encoder->encode_from_utf8(
-        gsl::make_span(string).subspan(total_read),
-        gsl::make_span(vec).subspan(total_written), true);
+      const auto [result, read, written, had_errors] =
+        encoder->encode_from_utf8(string.substr(total_read),
+                                  gsl::make_span(vec).subspan(total_written),
+                                  true);
       total_read += read;
       total_written += written;
       total_had_errors |= had_errors;
       if (result == INPUT_EMPTY) {
         assert(total_read == static_cast<size_t>(string.size()));
         assert(total_written <= static_cast<size_t>(vec.size()));
         vec.resize(total_written);
-        return std::make_tuple(vec, output_enc, total_had_errors);
+        return { vec,
+                 gsl::not_null<const Encoding*>(output_enc),
+                 total_had_errors };
       }
       auto needed = encoder->max_buffer_length_from_utf8_if_no_unmappables(
         string.size() - total_read);
-      if (needed == SIZE_MAX) {
+      if (!needed) {
         throw std::overflow_error("Overflow in buffer size computation.");
       }
-      vec.resize(total_written + needed);
+      vec.resize(total_written + needed.value());
     }
   }
 
   /**
    * Encode complete input to `std::vector<uint8_t>` with unmappable characters
    * replaced with decimal numeric character references when the entire input
    * is available as a single buffer (i.e. the end of the buffer marks the
    * end of the stream).
@@ -1119,66 +1190,64 @@ public:
    * The third item in the returned tuple indicates whether there were
    * unmappable characters (that were replaced with HTML numeric character
    * references).
    *
    * _Note:_ It is wrong to use this when the input buffer represents only
    * a segment of the input instead of the whole input. Use `new_encoder()`
    * when encoding segmented output.
    */
-  inline std::tuple<std::vector<uint8_t>, const Encoding*, bool> encode(
-    gsl::span<const char16_t> string) const
+  inline std::tuple<std::vector<uint8_t>, gsl::not_null<const Encoding*>, bool>
+  encode(std::u16string_view string) const
   {
     auto output_enc = output_encoding();
     auto encoder = output_enc->new_encoder();
-    size_t needed =
+    auto needed =
       encoder->max_buffer_length_from_utf16_if_no_unmappables(string.size());
-    if (needed == SIZE_MAX) {
+    if (!needed) {
       throw std::overflow_error("Overflow in buffer size computation.");
     }
-    std::vector<uint8_t> vec(needed);
+    std::vector<uint8_t> vec(needed.value());
     bool total_had_errors = false;
     size_t total_read = 0;
     size_t total_written = 0;
-    uint32_t result;
-    size_t read;
-    size_t written;
-    bool had_errors;
     for (;;) {
-      std::tie(result, read, written, had_errors) = encoder->encode_from_utf16(
-        gsl::make_span(string).subspan(total_read),
-        gsl::make_span(vec).subspan(total_written), true);
+      const auto [result, read, written, had_errors] =
+        encoder->encode_from_utf16(string.substr(total_read),
+                                   gsl::make_span(vec).subspan(total_written),
+                                   true);
       total_read += read;
       total_written += written;
       total_had_errors |= had_errors;
       if (result == INPUT_EMPTY) {
         assert(total_read == static_cast<size_t>(string.size()));
         assert(total_written <= static_cast<size_t>(vec.size()));
         vec.resize(total_written);
-        return std::make_tuple(vec, output_enc, total_had_errors);
+        return { vec,
+                 gsl::not_null<const Encoding*>(output_enc),
+                 total_had_errors };
       }
       auto needed = encoder->max_buffer_length_from_utf16_if_no_unmappables(
         string.size() - total_read);
-      if (needed == SIZE_MAX) {
+      if (!needed) {
         throw std::overflow_error("Overflow in buffer size computation.");
       }
-      vec.resize(total_written + needed);
+      vec.resize(total_written + needed.value());
     }
   }
 
   /**
    * Instantiates a new decoder for this encoding with BOM sniffing enabled.
    *
    * BOM sniffing may cause the returned decoder to morph into a decoder
    * for UTF-8, UTF-16LE or UTF-16BE instead of this encoding.
    */
   inline std::unique_ptr<Decoder> new_decoder() const
   {
-    std::unique_ptr<Decoder> decoder(encoding_new_decoder(this));
-    return decoder;
+    return std::unique_ptr<Decoder>(encoding_new_decoder(this));
   }
 
   /**
    * Instantiates a new decoder for this encoding with BOM sniffing enabled
    * into memory occupied by a previously-instantiated decoder.
    *
    * BOM sniffing may cause the returned decoder to morph into a decoder
    * for UTF-8, UTF-16LE or UTF-16BE instead of this encoding.
@@ -1194,19 +1263,18 @@ public:
    * If the input starts with bytes that are the BOM for this encoding,
    * those bytes are removed. However, the decoder never morphs into a
    * decoder for another encoding: A BOM for another encoding is treated as
    * (potentially malformed) input to the decoding algorithm for this
    * encoding.
    */
   inline std::unique_ptr<Decoder> new_decoder_with_bom_removal() const
   {
-    std::unique_ptr<Decoder> decoder(
+    return std::unique_ptr<Decoder>(
       encoding_new_decoder_with_bom_removal(this));
-    return decoder;
   }
 
   /**
    * Instantiates a new decoder for this encoding with BOM removal
    * into memory occupied by a previously-instantiated decoder.
    *
    * If the input starts with bytes that are the BOM for this encoding,
    * those bytes are removed. However, the decoder never morphs into a
@@ -1227,19 +1295,18 @@ public:
    * for another encoding.)
    *
    * _Note:_ If the caller has performed BOM sniffing on its own but has not
    * removed the BOM, the caller should use `new_decoder_with_bom_removal()`
    * instead of this method to cause the BOM to be removed.
    */
   inline std::unique_ptr<Decoder> new_decoder_without_bom_handling() const
   {
-    std::unique_ptr<Decoder> decoder(
+    return std::unique_ptr<Decoder>(
       encoding_new_decoder_without_bom_handling(this));
-    return decoder;
   }
 
   /**
    * Instantiates a new decoder for this encoding with BOM handling disabled
    * into memory occupied by a previously-instantiated decoder.
    *
    * If the input starts with bytes that look like a BOM, those bytes are
    * not treated as a BOM. (Hence, the decoder never morphs into a decoder
@@ -1255,18 +1322,17 @@ public:
     encoding_new_decoder_without_bom_handling_into(this, &decoder);
   }
 
   /**
    * Instantiates a new encoder for the output encoding of this encoding.
    */
   inline std::unique_ptr<Encoder> new_encoder() const
   {
-    std::unique_ptr<Encoder> encoder(encoding_new_encoder(this));
-    return encoder;
+    return std::unique_ptr<Encoder>(encoding_new_encoder(this));
   }
 
   /**
    * Instantiates a new encoder for the output encoding of this encoding
    * into memory occupied by a previously-instantiated encoder.
    */
   inline void new_encoder_into(Encoder& encoder) const
   {
@@ -1312,21 +1378,23 @@ public:
       null_to_bogus<const uint8_t>(buffer.data()), buffer.size());
   }
 
 private:
   /**
    * Replaces `nullptr` with a bogus pointer suitable for use as part of a
    * zero-length Rust slice.
    */
-  template <class T>
+  template<class T>
   static inline T* null_to_bogus(T* ptr)
   {
-    return ptr ? ptr : reinterpret_cast<T*>(0x1);
+    return ptr ? ptr : reinterpret_cast<T*>(alignof(T));
   }
 
   Encoding() = delete;
   Encoding(const Encoding&) = delete;
   Encoding& operator=(const Encoding&) = delete;
   ~Encoding() = delete;
 };
 
+}; // namespace encoding_rs
+
 #endif // encoding_rs_cpp_h_
--- a/third_party/rust/encoding_c/src/lib.rs
+++ b/third_party/rust/encoding_c/src/lib.rs
@@ -2,17 +2,17 @@
 // file at the top-level directory of this distribution.
 //
 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
 // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
 // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-#![doc(html_root_url = "https://docs.rs/encoding_c/0.8.0")]
+#![doc(html_root_url = "https://docs.rs/encoding_c/0.9.0")]
 
 //! The C API for encoding_rs.
 //!
 //! # Mapping from Rust
 //!
 //! ## Naming convention
 //!
 //! The wrapper function for each method has a name that starts with the name
--- a/third_party/rust/encoding_rs/.cargo-checksum.json
+++ b/third_party/rust/encoding_rs/.cargo-checksum.json
@@ -1,1 +1,1 @@
-{"files":{".travis.yml":"dc509cc3b8f44fbdf1d806f533c3f005afaf0fd77cd266b38cb69bab3e4ea136","CONTRIBUTING.md":"6dac812ad206dbeb43b32ae01062fb79684fb01f9ee778c1c166852adc77d4c9","COPYRIGHT":"20d4fff11cca11529df3f02096fbe8ffe350219cdb07cdedea34e6a762866da5","Cargo.toml":"114f3399a97af04c9e2f8514448ccac81aac9ce7b333ec1594e733aad0c92e87","Ideas.md":"7fbeddb0f8ba7b233673ee705997adc2fddb1636a17fe662532b35ef2810a51d","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"74aa8b6d04c36bb640ee81187a3f24a2fa94e36d4c1d4f2ca164c3784ae87a83","README.md":"f60b9e7ff6d62f6cd580cbd386a039fda2d7407821da984fbe3cdb9c4a64f5d3","generate-encoding-data.py":"8a0a5162098d355e4df63532819769fd6626a66a0aa93f2762e315d6147aa0a5","rustfmt.toml":"c01c06dfbdfcf30730535aab911d69068febb921e2faef9571ceeb6a5c2a3eab","src/ascii.rs":"0fd4833571df22b0bb98e230c07b4ff733284c5b58b7b21a50f4f68c683ee706","src/big5.rs":"780ae537353f899a5772a9e7d062441041276e1eb1506a013e4280c5cda6bb93","src/data.rs":"412c842c698c3ce1cec4a27ab19ca275372ac28940ac49cdf3e0dad71a2c2812","src/euc_jp.rs":"feda0ade5e1c3e4abd7637c59373b977662007990fd164ea7db1acc502ba3534","src/euc_kr.rs":"2699c52055882e34ba4e12d072b8161c635840f3620075ca3f10986aec0e8d3b","src/gb18030.rs":"6a4d5ff9a89cdf1d89de78cd309f01385435dd9a4ffee182e13df2675cf57600","src/handles.rs":"c07a3738e43e8aae11108a30d34067c31ddc5d22074b85ef393f00abcc1f4e01","src/iso_2022_jp.rs":"1f780c3ff72f1a867d6c5782135cd01427eca6d74f0dd6cb23c1406b5163af1a","src/lib.rs":"b53cfe7009dcba83724ac2affa1f3fdd675451a33742ceb9f030eb83e702305f","src/macros.rs":"9ab30e7194f61f268cd7d899cabb06ff9ca7717663926fd583b20334f49ac8d3","src/mem.rs":"326003897f0efefa257210f4e698a2a039e7e9d2fe16e0fc9341b51a68ce1dff","src/replacement.rs":"782f03f04d110e9a0656262bf4296aa0ab8199e196cb63239c30d9649996caa4","src/shift_jis.rs":"84df4ff58b60e0827d6c0c7049f2cf19033f2b9e25a9186bcfb0bbb05e87b380","src/simd_funcs.rs":"76c4abc881f2dd91f8e936b059152fa4ee5056af0af59356fbf105436ddd673f","src/single_byte.rs":"b3fadb4fa1e66b00efc12b8850b3076580a8cd73c9ed810a19421fd3ade9bbf1","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"c962c7aeac3d9ef2aca70c9e21983b231d4cf998cb06879374b0401e5149d1da","src/testing.rs":"16da398fdab694283d24556932ff7fce893e22cf66a180795a830541f4ddd94b","src/utf_16.rs":"1d2c40857c946f6eecf724efc60a196865b4d84a59b08b42fbe4576fa8308fd0","src/utf_8.rs":"dc7df98c65a23607071b699243aec75a461510ee0617abba289df1ebe781c08b","src/utf_8_core.rs":"bbc010dbdfed0f5e7c48a1ab0772eaf2e27711b789bb82f71a678f2240158a65","src/variant.rs":"93dfec2dcfc9fd9711bb55d48177f4a0e9479c7fbd055f08db3853338569da83","src/x_user_defined.rs":"84d054eec249dd676452585f8eb13dc851095021ed6e1f8c79e952c6d81751df"},"package":"98fd0f24d1fb71a4a6b9330c8ca04cbd4e7cc5d846b54ca74ff376bc7c9f798d"}
\ No newline at end of file
+{"files":{".travis.yml":"262b9925451db996c31e4bb8bb6bbdb36c3f6009f407db5ed4b0ed25cd72d8c8","CONTRIBUTING.md":"0d4bfb1068c2b2f32b7bc7833662dfff628d86b0f31068266027c719fb727360","COPYRIGHT":"20d4fff11cca11529df3f02096fbe8ffe350219cdb07cdedea34e6a762866da5","Cargo.toml":"599b8383cc4c55f2e878afcb647406599b144975ac2c1b9589c133a83db72b1d","Ideas.md":"7fbeddb0f8ba7b233673ee705997adc2fddb1636a17fe662532b35ef2810a51d","LICENSE-APACHE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","LICENSE-MIT":"74aa8b6d04c36bb640ee81187a3f24a2fa94e36d4c1d4f2ca164c3784ae87a83","README.md":"de6046ac303d043f7ea5b622e80ee91e3d7d64afb0c6a4cf6ef7086c073722c4","doc/Big5.txt":"f73a2edc5cb6c2d140ba6e07f4542e1c4a234950378acde1df93480f0ca0be0b","doc/EUC-JP.txt":"ee2818b907d0137f40a9ab9fd525fc700a44dbdddb6cf0c157a656566bae4bf1","doc/EUC-KR.txt":"71d9e2ccf3b124e8bdfb433c8cf2773fd878077038d0cec3c7237a50f4a78a30","doc/GBK.txt":"c1b522b5a799884e5001da661f42c5a8f4d0acb9ef1d74b206f22b5f65365606","doc/IBM866.txt":"a5a433e804d0f83af785015179fbc1d9b0eaf1f7960efcd04093e136b51fbd0e","doc/ISO-2022-JP.txt":"af86684f5a8f0e2868d7b2c292860140c3d2e5527530ca091f1b28198e8e2fe6","doc/ISO-8859-10.txt":"6d3949ad7c81ca176895101ed81a1db7df1060d64e262880b94bd31bb344ab4d","doc/ISO-8859-13.txt":"3951dd89cf93f7729148091683cf8511f4529388b7dc8dcd0d62eaed55be93fa","doc/ISO-8859-14.txt":"3d330784a0374fd255a38b47949675cc7168c800530534b0a01cac6edc623adc","doc/ISO-8859-15.txt":"24b1084aab5127a85aab99153f86e24694d0a3615f53b5ce23683f97cf66c47a","doc/ISO-8859-16.txt":"ce0272559b92ba76d7a7e476f6424ae4a5cc72e75b183611b08392e44add4d25","doc/ISO-8859-2.txt":"18ceff88c13d1b5ba455a3919b1e3de489045c4c3d2dd7e8527c125c75d54aad","doc/ISO-8859-3.txt":"21798404c68f4f5db59223362f24999da96968c0628427321fccce7d2849a130","doc/ISO-8859-4.txt":"d27f6520c6c5bfbcc19176b71d081cdb3bccde1622bb3e420d5680e812632d53","doc/ISO-8859-5.txt":"a10ec8d6ea7a78ad15da7275f6cb1a3365118527e28f9af6d0d5830501303f3a","doc/ISO-8859-6.txt":"ccda8a2efc96115336bdd77776637b9712425e44fbcf745353b9057fbef144e7","doc/ISO-8859-7.txt":"17900fa1f27a445958f0a77d7d9056be375a6bd7ee4492aa680c7c1500bab85e","doc/ISO-8859-8-I.txt":"8357555646d54265a9b9ffa3e68b08d132312f1561c60108ff9b8b1167b6ecf2","doc/ISO-8859-8.txt":"72cd6f3afb7b4a9c16a66a362473315770b7755d72c86c870e52fc3eba86c8af","doc/KOI8-R.txt":"839cf19a38da994488004ed7814b1f6151640156a9a2af02bf2efca745fb5966","doc/KOI8-U.txt":"0cc76624ed1f024183e2298b7e019957da2c70c8ca06e0fc4e6f353f50a5054f","doc/Shift_JIS.txt":"34c49141818cb9ddbcf59cc858f78a79be8ad148d563f26415108ae1f148443f","doc/UTF-16BE.txt":"e2e280d8acbaa6d2a6b3569d60e17500a285f2baa0df3363dd85537cd5a1ef8f","doc/UTF-16LE.txt":"70bdc170e3fc5298ba68f10125fb5eeb8b077036cc96bb4416c4de396f6d76c1","doc/UTF-8.txt":"ea7bae742e613010ced002cf4b601a737d2203fad65e115611451bc4428f548a","doc/gb18030.txt":"dc71378a8f07a2d8659f69ee81fb8791fef56ba86f124b429978285237bb4a7b","doc/macintosh.txt":"57491e53866711b4672d9b9ff35380b9dac9e0d8e3d6c20bdd6140603687c023","doc/replacement.txt":"4b6c3bbd7999d9d4108a281594bd02d13607e334a95465afff8c2c08d395f0e4","doc/windows-1250.txt":"61296bb6a21cdab602300d32ecfba434cb82de5ac3bc88d58710d2f125e28d39","doc/windows-1251.txt":"7deea1c61dea1485c8ff02db2c7d578db7a9aab63ab1cfd02ec04b515864689e","doc/windows-1252.txt":"933ef3bdddfce5ee132b9f1a1aa8b47423d2587bbe475b19028d0a6d38e180b6","doc/windows-1253.txt":"1a38748b88e99071a5c7b3d5456ead4caedeabab50d50d658be105bc113714de","doc/windows-1254.txt":"f8372f86c6f8d642563cd6ddc025260553292a39423df1683a98670bd7bf2b47","doc/windows-1255.txt":"4e5852494730054e2da258a74e1b9d780abbcdd8ce22ebc218ca2efe9e90493d","doc/windows-1256.txt":"c0879c5172abedead302a406e8f60d9cd9598694a0ffa4fd288ffe4fef7b8ea1","doc/windows-1257.txt":"c28a0c9f964fcb2b46d21f537c402446501a2800670481d6abf9fd9e9018d523","doc/windows-1258.txt":"5019ae4d61805c79aacbf17c93793342dbb098d65a1837783bc3e2c6d6a23602","doc/windows-874.txt":"4ef0e4501c5feba8b17aee1818602ed44b36ca8475db771ce2fc16d392cabecc","doc/x-mac-cyrillic.txt":"58be154d8a888ca3d484b83b44f749823ef339ab27f14d90ca9a856f5050a8bd","doc/x-user-defined.txt":"f9cd07c4321bf5cfb0be4bdddd251072999b04a6cf7a6f5bc63709a84e2c1ffc","generate-encoding-data.py":"bbe134cc013a17c32bd51e868a2ee4f2c3e2205e40afb9fc60f98fa9758961b8","rustfmt.toml":"85c1a3b4382fd89e991cbb81b70fb52780472edc064c963943cdaaa56e0a2030","src/ascii.rs":"578ebe13e54f1f4eb1f69c29526b25f57e22f5d941c7359f1d3a01f032bce2ed","src/big5.rs":"659ddb66f82142468774715cd9ecdc8356005fec9d91e46d54ae2280a88adb4b","src/data.rs":"18793e23f98d9aba1ed2858c43b2103c9c05a8571429b2128510c68d05ba8cb6","src/euc_jp.rs":"b178172274af1a6be38d388e5a2468e7140e9facf63d2f679f4ed77c3fc20a92","src/euc_kr.rs":"e27bd9c4e2172bb02004dd2a1fcbe02118415a1aec6a90b5632c9eac6f12ba7d","src/gb18030.rs":"752869f47ad0cad02ad3ccb6fde3eb277fa528e10e3d9432a90563db610d9dc2","src/handles.rs":"0598439bf66bd26699cba7e9e2fec001f8c57f3a510578fc3cc118ddc36d6831","src/iso_2022_jp.rs":"d904a92d49fc5878e6cb82a21185051c801489cf2800db8f37269965ca7974cc","src/lib.rs":"5fe2fd8a76f9144e4f080d23483096edd675db0e1a647fa41748743434c617b9","src/macros.rs":"04b3d81f1701b746dcce466ad2c3202a0a3e9c00f1d8db336276660640a12d7b","src/mem.rs":"b408367cef7ba93e9e90ec16cc62f763da58bcdbdb1ec0a856c6651e059ffead","src/replacement.rs":"61e0ae52664b3856f1ed202af6266b441ffcf5e2c9b22976047540e4a3252b41","src/shift_jis.rs":"7106d0a9785425b5af2323f3046e6130bd5125effa4ab484d84b529914855d67","src/simd_funcs.rs":"6139e2c7eebd8f3f35b8ce70891c6731595e5d18fa48b11f04f88c6342335935","src/single_byte.rs":"986571bb52f2cf7779c1dc8bdd8058c3183524a512bc2fcca6637eeee394b573","src/test_data/big5_in.txt":"4c5a8691f8dc717311889c63894026d2fb62725a86c4208ca274a9cc8d42a503","src/test_data/big5_in_ref.txt":"99d399e17750cf9c7cf30bb253dbfe35b81c4fcbdead93cfa48b1429213473c7","src/test_data/big5_out.txt":"6193ca97c297aa20e09396038d18e938bb7ea331c26f0f2454097296723a0b13","src/test_data/big5_out_ref.txt":"36567691f557df144f6cc520015a87038dfa156f296fcf103b56ae9a718be1fc","src/test_data/euc_kr_in.txt":"c86a7224f3215fa0d04e685622a752fdc72763e8ae076230c7fd62de57ec4074","src/test_data/euc_kr_in_ref.txt":"1f419f4ca47d708b54c73c461545a022ae2e20498fdbf8005a483d752a204883","src/test_data/euc_kr_out.txt":"e7f32e026f70be1e1b58e0047baf7d3d2c520269c4f9b9992e158b4decb0a1a3","src/test_data/euc_kr_out_ref.txt":"c9907857980b20b8e9e3b584482ed6567a2be6185d72237b6322f0404944924e","src/test_data/gb18030_in.txt":"ab7231b2d3e9afacdbd7d7f3b9e5361a7ff9f7e1cfdb4f3bd905b9362b309e53","src/test_data/gb18030_in_ref.txt":"dc5069421adca2043c55f5012b55a76fdff651d22e6e699fd0978f8d5706815c","src/test_data/gb18030_out.txt":"f0208d527f5ca63de7d9a0323be8d5cf12d8a104b2943d92c2701f0c3364dac1","src/test_data/gb18030_out_ref.txt":"6819fe47627e4ea01027003fc514b9f21a1322e732d7f1fb92cc6c5455bc6c07","src/test_data/iso_2022_jp_in.txt":"cd24bbdcb1834e25db54646fbf4c41560a13dc7540f6be3dba4f5d97d44513af","src/test_data/iso_2022_jp_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/iso_2022_jp_out.txt":"9b6f015329dda6c3f9ee5ce6dbd6fa9c89acc21283e886836c78b8d833480c21","src/test_data/iso_2022_jp_out_ref.txt":"78cb260093a20116ad9a42f43b05d1848c5ab100b6b9a850749809e943884b35","src/test_data/jis0208_in.txt":"6df3030553ffb0a6615bb33dc8ea9dca6d9623a9028e2ffec754ce3c3da824cc","src/test_data/jis0208_in_ref.txt":"3dc4e6a5e06471942d086b16c9440945e78415f6f3f47e43717e4bc2eac2cdf5","src/test_data/jis0208_out.txt":"4ec24477e1675ce750733bdc3c5add1cd27b6bd4ce1f09289564646e9654e857","src/test_data/jis0208_out_ref.txt":"c3e1cef5032b2b1d93a406f31ff940c4e2dfe8859b8b17ca2761fee7a75a0e48","src/test_data/jis0212_in.txt":"c011f0dd72bd7c8cd922df9374ef8d2769a77190514c77f6c62b415852eeb9fe","src/test_data/jis0212_in_ref.txt":"7d9458b3d2f73e7092a7f505c08ce1d233dde18aa679fbcf9889256239cc9e06","src/test_data/shift_jis_in.txt":"02e389ccef0dd2122e63f503899402cb7f797912c2444cc80ab93131116c5524","src/test_data/shift_jis_in_ref.txt":"512f985950ca902e643c88682dba9708b7c38d3c5ec2925168ab00ac94ab19f9","src/test_data/shift_jis_out.txt":"5fbc44da7bf639bf6cfe0fa1fd3eba7102b88f81919c9ea991302712f69426fb","src/test_data/shift_jis_out_ref.txt":"466322c6fed8286c64582731755290c2296508efdd258826e6279686649b481f","src/test_labels_names.rs":"c962c7aeac3d9ef2aca70c9e21983b231d4cf998cb06879374b0401e5149d1da","src/testing.rs":"b299d27055f3b068de66cc10a75c024b881c48bc093627c01e0b1f8bd7d94666","src/utf_16.rs":"32b6ecc3696542fb269a93c915e7402dde545e793f9599cf7dc63688fa226e0d","src/utf_8.rs":"249ec511970051d71fa863e659ab0b46ce9283d5a628b9b437619b41d4334459","src/utf_8_core.rs":"fe218284dbb9111a2336ff1684d7f58b55d9c4fe7363089a29e57f52901f0707","src/variant.rs":"e2c988a645429fd7457d7fbc487b838ab7ec7bfb8943d192992f18bbac8973f0","src/x_user_defined.rs":"1d25920ec5d005cbd623f34473d68991521aa3a83e52d4eb9b645711f10cd484"},"package":"c6848cbd169668c2338be9940ac8968179edcd8704248e1e0c885a306c42772e"}
\ No newline at end of file
--- a/third_party/rust/encoding_rs/.travis.yml
+++ b/third_party/rust/encoding_rs/.travis.yml
@@ -1,16 +1,16 @@
 language: rust
 rust:
-  - 1.15.0 # Earliest that's known to work
-  - 1.19.0 # Firefox requirement
+  - 1.21.0 # Earliest that's known to work
+  - 1.25.0 # Firefox requirement
   - stable
   - beta
   - nightly
 env:
   - RUST_BACKTRACE=1
   - RUST_BACKTRACE=1 RUSTC_BOOTSTRAP=1
 script:
-  - if [[ $RUSTC_BOOTSTRAP ]]; then cargo test --verbose --features 'simd-accel no-static-ideograph-encoder-tables serde'; fi
+  - if [[ $RUSTC_BOOTSTRAP ]]; then cargo test --verbose --features 'simd-accel less-slow-kanji-encode less-slow-big5-hanzi-encode less-slow-gb-hanzi-encode serde'; fi
   - if [[ -z $RUSTC_BOOTSTRAP ]]; then cargo test --verbose; fi
 #matrix:
 #  allow_failures:
 #    - rust: nightly
--- a/third_party/rust/encoding_rs/CONTRIBUTING.md
+++ b/third_party/rust/encoding_rs/CONTRIBUTING.md
@@ -32,14 +32,14 @@ For example, an implementation of UTF-7 
 
 ## Compatibility with Stable Rust
 
 Please ensure that your Contribution compiles with the latest stable-channel
 rustc.
 
 ## rustfmt
 
-The `rustfmt` version used for this code is 0.8.4. Please either use that
-version or avoid using `rustfmt` (so as not to reformat all the code).
+The `rustfmt` version used for this code is `rustfmt-nightly`. Please either
+use that version or avoid using `rustfmt` (so as not to reformat all the code).
 
 ## Unit tests
 
 Please ensure that `cargo test` succeeds.
--- a/third_party/rust/encoding_rs/Cargo.toml
+++ b/third_party/rust/encoding_rs/Cargo.toml
@@ -7,17 +7,17 @@
 #
 # If you believe there's an error in this file please file an
 # issue against the rust-lang/cargo repository. If you're
 # editing this file be aware that the upstream Cargo.toml
 # will likely look very different (and much more reasonable)
 
 [package]
 name = "encoding_rs"
-version = "0.7.2"
+version = "0.8.0"
 authors = ["Henri Sivonen <hsivonen@hsivonen.fi>"]
 description = "A Gecko-oriented implementation of the Encoding Standard"
 homepage = "https://docs.rs/encoding_rs/"
 documentation = "https://docs.rs/encoding_rs/"
 readme = "README.md"
 keywords = ["encoding", "web", "unicode", "charset"]
 categories = ["text-processing", "encoding", "web-programming", "email"]
 license = "MIT/Apache-2.0"
@@ -27,24 +27,26 @@ lto = true
 [dependencies.cfg-if]
 version = "0.1.0"
 
 [dependencies.serde]
 version = "1.0"
 optional = true
 
 [dependencies.simd]
-version = "0.2.0"
+version = "0.2.2"
 optional = true
 [dev-dependencies.bincode]
 version = "0.8"
 
 [dev-dependencies.serde_derive]
 version = "1.0"
 
 [dev-dependencies.serde_json]
 version = "1.0"
 
 [features]
-no-static-ideograph-encoder-tables = []
+less-slow-big5-hanzi-encode = []
+less-slow-gb-hanzi-encode = []
+less-slow-kanji-encode = []
 simd-accel = ["simd"]
 [badges.travis-ci]
 repository = "hsivonen/encoding_rs"
--- a/third_party/rust/encoding_rs/README.md
+++ b/third_party/rust/encoding_rs/README.md
@@ -97,90 +97,105 @@ These bindings do not cover the `mem` mo
 * [C++](https://github.com/hsivonen/recode_cpp)
 
 ## Optional features
 
 There are currently three optional cargo features:
 
 ### `simd-accel`
 
-Enables SSE2 acceleration on x86 and x86_64 and NEON acceleration on Aarch64.
-Requires nightly Rust. _Enabling this cargo feature is recommended when
-building for x86, x86_64 or Aarch64 on nightly Rust._ The intention is for the
-functionality enabled by this feature to become the normal on-by-default
-behavior once explicit SIMD becames available on all Rust release channels.
+Enables SSE2 acceleration on x86 and x86_64 and NEON acceleration on Aarch64
+and ARMv7. Requires nightly Rust. _Enabling this cargo feature is recommended
+when building for x86, x86_64, ARMv7 or Aarch64 on nightly Rust._ The intention
+is for the functionality enabled by this feature to become the normal
+on-by-default behavior once
+[portable SIMD](https://github.com/rust-lang/rfcs/pull/2366) becames available
+on all Rust release channels.
 
 Enabling this feature breaks the build unless the target is x86 with SSE2
 (Rust's default 32-bit x86 target, `i686`, has SSE2, but Linux distros may
-use an x86 target without SSE2, i.e. `i586` in `rustup` terms), x86_64 or
-Aarch64.
+use an x86 target without SSE2, i.e. `i586` in `rustup` terms), ARMv7 or
+thumbv7 with NEON (`-C target_feature=+neon`), x86_64 or Aarch64.
 
 ### `serde`
 
 Enables support for serializing and deserializing `&'static Encoding`-typed
 struct fields using [Serde][1].
 
 [1]: https://serde.rs/
 
-### `no-static-ideograph-encoder-tables`
+### `less-slow-kanji-encode`
 
-Makes the binary size smaller at the expense of ideograph _encode_ speed for
-Chinese and Japanese legacy encodings. (Does _not_ affect decode speed.)
+Makes JIS X 0208 Level 1 Kanji (the most common Kanji in Shift_JIS, EUC-JP and
+ISO-2022-JP) encode less slow (binary search instead of linear search) at the
+expense of binary size. (Does _not_ affect decode speed.)
+
+Not used by Firefox.
+
+### `less-slow-gb-hanzi-encode`
 
-The speed resulting from enabling this feature is believed to be acceptable
-for Web browser-exposed encoder use cases. However, the result is likely
-unacceptable for other applications that need to produce output in Chinese or
-Japanese legacy encodings. (But applications really should always be using
-UTF-8 for output.)
+Makes GB2312 Level 1 Hanzi (the most common Hanzi in gb18030 and GBK) encode
+less slow (binary search instead of linear search) at the expense of binary
+size. (Does _not_ affect decode speed.)
+
+Not used by Firefox.
+
+### `less-slow-big5-hanzi-encode`
+
+Makes Big5 Level 1 Hanzi (the most common Hanzi in Big5) encode less slow
+(binary search instead of linear search) at the expense of binary size. (Does
+_not_ affect decode speed.)
+
+Not used by Firefox.
 
 ## Performance goals
 
 For decoding to UTF-16, the goal is to perform at least as well as Gecko's old
 uconv. For decoding to UTF-8, the goal is to perform at least as well as
 rust-encoding.
 
 Encoding to UTF-8 should be fast. (UTF-8 to UTF-8 encode should be equivalent
 to `memcpy` and UTF-16 to UTF-8 should be fast.)
 
 Speed is a non-goal when encoding to legacy encodings. Encoding to legacy
 encodings should not be optimized for speed at the expense of code size as long
 as form submission and URL parsing in Gecko don't become noticeably too slow
 in real-world use.
 
-Currently, by default, encoding_rs builds with limited encoder-specific
-accelation tables for GB2312 Level 1 Hanzi, Big5 Level 1 Hanzi and JIS X
-0208 Level 1 Kanji. These tables use binary search and strike a balance
-between not having encoder-specific tables at all (doing linear search
-over the decode-optimized tables) and having larger directly-indexable
-encoder-side tables. It is not clear that anyone wants this in-between
-approach, and it may be changed in the future.
-
-In the interest of binary size, Firefox builds with the
-`no-static-ideograph-encoder-tables` cargo feature, which omits
-the encoder-specific tables and performs linear search over the
-decode-optimized tables. With realistic work loads, this seemed fast enough
+In the interest of binary size, by default, encoding_rs does not have any
+encode-specific data tables. Therefore, encoders search the decode-optimized
+data tables. This is a linear search in most cases. As a result, encode to
+legacy encodings varies from slow to extremely slow relative to other
+libraries. Still, with realistic work loads, this seemed fast enough
 not to be user-visibly slow on Raspberry Pi 3 (which stood in for a phone
 for testing) in the Web-exposed encoder use cases.
 
+See the cargo features above for optionally making Kanji and Hanzi legacy
+encode a bit less slow.
+
+Actually fast options for legacy encode may be added in the future, but there
+do not appear to be pressing use cases.
+
 A framework for measuring performance is [available separately][2].
 
 [2]: https://github.com/hsivonen/encoding_bench/
 
 ## Rust Version Compatibility
 
 It is a goal to support the latest stable Rust, the latest nightly Rust and
-the version of Rust that's used for Firefox Nightly (currently 1.19.0).
+the version of Rust that's used for Firefox Nightly (currently 1.25.0).
 These are tested on Travis.
 
 Additionally, beta and the oldest known to work Rust version (currently
-1.15.0) are tested on Travis. The oldest Rust known to work is tested as
+1.21.0) are tested on Travis. The oldest Rust known to work is tested as
 a canary so that when the oldest known to work no longer works, the change
 can be documented here. At this time, there is no firm commitment to support
-a version older than what's required by Firefox, but there isn't an active
-plan to make changes that would make 1.15.0 no longer work, either.
+a version older than what's required by Firefox. The oldest supported Rust
+is expected to move forward rapidly when `stdsimd` can replace the `simd`
+crate without performance regression.
 
 ## Compatibility with rust-encoding
 
 A compatibility layer that implements the rust-encoding API on top of
 encoding_rs is
 [provided as a separate crate](https://github.com/hsivonen/encoding_rs_compat)
 (cannot be uploaded to crates.io). The compatibility layer was originally
 written with the assuption that Firefox would need it, but it is not currently
@@ -202,29 +217,43 @@ used in Firefox.
       non-x86 architectures (process an `usize` instead of `u8` at a time).
 - [x] Split FFI into a separate crate so that the FFI doesn't interfere with
       LTO in pure-Rust usage.
 - [x] Compress CJK indices by making use of sequential code points as well
       as Unicode-ordered parts of indices.
 - [x] Make lookups by label or name use binary search that searches from the
       end of the label/name to the start.
 - [x] Make labels with non-ASCII bytes fail fast.
-- [ ] Parallelize UTF-8 validation using [Rayon](https://github.com/nikomatsakis/rayon).
+- [ ] ~Parallelize UTF-8 validation using [Rayon](https://github.com/nikomatsakis/rayon).~
+      (This turned out to be a pessimization in the ASCII case due to memory bandwidth reasons.)
 - [x] Provide an XPCOM/MFBT-flavored C++ API.
 - [ ] Investigate accelerating single-byte encode with a single fast-tracked
       range per encoding.
 - [x] Replace uconv with encoding_rs in Gecko.
 - [x] Implement the rust-encoding API in terms of encoding_rs.
 - [x] Add SIMD acceleration for Aarch64.
-- [ ] Investigate the use of NEON on 32-bit ARM.
+- [x] Investigate the use of NEON on 32-bit ARM.
 - [ ] Investigate Björn Höhrmann's lookup table acceleration for UTF-8 as
       adapted to Rust in rust-encoding.
+- [ ] Add actually fast CJK encode options.
 
 ## Release Notes
 
+### 0.8.0
+
+* Changed the minimum supported version of Rust to 1.21.0 (semver breaking
+  change).
+* Flipped around the defaults vs. optional features for controlling the size
+  vs. speed trade-off for Kanji and Hanzi legacy encode (semver breaking
+  change).
+* Added NEON support on ARMv7.
+* SIMD-accelerated x-user-defined to UTF-16 decode.
+* Made UTF-16LE and UTF-16BE decode a lot faster (including SIMD
+  acceleration).
+
 ### 0.7.2
 
 * Add the `mem` module.
 * Refactor SIMD code which can affect performance outside the `mem`
   module.
 
 ### 0.7.1
 
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/Big5.txt
@@ -0,0 +1,16 @@
+/// This is Big5 with HKSCS with mappings to more recent Unicode assignments
+/// instead of the Private Use Area code points that have been used historically.
+/// It is believed to be able to decode existing Web content in a way that makes
+/// sense.
+///
+/// To avoid form submissions generating data that Web servers don't understand,
+/// the encoder doesn't use the HKSCS byte sequences that precede the unextended
+/// Big5 in the lexical order.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/big5.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/big5-bmp.html)
+///
+/// This encoding is designed to be suited for decoding the Windows code page 950
+/// and its HKSCS patched "951" variant such that the text makes sense, given
+/// assignments that Unicode has made after those encodings used Private Use
+/// Area characters.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/EUC-JP.txt
@@ -0,0 +1,12 @@
+/// This is the legacy Unix encoding for Japanese.
+///
+/// For compatibility with Web servers that don't expect three-byte sequences
+/// in form submissions, the encoder doesn't generate three-byte sequences.
+/// That is, the JIS X 0212 support is decode-only.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/euc-jp.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/euc-jp-bmp.html)
+///
+/// This encoding roughly matches the Windows code page 20932. There are error
+/// handling differences and a handful of 2-byte sequences that decode differently.
+/// Additionall, Windows doesn't support 3-byte sequences.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/EUC-KR.txt
@@ -0,0 +1,10 @@
+/// This is the Korean encoding for Windows. It extends the Unix legacy encoding
+/// for Korean, based on KS X 1001 (which also formed the base of MacKorean on Mac OS
+/// Classic), with all the characters from the Hangul Syllables block of Unicode.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/euc-kr.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/euc-kr-bmp.html)
+///
+/// This encoding matches the Windows code page 949, except Windows decodes byte 0x80
+/// to U+0080 and some byte sequences that are error per the Encoding Standard to
+/// the question mark or the Private Use Area.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/GBK.txt
@@ -0,0 +1,16 @@
+/// The decoder for this encoding is the same as the decoder for gb18030.
+/// The encoder side of this encoding is GBK with Windows code page 936 euro
+/// sign behavior. GBK extends GB2312-80 to cover the CJK Unified Ideographs
+/// Unicode block as well as a handful of ideographs from the CJK Unified
+/// Ideographs Extension A and CJK Compatibility Ideographs blocks.
+///
+/// Unlike e.g. in the case of ISO-8859-1 and windows-1252, GBK encoder wasn't
+/// unified with the gb18030 encoder in the Encoding Standard out of concern
+/// that servers that expect GBK form submissions might not be able to handle
+/// the four-byte sequences.
+///
+/// [Index visualization for the two-byte sequences](https://encoding.spec.whatwg.org/gb18030.html),
+/// [Visualization of BMP coverage of the two-byte index](https://encoding.spec.whatwg.org/gb18030-bmp.html)
+///
+/// The encoder of this encoding roughly matches the Windows code page 936.
+/// The decoder side is a superset.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/IBM866.txt
@@ -0,0 +1,8 @@
+/// This the most notable one of the DOS Cyrillic code pages. It has the same
+/// box drawing characters as code page 437, so it can be used for decoding
+/// DOS-era ASCII + box drawing data.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/ibm866.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/ibm866-bmp.html)
+///
+/// This encoding matches the Windows code page 866.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-2022-JP.txt
@@ -0,0 +1,10 @@
+/// This the primary pre-UTF-8 encoding for Japanese email. It uses the ASCII
+/// byte range to encode non-Basic Latin characters. It's the only encoding
+/// supported by this crate whose encoder is stateful.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/jis0208.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/jis0208-bmp.html)
+///
+/// This encoding roughly matches the Windows code page 50220. Notably, Windows
+/// uses U+30FB in place of the REPLACEMENT CHARACTER and otherwise differs in
+/// error handling.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-10.txt
@@ -0,0 +1,8 @@
+/// This is the Nordic part of the ISO/IEC 8859 encoding family. This encoding
+/// is also known as Latin 6.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-10.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-10-bmp.html)
+///
+/// The Windows code page number for this encoding is 28600, but kernel32.dll
+/// does not support this encoding.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-13.txt
@@ -0,0 +1,8 @@
+/// This is the Baltic part of the ISO/IEC 8859 encoding family. This encoding
+/// is also known as Latin 7.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-13.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-13-bmp.html)
+///
+/// This encoding matches the Windows code page 28603, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-14.txt
@@ -0,0 +1,8 @@
+/// This is the Celtic part of the ISO/IEC 8859 encoding family. This encoding
+/// is also known as Latin 8.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-14.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-14-bmp.html)
+///
+/// The Windows code page number for this encoding is 28604, but kernel32.dll
+/// does not support this encoding.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-15.txt
@@ -0,0 +1,7 @@
+/// This is the revised Western European part of the ISO/IEC 8859 encoding
+/// family. This encoding is also known as Latin 9.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-15.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-15-bmp.html)
+///
+/// This encoding matches the Windows code page 28605.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-16.txt
@@ -0,0 +1,8 @@
+/// This is the South-Eastern European part of the ISO/IEC 8859 encoding
+/// family. This encoding is also known as Latin 10.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-16.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-16-bmp.html)
+///
+/// The Windows code page number for this encoding is 28606, but kernel32.dll
+/// does not support this encoding.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-2.txt
@@ -0,0 +1,6 @@
+/// This is the Central European part of the ISO/IEC 8859 encoding family. This encoding is also known as Latin 2.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-2.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-2-bmp.html)
+///
+/// This encoding matches the Windows code page 28592.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-3.txt
@@ -0,0 +1,6 @@
+/// This is the South European part of the ISO/IEC 8859 encoding family. This encoding is also known as Latin 3.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-3.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-3-bmp.html)
+///
+/// This encoding matches the Windows code page 28593.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-4.txt
@@ -0,0 +1,6 @@
+/// This is the North European part of the ISO/IEC 8859 encoding family. This encoding is also known as Latin 4.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-4.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-4-bmp.html)
+///
+/// This encoding matches the Windows code page 28594.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-5.txt
@@ -0,0 +1,6 @@
+/// This is the Cyrillic part of the ISO/IEC 8859 encoding family.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-5.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-5-bmp.html)
+///
+/// This encoding matches the Windows code page 28595.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-6.txt
@@ -0,0 +1,7 @@
+/// This is the Arabic part of the ISO/IEC 8859 encoding family.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-6.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-6-bmp.html)
+///
+/// This encoding matches the Windows code page 28596, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-7.txt
@@ -0,0 +1,11 @@
+/// This is the Greek part of the ISO/IEC 8859 encoding family.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-7.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-7-bmp.html)
+///
+/// This encoding roughly matches the Windows code page 28597. Windows decodes
+/// unassigned code points, the currency signs at 0xA4 and 0xA5 as well as
+/// 0xAA, which should be U+037A GREEK YPOGEGRAMMENI, to the Private Use Area
+/// of Unicode. Windows decodes 0xA1 to U+02BD MODIFIER LETTER REVERSED COMMA
+/// instead of U+2018 LEFT SINGLE QUOTATION MARK and 0xA2 to U+02BC MODIFIER
+/// LETTER APOSTROPHE instead of U+2019 RIGHT SINGLE QUOTATION MARK.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-8-I.txt
@@ -0,0 +1,9 @@
+/// This is the Hebrew part of the ISO/IEC 8859 encoding family in logical order.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-8.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-8-bmp.html)
+///
+/// This encoding roughly matches the Windows code page 38598. Windows decodes
+/// 0xAF to OVERLINE instead of MACRON and 0xFE and 0xFD to the Private Use
+/// Area instead of LRM and RLM. Windows decodes unassigned code points to
+/// the private use area.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/ISO-8859-8.txt
@@ -0,0 +1,9 @@
+/// This is the Hebrew part of the ISO/IEC 8859 encoding family in visual order.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/iso-8859-8.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/iso-8859-8-bmp.html)
+///
+/// This encoding roughly matches the Windows code page 28598. Windows decodes
+/// 0xAF to OVERLINE instead of MACRON and 0xFE and 0xFD to the Private Use
+/// Area instead of LRM and RLM. Windows decodes unassigned code points to
+/// the private use area.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/KOI8-R.txt
@@ -0,0 +1,6 @@
+/// This is an encoding for Russian from [RFC 1489](https://tools.ietf.org/html/rfc1489).
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/koi8-r.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/koi8-r-bmp.html)
+///
+/// This encoding matches the Windows code page 20866.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/KOI8-U.txt
@@ -0,0 +1,6 @@
+/// This is an encoding for Ukrainian adapted from KOI8-R.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/koi8-u.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/koi8-u-bmp.html)
+///
+/// This encoding matches the Windows code page 21866.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/Shift_JIS.txt
@@ -0,0 +1,8 @@
+/// This is the Japanese encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/shift_jis.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/shift_jis-bmp.html)
+///
+/// This encoding matches the Windows code page 932, except Windows decodes some byte
+/// sequences that are error per the Encoding Standard to the question mark or the
+/// Private Use Area and generally uses U+30FB in place of the REPLACEMENT CHARACTER.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/UTF-16BE.txt
@@ -0,0 +1,8 @@
+/// This decode-only encoding uses 16-bit code units due to Unicode originally
+/// having been designed as a 16-bit reportoire. In the absence of a byte order
+/// mark the big endian byte order is assumed.
+///
+/// There is no corresponding encoder in this crate or in the Encoding
+/// Standard. The output encoding of this encoding is UTF-8.
+///
+/// This encoding matches the Windows code page 1201.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/UTF-16LE.txt
@@ -0,0 +1,8 @@
+/// This decode-only encoding uses 16-bit code units due to Unicode originally
+/// having been designed as a 16-bit reportoire. In the absence of a byte order
+/// mark the little endian byte order is assumed.
+///
+/// There is no corresponding encoder in this crate or in the Encoding
+/// Standard. The output encoding of this encoding is UTF-8.
+///
+/// This encoding matches the Windows code page 1200.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/UTF-8.txt
@@ -0,0 +1,5 @@
+/// This is the encoding that should be used for all new development it can
+/// represent all of Unicode.
+///
+/// This encoding matches the Windows code page 65001, except Windows differs
+/// in the number of errors generated for some erroneous byte sequences.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/gb18030.txt
@@ -0,0 +1,9 @@
+/// This encoding matches GB18030-2005 except the two-byte sequence 0xA3 0xA0
+/// maps to U+3000 for compatibility with existing Web content. As a result,
+/// this encoding can represent all of Unicode except for the private-use
+/// character U+E5E5.
+///
+/// [Index visualization for the two-byte sequences](https://encoding.spec.whatwg.org/gb18030.html),
+/// [Visualization of BMP coverage of the two-byte index](https://encoding.spec.whatwg.org/gb18030-bmp.html)
+///
+/// This encoding matches the Windows code page 54936.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/macintosh.txt
@@ -0,0 +1,7 @@
+/// This is the MacRoman encoding from Mac OS Classic.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/macintosh.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/macintosh-bmp.html)
+///
+/// This encoding matches the Windows code page 10000, except Windows decodes
+/// 0xBD to U+2126 OHM SIGN instead of U+03A9 GREEK CAPITAL LETTER OMEGA.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/replacement.txt
@@ -0,0 +1,10 @@
+/// This decode-only encoding decodes all non-zero-length streams to a single
+/// REPLACEMENT CHARACTER. Its purpose is to avoid the use of an
+/// ASCII-compatible fallback encoding (typically windows-1252) for some
+/// encodings that are no longer supported by the Web Platform and that
+/// would be dangerous to treat as ASCII-compatible.
+///
+/// There is no corresponding encoder. The output encoding of this encoding
+/// is UTF-8.
+///
+/// This encoding does not have a Windows code page number.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1250.txt
@@ -0,0 +1,6 @@
+/// This is the Central European encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1250.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1250-bmp.html)
+///
+/// This encoding matches the Windows code page 1250.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1251.txt
@@ -0,0 +1,6 @@
+/// This is the Cyrillic encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1251.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1251-bmp.html)
+///
+/// This encoding matches the Windows code page 1251.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1252.txt
@@ -0,0 +1,7 @@
+/// This is the Western encoding for Windows. It is an extension of ISO-8859-1,
+/// which is known as Latin 1.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1252.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1252-bmp.html)
+///
+/// This encoding matches the Windows code page 1252.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1253.txt
@@ -0,0 +1,8 @@
+/// This is the Greek encoding for Windows. It is mostly an extension of
+/// ISO-8859-7, but U+0386 is mapped to a different byte.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1253.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1253-bmp.html)
+///
+/// This encoding matches the Windows code page 1253, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1254.txt
@@ -0,0 +1,7 @@
+/// This is the Turkish encoding for Windows. It is an extension of ISO-8859-9,
+/// which is known as Latin 5.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1254.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1254-bmp.html)
+///
+/// This encoding matches the Windows code page 1254.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1255.txt
@@ -0,0 +1,8 @@
+/// This is the Hebrew encoding for Windows. It is an extension of ISO-8859-8-I,
+/// except for a currency sign swap.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1255.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1255-bmp.html)
+///
+/// This encoding matches the Windows code page 1255, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1256.txt
@@ -0,0 +1,6 @@
+/// This is the Arabic encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1256.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1256-bmp.html)
+///
+/// This encoding matches the Windows code page 1256.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1257.txt
@@ -0,0 +1,7 @@
+/// This is the Baltic encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1257.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1257-bmp.html)
+///
+/// This encoding matches the Windows code page 1257, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-1258.txt
@@ -0,0 +1,11 @@
+/// This is the Vietnamese encoding for Windows.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-1258.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-1258-bmp.html)
+///
+/// This encoding matches the Windows code page 1258 when used in the
+/// non-normalizing mode. Unlike with the other single-byte encodings, the
+/// result of decoding is not necessarily in Normalization Form C. On the
+/// other hand, input in the Normalization Form C is not encoded without
+/// replacement. In general, it's a bad idea to encode to encodings other
+/// than UTF-8, but this encoding is especially hazardous to encode to.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/windows-874.txt
@@ -0,0 +1,7 @@
+/// This is the Thai encoding for Windows. It is an extension of TIS-620 / ISO-8859-11.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/windows-874.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/windows-874-bmp.html)
+///
+/// This encoding matches the Windows code page 874, except Windows decodes
+/// unassigned code points to the Private Use Area of Unicode.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/x-mac-cyrillic.txt
@@ -0,0 +1,6 @@
+/// This is the MacUkrainian encoding from Mac OS Classic.
+///
+/// [Index visualization](https://encoding.spec.whatwg.org/x-mac-cyrillic.html),
+/// [Visualization of BMP coverage](https://encoding.spec.whatwg.org/x-mac-cyrillic-bmp.html)
+///
+/// This encoding matches the Windows code page 10017.
new file mode 100644
--- /dev/null
+++ b/third_party/rust/encoding_rs/doc/x-user-defined.txt
@@ -0,0 +1,6 @@
+/// This encoding offsets the non-ASCII bytes by `0xF700` thereby decoding
+/// them to the Private Use Area of Unicode. It was used for loading binary
+/// data into a JavaScript string using `XMLHttpRequest` before XHR supported
+/// the `"arraybuffer"` response type.
+///
+/// This encoding does not have a Windows code page number.
--- a/third_party/rust/encoding_rs/generate-encoding-data.py
+++ b/third_party/rust/encoding_rs/generate-encoding-data.py
@@ -28,43 +28,50 @@ def cmp_from_end(one, other):
 
 class Label:
   def __init__(self, label, preferred):
     self.label = label
     self.preferred = preferred
   def __cmp__(self, other):
     return cmp_from_end(self.label, other.label)
 
+class CodePage:
+  def __init__(self, code_page, preferred):
+    self.code_page = code_page
+    self.preferred = preferred
+  def __cmp__(self, other):
+    return self.code_page, other.code_page
+
 def static_u16_table(name, data):
   data_file.write('''pub static %s: [u16; %d] = [
   ''' % (name, len(data)))
 
   for i in xrange(len(data)):
     data_file.write('0x%04X,\n' % data[i])
 
   data_file.write('''];
 
   ''')
 
-def static_u16_table_from_indexable(name, data, item):
-  data_file.write('''#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+def static_u16_table_from_indexable(name, data, item, feature):
+  data_file.write('''#[cfg(feature = "%s")]
 static %s: [u16; %d] = [
-  ''' % (name, len(data)))
+  ''' % (feature, name, len(data)))
 
   for i in xrange(len(data)):
     data_file.write('0x%04X,\n' % data[i][item])
 
   data_file.write('''];
 
   ''')
 
-def static_u8_pair_table_from_indexable(name, data, item):
-  data_file.write('''#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+def static_u8_pair_table_from_indexable(name, data, item, feature):
+  data_file.write('''#[cfg(feature = "%s")]
 static %s: [[u8; 2]; %d] = [
-  ''' % (name, len(data)))
+  ''' % (feature, name, len(data)))
 
   for i in xrange(len(data)):
     data_file.write('[0x%02X, 0x%02X],\n' % data[i][item])
 
   data_file.write('''];
 
   ''')
 
@@ -77,32 +84,94 @@ labels = []
 data = json.load(open("../encoding/encodings.json", "r"))
 
 indexes = json.load(open("../encoding/indexes.json", "r"))
 
 single_byte = []
 
 multi_byte = []
 
+code_pages = []
+
 def to_camel_name(name):
   if name == u"iso-8859-8-i":
     return u"Iso8I"
   if name.startswith(u"iso-8859-"):
     return name.replace(u"iso-8859-", u"Iso")
   return name.title().replace(u"X-", u"").replace(u"-", u"").replace(u"_", u"")
 
 def to_constant_name(name):
   return name.replace(u"-", u"_").upper()
 
 def to_snake_name(name):
   return name.replace(u"-", u"_").lower()
 
 def to_dom_name(name):
   return name
 
+encodings_by_code_page = {
+  932: "Shift_JIS",
+  936: "GBK",
+  949: "EUC-KR",
+  950: "Big5",
+  866: "IBM866",
+  874: "windows-874",
+  1200: "UTF-16LE",
+  1201: "UTF-16BE",
+  1250: "windows-1250",
+  1251: "windows-1251",
+  1252: "windows-1252",
+  1253: "windows-1253",
+  1254: "windows-1254",
+  1255: "windows-1255",
+  1256: "windows-1256",
+  1257: "windows-1257",
+  1258: "windows-1258",
+  10000: "macintosh",
+  10017: "x-mac-cyrillic",
+  20866: "KOI8-R",
+  20932: "EUC-JP",
+  21866: "KOI8-U",
+  28592: "ISO-8859-2",
+  28593: "ISO-8859-3",
+  28594: "ISO-8859-4",
+  28595: "ISO-8859-5",
+  28596: "ISO-8859-6",
+  28597: "ISO-8859-7",
+  28598: "ISO-8859-8",
+  28600: "ISO-8859-10",
+  28603: "ISO-8859-13",
+  28604: "ISO-8859-14",
+  28605: "ISO-8859-15",
+  28606: "ISO-8859-16",
+  38598: "ISO-8859-8-I",
+  50221: "ISO-2022-JP",
+  54936: "gb18030",
+  65001: "UTF-8",
+}
+
+code_pages_by_encoding = {}
+
+for code_page, encoding in encodings_by_code_page.iteritems():
+  code_pages_by_encoding[encoding] = code_page
+
+encoding_by_alias_code_page = {
+  951: "Big5",
+  20936: "GBK",
+  20949: "EUC-KR",
+  28591: "windows-1252",
+  28599: "windows-1254",
+  28601: "windows-847",
+  50220: "ISO-2022-JP",
+  50222: "ISO-2022-JP",
+  51949: "EUC-JP",
+  51936: "GBK",
+  51949: "EUC-KR",
+}
+
 #
 
 for group in data:
   if group["heading"] == "Legacy single-byte encodings":
     single_byte = group["encodings"]
   else:
     multi_byte.extend(group["encodings"])
   for encoding in group["encodings"]:
@@ -172,17 +241,21 @@ const LONGEST_LABEL_LENGTH: usize = %d; 
 
 for name in preferred:
   variant = None
   if is_single_byte(name):
     variant = "SingleByte(data::%s_DATA)" % to_constant_name(u"iso-8859-8" if name == u"ISO-8859-8-I" else name)
   else:
     variant = to_camel_name(name)
 
-  label_file.write('''/// The initializer for the %s encoding.
+  docfile = open("doc/%s.txt" % name, "r")
+  doctext = docfile.read()
+  docfile.close()
+
+  label_file.write('''/// The initializer for the [%s](static.%s.html) encoding.
 ///
 /// For use only for taking the address of this form when
 /// Rust prohibits the use of the non-`_INIT` form directly,
 /// such as in initializers of other `static`s. If in doubt,
 /// use the corresponding non-`_INIT` reference-typed `static`.
 ///
 /// This part of the public API will go away if Rust changes
 /// to make the referent of `pub const FOO: &'static Encoding`
@@ -191,23 +264,24 @@ for name in preferred:
 /// items.
 pub static %s_INIT: Encoding = Encoding {
     name: "%s",
     variant: VariantEncoding::%s,
 };
 
 /// The %s encoding.
 ///
+%s///
 /// This will change from `static` to `const` if Rust changes
 /// to make the referent of `pub const FOO: &'static Encoding`
 /// unique cross-crate, so don't take the address of this
 /// `static`.
 pub static %s: &'static Encoding = &%s_INIT;
 
-''' % (to_dom_name(name), to_constant_name(name), to_dom_name(name), variant, to_dom_name(name), to_constant_name(name), to_constant_name(name)))
+''' % (to_dom_name(name), to_constant_name(name), to_constant_name(name), to_dom_name(name), variant, to_dom_name(name), doctext, to_constant_name(name), to_constant_name(name)))
 
 label_file.write("""static LABELS_SORTED: [&'static str; %d] = [
 """ % len(labels))
 
 for label in labels:
   label_file.write('''"%s",\n''' % label.label)
 
 label_file.write("""];
@@ -329,18 +403,18 @@ for i in xrange(len(level1_hanzi_index))
   level1_hanzi_pairs.append((level1_hanzi_index[i], (hanzi_lead, hanzi_trail)))
 level1_hanzi_pairs.append((0x4E5A, (0xC8, 0x7B)))
 level1_hanzi_pairs.append((0x5202, (0xC8, 0x7D)))
 level1_hanzi_pairs.append((0x9FB0, (0xC8, 0xA1)))
 level1_hanzi_pairs.append((0x5188, (0xC8, 0xA2)))
 level1_hanzi_pairs.append((0x9FB1, (0xC8, 0xA3)))
 level1_hanzi_pairs.sort(key=lambda x: x[0])
 
-static_u16_table_from_indexable("BIG5_LEVEL1_HANZI_CODE_POINTS", level1_hanzi_pairs, 0)
-static_u8_pair_table_from_indexable("BIG5_LEVEL1_HANZI_BYTES", level1_hanzi_pairs, 1)
+static_u16_table_from_indexable("BIG5_LEVEL1_HANZI_CODE_POINTS", level1_hanzi_pairs, 0, "less-slow-big5-hanzi-encode")
+static_u8_pair_table_from_indexable("BIG5_LEVEL1_HANZI_BYTES", level1_hanzi_pairs, 1, "less-slow-big5-hanzi-encode")
 
 # JIS0208
 
 index = indexes["jis0208"]
 
 # JIS 0208 Level 1 Kanji
 static_u16_table("JIS0208_LEVEL1_KANJI", index[1410:4375])
 
@@ -471,18 +545,18 @@ level1_kanji_pairs = []
 for i in xrange(len(level1_kanji_index)):
   pointer = 1410 + i
   (lead, trail) = divmod(pointer, 188)
   lead += 0x81 if lead < 0x1F else 0xC1
   trail += 0x40 if trail < 0x3F else 0x41
   level1_kanji_pairs.append((level1_kanji_index[i], (lead, trail)))
 level1_kanji_pairs.sort(key=lambda x: x[0])
 
-static_u16_table_from_indexable("JIS0208_LEVEL1_KANJI_CODE_POINTS", level1_kanji_pairs, 0)
-static_u8_pair_table_from_indexable("JIS0208_LEVEL1_KANJI_SHIFT_JIS_BYTES", level1_kanji_pairs, 1)
+static_u16_table_from_indexable("JIS0208_LEVEL1_KANJI_CODE_POINTS", level1_kanji_pairs, 0, "less-slow-kanji-encode")
+static_u8_pair_table_from_indexable("JIS0208_LEVEL1_KANJI_SHIFT_JIS_BYTES", level1_kanji_pairs, 1, "less-slow-kanji-encode")
 
 # ISO-2022-JP half-width katakana
 
 # index is still jis0208
 half_width_index = indexes["iso-2022-jp-katakana"]
 
 data_file.write('''pub static ISO_2022_JP_HALF_WIDTH_TRAIL: [u8; %d] = [
 ''' % len(half_width_index))
@@ -848,18 +922,18 @@ static_u16_table("GB18030_RANGE_OFFSETS"
 level1_hanzi_index = hanzi_index[:(94 * (0xD8 - 0xB0) - 5)]
 level1_hanzi_pairs = []
 for i in xrange(len(level1_hanzi_index)):
   hanzi_lead = (i / 94) + 0xB0
   hanzi_trail = (i % 94) + 0xA1
   level1_hanzi_pairs.append((level1_hanzi_index[i], (hanzi_lead, hanzi_trail)))
 level1_hanzi_pairs.sort(key=lambda x: x[0])
 
-static_u16_table_from_indexable("GB2312_LEVEL1_HANZI_CODE_POINTS", level1_hanzi_pairs, 0)
-static_u8_pair_table_from_indexable("GB2312_LEVEL1_HANZI_BYTES", level1_hanzi_pairs, 1)
+static_u16_table_from_indexable("GB2312_LEVEL1_HANZI_CODE_POINTS", level1_hanzi_pairs, 0, "less-slow-gb-hanzi-encode")
+static_u8_pair_table_from_indexable("GB2312_LEVEL1_HANZI_BYTES", level1_hanzi_pairs, 1, "less-slow-gb-hanzi-encode")
 
 data_file.write('''#[inline(always)]
 fn map_with_ranges(haystack: &[u16], other: &[u16], needle: u16) -> u16 {
     debug_assert_eq!(haystack.len(), other.len());
     match haystack.binary_search(&needle) {
         Ok(i) => other[i],
         Err(i) => other[i - 1] + (needle - haystack[i - 1]),
     }
@@ -979,27 +1053,27 @@ pub fn gb2312_other_decode(pointer: u16)
 
 #[inline(always)]
 pub fn gb2312_other_encode(bmp: u16) -> Option<u16> {
     map_with_unsorted_ranges(&GB2312_OTHER_UNSORTED_OFFSETS[..],
                              &GB2312_OTHER_POINTERS[..],
                              bmp)
 }
 
-#[cfg(feature = "no-static-ideograph-encoder-tables")]
+#[cfg(not(feature = "less-slow-gb-hanzi-encode"))]
 #[inline(always)]
 pub fn gb2312_level1_hanzi_encode(bmp: u16) -> Option<(u8, u8)> {
     position(&GB2312_HANZI[..(94 * (0xD8 - 0xB0) - 5)], bmp).map(|hanzi_pointer| {
         let hanzi_lead = (hanzi_pointer / 94) + 0xB0;
         let hanzi_trail = (hanzi_pointer % 94) + 0xA1;
         (hanzi_lead as u8, hanzi_trail as u8)
     })
 }
 
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+#[cfg(feature = "less-slow-gb-hanzi-encode")]
 #[inline(always)]
 pub fn gb2312_level1_hanzi_encode(bmp: u16) -> Option<(u8, u8)> {
     match GB2312_LEVEL1_HANZI_CODE_POINTS.binary_search(&bmp) {
         Ok(i) => {
             let pair = &GB2312_LEVEL1_HANZI_BYTES[i];
             Some((pair[0], pair[1]))
         }
         Err(_) => None,
@@ -1021,17 +1095,17 @@ pub fn ksx1001_other_decode(pointer: u16
 
 #[inline(always)]
 pub fn ksx1001_other_encode(bmp: u16) -> Option<u16> {
     map_with_unsorted_ranges(&KSX1001_OTHER_UNSORTED_OFFSETS[..],
                              &KSX1001_OTHER_POINTERS[..],
                              bmp)
 }
 
-#[cfg(feature = "no-static-ideograph-encoder-tables")]
+#[cfg(not(feature = "less-slow-kanji-encode"))]
 #[inline(always)]
 pub fn jis0208_level1_kanji_shift_jis_encode(bmp: u16) -> Option<(u8, u8)> {
     position(&JIS0208_LEVEL1_KANJI[..], bmp).map(|kanji_pointer| {
         let pointer = 1410 + kanji_pointer;
         let lead = pointer / 188;
         let lead_offset = if lead < 0x1F {
             0x81
         } else {
@@ -1042,39 +1116,39 @@ pub fn jis0208_level1_kanji_shift_jis_en
             0x40
         } else {
             0x41
         };
         ((lead + lead_offset) as u8, (trail + trail_offset) as u8)
     })
 }
 
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+#[cfg(feature = "less-slow-kanji-encode")]
 #[inline(always)]
 pub fn jis0208_level1_kanji_shift_jis_encode(bmp: u16) -> Option<(u8, u8)> {
     match JIS0208_LEVEL1_KANJI_CODE_POINTS.binary_search(&bmp) {
         Ok(i) => {
             let pair = &JIS0208_LEVEL1_KANJI_SHIFT_JIS_BYTES[i];
             Some((pair[0], pair[1]))
         }
         Err(_) => None,
     }
 }
 
-#[cfg(feature = "no-static-ideograph-encoder-tables")]
+#[cfg(not(feature = "less-slow-kanji-encode"))]
 #[inline(always)]
 pub fn jis0208_level1_kanji_euc_jp_encode(bmp: u16) -> Option<(u8, u8)> {
     position(&JIS0208_LEVEL1_KANJI[..], bmp).map(|kanji_pointer| {
         let lead = (kanji_pointer / 94) + 0xB0;
         let trail = (kanji_pointer % 94) + 0xA1;
         (lead as u8, trail as u8)
     })
 }
 
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+#[cfg(feature = "less-slow-kanji-encode")]
 #[inline(always)]
 pub fn jis0208_level1_kanji_euc_jp_encode(bmp: u16) -> Option<(u8, u8)> {
     jis0208_level1_kanji_shift_jis_encode(bmp).map(|(shift_jis_lead, shift_jis_trail)| {
         let mut lead = shift_jis_lead as usize;
         if shift_jis_lead >= 0xA0 {
             lead -= 0xC1 - 0x81;
         }
         // The next line would overflow u8. Letting it go over allows us to
@@ -1089,27 +1163,27 @@ pub fn jis0208_level1_kanji_euc_jp_encod
             shift_jis_trail + (0xA1 - 0x40)
         } else {
             shift_jis_trail + (0xA1 - 0x41)
         };
         (lead as u8, trail)
     })
 }
 
-#[cfg(feature = "no-static-ideograph-encoder-tables")]
+#[cfg(not(feature = "less-slow-kanji-encode"))]
 #[inline(always)]
 pub fn jis0208_level1_kanji_iso_2022_jp_encode(bmp: u16) -> Option<(u8, u8)> {
     position(&JIS0208_LEVEL1_KANJI[..], bmp).map(|kanji_pointer| {
         let lead = (kanji_pointer / 94) + (0xB0 - 0x80);
         let trail = (kanji_pointer % 94) + 0x21;
         (lead as u8, trail as u8)
     })
 }
 
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+#[cfg(feature = "less-slow-kanji-encode")]
 #[inline(always)]
 pub fn jis0208_level1_kanji_iso_2022_jp_encode(bmp: u16) -> Option<(u8, u8)> {
     jis0208_level1_kanji_shift_jis_encode(bmp).map(|(shift_jis_lead, shift_jis_trail)| {
         let mut lead = shift_jis_lead as usize;
         if shift_jis_lead >= 0xA0 {
             lead -= 0xC1 - 0x81;
         }
         // The next line would overflow u8. Letting it go over allows us to
@@ -1256,17 +1330,17 @@ pub fn big5_astral_encode(low_bits: u16)
                 }
                 i += 1;
             }
             None
         }
     }
 }
 
-#[cfg(feature = "no-static-ideograph-encoder-tables")]
+#[cfg(not(feature = "less-slow-big5-hanzi-encode"))]
 #[inline(always)]
 pub fn big5_level1_hanzi_encode(bmp: u16) -> Option<(u8, u8)> {
     if super::in_inclusive_range16(bmp, 0x4E00, 0x9FB1) {
         if let Some(hanzi_pointer) = position(&BIG5_LOW_BITS[(5495 - 942)..(10951 - 942)], bmp) {
             let lead = hanzi_pointer / 157 + 0xA4;
             let remainder = hanzi_pointer % 157;
             let trail = if remainder < 0x3F {
                 remainder + 0x40
@@ -1294,17 +1368,17 @@ pub fn big5_level1_hanzi_encode(bmp: u16
             _ => {
                 return None;
             }
         }
     }
     None
 }
 
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
+#[cfg(feature = "less-slow-big5-hanzi-encode")]
 #[inline(always)]
 pub fn big5_level1_hanzi_encode(bmp: u16) -> Option<(u8, u8)> {
     if super::in_inclusive_range16(bmp, 0x4E00, 0x9FB1) {
         match BIG5_LEVEL1_HANZI_CODE_POINTS.binary_search(&bmp) {
             Ok(i) => {
                 let pair = &BIG5_LEVEL1_HANZI_BYTES[i];
                 Some((pair[0], pair[1]))
             }
@@ -1670,17 +1744,17 @@ static_file.close()
 
 utf_8_file = open("src/utf_8.rs", "w")
 
 utf_8_file.write(utf_8_rs_begin)
 utf_8_file.write("""
 // Instead, please regenerate using generate-encoding-data.py
 
 /// Bit is 1 if the trail is invalid.
-static UTF8_TRAIL_INVALID: [u8; 256] = [""")
+pub static UTF8_TRAIL_INVALID: [u8; 256] = [""")
 
 for i in range(256):
   combined = 0
   if i < 0x80 or i > 0xBF:
     combined |= (1 << 3)
   if i < 0xA0 or i > 0xBF:
     combined |= (1 << 4)
   if i < 0x80 or i > 0x9F:
--- a/third_party/rust/encoding_rs/rustfmt.toml
+++ b/third_party/rust/encoding_rs/rustfmt.toml
@@ -1,2 +1,1 @@
-fn_call_style = "Block"
 error_on_line_overflow = false
--- a/third_party/rust/encoding_rs/src/ascii.rs
+++ b/third_party/rust/encoding_rs/src/ascii.rs
@@ -16,45 +16,57 @@
 // numbers of the actual ARMv7 CPU I have access to, because (thermal?)
 // throttling kept interfering. Since Raspberry Pi 3 (ARMv8 core but running
 // ARMv7 code) produced reproducible performance numbers, that's the ARM
 // computer that this code ended up being optimized for in the ALU case.
 // Less popular CPU architectures simply get the approach that was chosen based
 // on Raspberry Pi 3 measurements. The UTF-16 and UTF-8 ALU cases take
 // different approaches based on benchmarking on Raspberry Pi 3.
 
-#[cfg(all(feature = "simd-accel", any(target_feature = "sse2", all(target_endian = "little", target_arch = "aarch64"))))]
+#[cfg(
+    all(
+        feature = "simd-accel",
+        any(
+            target_feature = "sse2",
+            all(target_endian = "little", target_arch = "aarch64"),
+            all(target_endian = "little", target_feature = "neon")
+        )
+    )
+)]
 use simd_funcs::*;
 
 // `as` truncates, so works on 32-bit, too.
 #[allow(dead_code)]
 pub const ASCII_MASK: usize = 0x80808080_80808080u64 as usize;
 
 // `as` truncates, so works on 32-bit, too.
 #[allow(dead_code)]
 pub const BASIC_LATIN_MASK: usize = 0xFF80FF80_FF80FF80u64 as usize;
 
 #[allow(unused_macros)]
 macro_rules! ascii_naive {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) -> Option<($src_unit, usize)> {
-        // Yes, manually omitting the bound check here matters
-        // a lot for perf.
-        for i in 0..len {
-            let code_unit = *(src.offset(i as isize));
-            if code_unit > 127 {
-                return Some((code_unit, i));
+    ($name:ident, $src_unit:ty, $dst_unit:ty) => {
+        #[inline(always)]
+        pub unsafe fn $name(
+            src: *const $src_unit,
+            dst: *mut $dst_unit,
+            len: usize,
+        ) -> Option<($src_unit, usize)> {
+            // Yes, manually omitting the bound check here matters
+            // a lot for perf.
+            for i in 0..len {
+                let code_unit = *(src.offset(i as isize));
+                if code_unit > 127 {
+                    return Some((code_unit, i));
+                }
+                *(dst.offset(i as isize)) = code_unit as $dst_unit;
             }
-            *(dst.offset(i as isize)) = code_unit as $dst_unit;
+            return None;
         }
-        return None;
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! ascii_alu {
     ($name:ident,
      $src_unit:ty,
      $dst_unit:ty,
      $stride_fn:ident) => (
@@ -64,39 +76,39 @@ macro_rules! ascii_alu {
         let mut offset = 0usize;
         // This loop is only broken out of as a `goto` forward
         loop {
             let mut until_alignment = {
                 // Check if the other unit aligns if we move the narrower unit
                 // to alignment.
                 //               if ::std::mem::size_of::<$src_unit>() == ::std::mem::size_of::<$dst_unit>() {
                 // ascii_to_ascii
-                let src_alignment = (src as usize) & ALIGNMENT_MASK;
-                let dst_alignment = (dst as usize) & ALIGNMENT_MASK;
+                let src_alignment = (src as usize) & ALU_ALIGNMENT_MASK;
+                let dst_alignment = (dst as usize) & ALU_ALIGNMENT_MASK;
                 if src_alignment != dst_alignment {
                     break;
                 }
-                (ALIGNMENT - src_alignment) & ALIGNMENT_MASK
+                (ALU_ALIGNMENT - src_alignment) & ALU_ALIGNMENT_MASK
                 //               } else if ::std::mem::size_of::<$src_unit>() < ::std::mem::size_of::<$dst_unit>() {
                 // ascii_to_basic_latin
                 //                   let src_until_alignment = (ALIGNMENT - ((src as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
                 //                   if (dst.offset(src_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
                 //                       break;
                 //                   }
                 //                   src_until_alignment
                 //               } else {
                 // basic_latin_to_ascii
                 //                   let dst_until_alignment = (ALIGNMENT - ((dst as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
                 //                   if (src.offset(dst_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
                 //                       break;
                 //                   }
                 //                   dst_until_alignment
                 //               }
             };
-            if until_alignment + STRIDE_SIZE <= len {
+            if until_alignment + ALU_STRIDE_SIZE <= len {
                 // Moving pointers to alignment seems to be a pessimization on
                 // x86_64 for operations that have UTF-16 as the internal
                 // Unicode representation. However, since it seems to be a win
                 // on ARM (tested ARMv7 code running on ARMv8 [rpi3]), except
                 // mixed results when encoding from UTF-16 and since x86 and
                 // x86_64 should be using SSE2 in due course, keeping the move
                 // to alignment here. It would be good to test on more ARM CPUs
                 // and on real MIPS and POWER hardware.
@@ -104,24 +116,24 @@ macro_rules! ascii_alu {
                     let code_unit = *(src.offset(offset as isize));
                     if code_unit > 127 {
                         return Some((code_unit, offset));
                     }
                     *(dst.offset(offset as isize)) = code_unit as $dst_unit;
                     offset += 1;
                     until_alignment -= 1;
                 }
-                let len_minus_stride = len - STRIDE_SIZE;
+                let len_minus_stride = len - ALU_STRIDE_SIZE;
                 loop {
                     if let Some(num_ascii) = $stride_fn(src.offset(offset as isize) as *const usize,
                                    dst.offset(offset as isize) as *mut usize) {
                         offset += num_ascii;
                         return Some((*(src.offset(offset as isize)), offset));
                     }
-                    offset += STRIDE_SIZE;
+                    offset += ALU_STRIDE_SIZE;
                     if offset > len_minus_stride {
                         break;
                     }
                 }
             }
             break;
         }
         while offset < len {
@@ -157,31 +169,31 @@ macro_rules! basic_latin_alu {
                 //                   let dst_alignment = (dst as usize) & ALIGNMENT_MASK;
                 //                   if src_alignment != dst_alignment {
                 //                       break;
                 //                   }
                 //                   (ALIGNMENT - src_alignment) & ALIGNMENT_MASK
                 //               } else
                 if ::std::mem::size_of::<$src_unit>() < ::std::mem::size_of::<$dst_unit>() {
                     // ascii_to_basic_latin
-                    let src_until_alignment = (ALIGNMENT - ((src as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
-                    if (dst.offset(src_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
+                    let src_until_alignment = (ALU_ALIGNMENT - ((src as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK;
+                    if (dst.offset(src_until_alignment as isize) as usize) & ALU_ALIGNMENT_MASK != 0 {
                         break;
                     }
                     src_until_alignment
                 } else {
                     // basic_latin_to_ascii
-                    let dst_until_alignment = (ALIGNMENT - ((dst as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
-                    if (src.offset(dst_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
+                    let dst_until_alignment = (ALU_ALIGNMENT - ((dst as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK;
+                    if (src.offset(dst_until_alignment as isize) as usize) & ALU_ALIGNMENT_MASK != 0 {
                         break;
                     }
                     dst_until_alignment
                 }
             };
-            if until_alignment + STRIDE_SIZE <= len {
+            if until_alignment + ALU_STRIDE_SIZE <= len {
                 // Moving pointers to alignment seems to be a pessimization on
                 // x86_64 for operations that have UTF-16 as the internal
                 // Unicode representation. However, since it seems to be a win
                 // on ARM (tested ARMv7 code running on ARMv8 [rpi3]), except
                 // mixed results when encoding from UTF-16 and since x86 and
                 // x86_64 should be using SSE2 in due course, keeping the move
                 // to alignment here. It would be good to test on more ARM CPUs
                 // and on real MIPS and POWER hardware.
@@ -189,23 +201,23 @@ macro_rules! basic_latin_alu {
                     let code_unit = *(src.offset(offset as isize));
                     if code_unit > 127 {
                         return Some((code_unit, offset));
                     }
                     *(dst.offset(offset as isize)) = code_unit as $dst_unit;
                     offset += 1;
                     until_alignment -= 1;
                 }
-                let len_minus_stride = len - STRIDE_SIZE;
+                let len_minus_stride = len - ALU_STRIDE_SIZE;
                 loop {
                     if !$stride_fn(src.offset(offset as isize) as *const usize,
                                    dst.offset(offset as isize) as *mut usize) {
                         break;
                     }
-                    offset += STRIDE_SIZE;
+                    offset += ALU_STRIDE_SIZE;
                     if offset > len_minus_stride {
                         break;
                     }
                 }
             }
             break;
         }
         while offset < len {
@@ -217,407 +229,444 @@ macro_rules! basic_latin_alu {
             offset += 1;
         }
         None
     });
 }
 
 #[allow(unused_macros)]
 macro_rules! latin1_alu {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty,
-     $stride_fn:ident) => (
-    #[cfg_attr(feature = "cargo-clippy", allow(never_loop))]
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
-        let mut offset = 0usize;
-        // This loop is only broken out of as a `goto` forward
-        loop {
-            let mut until_alignment = {
-                if ::std::mem::size_of::<$src_unit>() < ::std::mem::size_of::<$dst_unit>() {
-                    // unpack
-                    let src_until_alignment = (ALIGNMENT - ((src as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
-                    if (dst.offset(src_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
-                        break;
-                    }
-                    src_until_alignment
-                } else {
-                    // pack
-                    let dst_until_alignment = (ALIGNMENT - ((dst as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
-                    if (src.offset(dst_until_alignment as isize) as usize) & ALIGNMENT_MASK != 0 {
-                        break;
-                    }
-                    dst_until_alignment
-                }
-            };
-            if until_alignment + STRIDE_SIZE <= len {
-                while until_alignment != 0 {
-                    let code_unit = *(src.offset(offset as isize));
-                    *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-                    offset += 1;
-                    until_alignment -= 1;
-                }
-                let len_minus_stride = len - STRIDE_SIZE;
-                loop {
-                    $stride_fn(src.offset(offset as isize) as *const usize,
-                               dst.offset(offset as isize) as *mut usize);
-                    offset += STRIDE_SIZE;
-                    if offset > len_minus_stride {
-                        break;
-                    }
-                }
-            }
-            break;
-        }
-        while offset < len {
-            let code_unit = *(src.offset(offset as isize));
-            *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-            offset += 1;
-        }
-    });
-}
-
-#[allow(unused_macros)]
-macro_rules! ascii_simd_check_align {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty,
-     $stride_both_aligned:ident,
-     $stride_src_aligned:ident,
-     $stride_dst_aligned:ident,
-     $stride_neither_aligned:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) -> Option<($src_unit, usize)> {
-        let mut offset = 0usize;
-        if STRIDE_SIZE <= len {
-            let len_minus_stride = len - STRIDE_SIZE;
-            // XXX Should we first process one stride unconditinoally as unaligned to
-            // avoid the cost of the branchiness below if the first stride fails anyway?
-            // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
-            // on Haswell, it would make sense to just use unaligned and not bother
-            // checking. Need to benchmark older architectures before deciding.
-            let dst_masked = (dst as usize) & ALIGNMENT_MASK;
-            if ((src as usize) & ALIGNMENT_MASK) == 0 {
-                if dst_masked == 0 {
-                    loop {
-                        if !$stride_both_aligned(src.offset(offset as isize),
-                                                 dst.offset(offset as isize)) {
-                            break;
-                        }
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
+    ($name:ident, $src_unit:ty, $dst_unit:ty, $stride_fn:ident) => {
+        #[cfg_attr(feature = "cargo-clippy", allow(never_loop))]
+        #[inline(always)]
+        pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
+            let mut offset = 0usize;
+            // This loop is only broken out of as a `goto` forward
+            loop {
+                let mut until_alignment = {
+                    if ::std::mem::size_of::<$src_unit>() < ::std::mem::size_of::<$dst_unit>() {
+                        // unpack
+                        let src_until_alignment = (ALU_ALIGNMENT
+                            - ((src as usize) & ALU_ALIGNMENT_MASK))
+                            & ALU_ALIGNMENT_MASK;
+                        if (dst.offset(src_until_alignment as isize) as usize) & ALU_ALIGNMENT_MASK
+                            != 0
+                        {
                             break;
                         }
-                    }
-                } else {
-                    loop {
-                        if !$stride_src_aligned(src.offset(offset as isize),
-                                                dst.offset(offset as isize)) {
-                            break;
-                        }
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
-                            break;
-                        }
-                    }
-                }
-            } else {
-                if dst_masked == 0 {
-                    loop {
-                        if !$stride_dst_aligned(src.offset(offset as isize),
-                                                dst.offset(offset as isize)) {
-                            break;
-                        }
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
-                            break;
-                        }
-                    }
-                } else {
-                    loop {
-                        if !$stride_neither_aligned(src.offset(offset as isize),
-                                                    dst.offset(offset as isize)) {
-                            break;
-                        }
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
+                        src_until_alignment
+                    } else {
+                        // pack
+                        let dst_until_alignment = (ALU_ALIGNMENT
+                            - ((dst as usize) & ALU_ALIGNMENT_MASK))
+                            & ALU_ALIGNMENT_MASK;
+                        if (src.offset(dst_until_alignment as isize) as usize) & ALU_ALIGNMENT_MASK
+                            != 0
+                        {
                             break;
                         }
+                        dst_until_alignment
                     }
-                }
-            }
-        }
-        while offset < len {
-            let code_unit = *(src.offset(offset as isize));
-            if code_unit > 127 {
-                return Some((code_unit, offset));
-            }
-            *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-            offset += 1;
-        }
-        None
-    });
-}
-
-#[allow(unused_macros)]
-macro_rules! latin1_simd_check_align {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty,
-     $stride_both_aligned:ident,
-     $stride_src_aligned:ident,
-     $stride_dst_aligned:ident,
-     $stride_neither_aligned:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
-        let mut offset = 0usize;
-        if STRIDE_SIZE <= len {
-            let len_minus_stride = len - STRIDE_SIZE;
-            // XXX Should we first process one stride unconditinoally as unaligned to
-            // avoid the cost of the branchiness below if the first stride fails anyway?
-            // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
-            // on Haswell, it would make sense to just use unaligned and not bother
-            // checking. Need to benchmark older architectures before deciding.
-            let dst_masked = (dst as usize) & ALIGNMENT_MASK;
-            if ((src as usize) & ALIGNMENT_MASK) == 0 {
-                if dst_masked == 0 {
+                };
+                if until_alignment + ALU_STRIDE_SIZE <= len {
+                    while until_alignment != 0 {
+                        let code_unit = *(src.offset(offset as isize));
+                        *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                        offset += 1;
+                        until_alignment -= 1;
+                    }
+                    let len_minus_stride = len - ALU_STRIDE_SIZE;
                     loop {
-                        $stride_both_aligned(src.offset(offset as isize),
-                                             dst.offset(offset as isize));
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
-                            break;
-                        }
-                    }
-                } else {
-                    loop {
-                        $stride_src_aligned(src.offset(offset as isize),
-                                            dst.offset(offset as isize));
-                        offset += STRIDE_SIZE;
+                        $stride_fn(
+                            src.offset(offset as isize) as *const usize,
+                            dst.offset(offset as isize) as *mut usize,
+                        );
+                        offset += ALU_STRIDE_SIZE;
                         if offset > len_minus_stride {
                             break;
                         }
                     }
                 }
-            } else {
-                if dst_masked == 0 {
-                    loop {
-                        $stride_dst_aligned(src.offset(offset as isize),
-                                            dst.offset(offset as isize));
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
-                            break;
+                break;
+            }
+            while offset < len {
+                let code_unit = *(src.offset(offset as isize));
+                *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                offset += 1;
+            }
+        }
+    };
+}
+
+#[allow(unused_macros)]
+macro_rules! ascii_simd_check_align {
+    (
+        $name:ident,
+        $src_unit:ty,
+        $dst_unit:ty,
+        $stride_both_aligned:ident,
+        $stride_src_aligned:ident,
+        $stride_dst_aligned:ident,
+        $stride_neither_aligned:ident
+    ) => {
+        #[inline(always)]
+        pub unsafe fn $name(
+            src: *const $src_unit,
+            dst: *mut $dst_unit,
+            len: usize,
+        ) -> Option<($src_unit, usize)> {
+            let mut offset = 0usize;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
+                // XXX Should we first process one stride unconditionally as unaligned to
+                // avoid the cost of the branchiness below if the first stride fails anyway?
+                // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
+                // on Haswell, it would make sense to just use unaligned and not bother
+                // checking. Need to benchmark older architectures before deciding.
+                let dst_masked = (dst as usize) & SIMD_ALIGNMENT_MASK;
+                if ((src as usize) & SIMD_ALIGNMENT_MASK) == 0 {
+                    if dst_masked == 0 {
+                        loop {
+                            if !$stride_both_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            ) {
+                                break;
+                            }
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    } else {
+                        loop {
+                            if !$stride_src_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            ) {
+                                break;
+                            }
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
                         }
                     }
                 } else {
-                    loop {
-                        $stride_neither_aligned(src.offset(offset as isize),
-                                                dst.offset(offset as isize));
-                        offset += STRIDE_SIZE;
-                        if offset > len_minus_stride {
-                            break;
+                    if dst_masked == 0 {
+                        loop {
+                            if !$stride_dst_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            ) {
+                                break;
+                            }
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    } else {
+                        loop {
+                            if !$stride_neither_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            ) {
+                                break;
+                            }
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
                         }
                     }
                 }
             }
+            while offset < len {
+                let code_unit = *(src.offset(offset as isize));
+                if code_unit > 127 {
+                    return Some((code_unit, offset));
+                }
+                *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                offset += 1;
+            }
+            None
         }
-        while offset < len {
-            let code_unit = *(src.offset(offset as isize));
-            // On x86_64, this loop autovectorizes but in the pack
-            // case there are instructions whose purpose is to make sure
-            // each u16 in the vector is truncated before packing. However,
-            // since we don't care about saturating behavior of SSE2 packing
-            // when the input isn't Latin1, those instructions are useless.
-            // Unfortunately, using the `assume` intrinsic to lie to the
-            // optimizer doesn't make LLVM omit the trunctation that we
-            // don't need. Possibly this loop could be manually optimized
-            // to do the sort of thing that LLVM does but without the
-            // ANDing the read vectors of u16 with a constant that discards
-            // the high half of each u16. As far as I can tell, the
-            // optimization assumes that doing a SIMD read past the end of
-            // the array is OK.
-            *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-            offset += 1;
+    };
+}
+
+#[allow(unused_macros)]
+macro_rules! latin1_simd_check_align {
+    (
+        $name:ident,
+        $src_unit:ty,
+        $dst_unit:ty,
+        $stride_both_aligned:ident,
+        $stride_src_aligned:ident,
+        $stride_dst_aligned:ident,
+        $stride_neither_aligned:ident
+    ) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
+            let mut offset = 0usize;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
+                // XXX Should we first process one stride unconditionally as unaligned to
+                // avoid the cost of the branchiness below if the first stride fails anyway?
+                // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
+                // on Haswell, it would make sense to just use unaligned and not bother
+                // checking. Need to benchmark older architectures before deciding.
+                let dst_masked = (dst as usize) & SIMD_ALIGNMENT_MASK;
+                if ((src as usize) & SIMD_ALIGNMENT_MASK) == 0 {
+                    if dst_masked == 0 {
+                        loop {
+                            $stride_both_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            );
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    } else {
+                        loop {
+                            $stride_src_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            );
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    }
+                } else {
+                    if dst_masked == 0 {
+                        loop {
+                            $stride_dst_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            );
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    } else {
+                        loop {
+                            $stride_neither_aligned(
+                                src.offset(offset as isize),
+                                dst.offset(offset as isize),
+                            );
+                            offset += SIMD_STRIDE_SIZE;
+                            if offset > len_minus_stride {
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            while offset < len {
+                let code_unit = *(src.offset(offset as isize));
+                // On x86_64, this loop autovectorizes but in the pack
+                // case there are instructions whose purpose is to make sure
+                // each u16 in the vector is truncated before packing. However,
+                // since we don't care about saturating behavior of SSE2 packing
+                // when the input isn't Latin1, those instructions are useless.
+                // Unfortunately, using the `assume` intrinsic to lie to the
+                // optimizer doesn't make LLVM omit the trunctation that we
+                // don't need. Possibly this loop could be manually optimized
+                // to do the sort of thing that LLVM does but without the
+                // ANDing the read vectors of u16 with a constant that discards
+                // the high half of each u16. As far as I can tell, the
+                // optimization assumes that doing a SIMD read past the end of
+                // the array is OK.
+                *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                offset += 1;
+            }
         }
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! ascii_simd_unalign {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty,
-     $stride_neither_aligned:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) -> Option<($src_unit, usize)> {
-        let mut offset = 0usize;
-        if STRIDE_SIZE <= len {
-            let len_minus_stride = len - STRIDE_SIZE;
-            loop {
-                if !$stride_neither_aligned(src.offset(offset as isize),
-                                            dst.offset(offset as isize)) {
-                    break;
-                }
-                offset += STRIDE_SIZE;
-                if offset > len_minus_stride {
-                    break;
+    ($name:ident, $src_unit:ty, $dst_unit:ty, $stride_neither_aligned:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(
+            src: *const $src_unit,
+            dst: *mut $dst_unit,
+            len: usize,
+        ) -> Option<($src_unit, usize)> {
+            let mut offset = 0usize;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
+                loop {
+                    if !$stride_neither_aligned(
+                        src.offset(offset as isize),
+                        dst.offset(offset as isize),
+                    ) {
+                        break;
+                    }
+                    offset += SIMD_STRIDE_SIZE;
+                    if offset > len_minus_stride {
+                        break;
+                    }
                 }
             }
-        }
-        while offset < len {
-            let code_unit = *(src.offset(offset as isize));
-            if code_unit > 127 {
-                return Some((code_unit, offset));
+            while offset < len {
+                let code_unit = *(src.offset(offset as isize));
+                if code_unit > 127 {
+                    return Some((code_unit, offset));
+                }
+                *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                offset += 1;
             }
-            *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-            offset += 1;
+            None
         }
-        None
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! latin1_simd_unalign {
-    ($name:ident,
-     $src_unit:ty,
-     $dst_unit:ty,
-     $stride_neither_aligned:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
-        let mut offset = 0usize;
-        if STRIDE_SIZE <= len {
-            let len_minus_stride = len - STRIDE_SIZE;
-            loop {
-                $stride_neither_aligned(src.offset(offset as isize),
-                                        dst.offset(offset as isize));
-                offset += STRIDE_SIZE;
-                if offset > len_minus_stride {
-                    break;
+    ($name:ident, $src_unit:ty, $dst_unit:ty, $stride_neither_aligned:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const $src_unit, dst: *mut $dst_unit, len: usize) {
+            let mut offset = 0usize;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
+                loop {
+                    $stride_neither_aligned(
+                        src.offset(offset as isize),
+                        dst.offset(offset as isize),
+                    );
+                    offset += SIMD_STRIDE_SIZE;
+                    if offset > len_minus_stride {
+                        break;
+                    }
                 }
             }
+            while offset < len {
+                let code_unit = *(src.offset(offset as isize));
+                *(dst.offset(offset as isize)) = code_unit as $dst_unit;
+                offset += 1;
+            }
         }
-        while offset < len {
-            let code_unit = *(src.offset(offset as isize));
-            *(dst.offset(offset as isize)) = code_unit as $dst_unit;
-            offset += 1;
-        }
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! ascii_to_ascii_simd_stride {
-    ($name:ident,
-     $load:ident,
-     $store:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const u8, dst: *mut u8) -> bool {
-        let simd = $load(src);
-        if !simd_is_ascii(simd) {
-            return false;
+    ($name:ident, $load:ident, $store:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const u8, dst: *mut u8) -> bool {
+            let simd = $load(src);
+            if !simd_is_ascii(simd) {
+                return false;
+            }
+            $store(dst, simd);
+            true
         }
-        $store(dst, simd);
-        true
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! ascii_to_basic_latin_simd_stride {
-    ($name:ident,
-     $load:ident,
-     $store:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const u8, dst: *mut u16) -> bool {
-        let simd = $load(src);
-        if !simd_is_ascii(simd) {
-            return false;
+    ($name:ident, $load:ident, $store:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const u8, dst: *mut u16) -> bool {
+            let simd = $load(src);
+            if !simd_is_ascii(simd) {
+                return false;
+            }
+            let (first, second) = simd_unpack(simd);
+            $store(dst, first);
+            $store(dst.offset(8), second);
+            true
         }
-        let (first, second) = simd_unpack(simd);
-        $store(dst, first);
-        $store(dst.offset(8), second);
-        true
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! unpack_simd_stride {
-    ($name:ident,
-     $load:ident,
-     $store:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const u8, dst: *mut u16) {
-        let simd = $load(src);
-        let (first, second) = simd_unpack(simd);
-        $store(dst, first);
-        $store(dst.offset(8), second);
-    });
+    ($name:ident, $load:ident, $store:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const u8, dst: *mut u16) {
+            let simd = $load(src);
+            let (first, second) = simd_unpack(simd);
+            $store(dst, first);
+            $store(dst.offset(8), second);
+        }
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! basic_latin_to_ascii_simd_stride {
-    ($name:ident,
-     $load:ident,
-     $store:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const u16, dst: *mut u8) -> bool {
-        let first = $load(src);
-        let second = $load(src.offset(8));
-        if simd_is_basic_latin(first | second) {
-            $store(dst, simd_pack(first, second));
-            true
-        } else {
-            false
+    ($name:ident, $load:ident, $store:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const u16, dst: *mut u8) -> bool {
+            let first = $load(src);
+            let second = $load(src.offset(8));
+            if simd_is_basic_latin(first | second) {
+                $store(dst, simd_pack(first, second));
+                true
+            } else {
+                false
+            }
         }
-    });
+    };
 }
 
 #[allow(unused_macros)]
 macro_rules! pack_simd_stride {
-    ($name:ident,
-     $load:ident,
-     $store:ident) => (
-    #[inline(always)]
-    pub unsafe fn $name(src: *const u16, dst: *mut u8) {
-        let first = $load(src);
-        let second = $load(src.offset(8));
-        $store(dst, simd_pack(first, second));
-    });
+    ($name:ident, $load:ident, $store:ident) => {
+        #[inline(always)]
+        pub unsafe fn $name(src: *const u16, dst: *mut u8) {
+            let first = $load(src);
+            let second = $load(src.offset(8));
+            $store(dst, simd_pack(first, second));
+        }
+    };
 }
 
 cfg_if! {
     if #[cfg(all(feature = "simd-accel", target_endian = "little", target_arch = "aarch64"))] {
         // SIMD with the same instructions for aligned and unaligned loads and stores
 
-        pub const STRIDE_SIZE: usize = 16;
+        pub const SIMD_STRIDE_SIZE: usize = 16;
+
+        pub const MAX_STRIDE_SIZE: usize = 16;
 
 //        pub const ALIGNMENT: usize = 8;
 
         ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_neither_aligned, load16_unaligned, store16_unaligned);
 
         ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_neither_aligned, load16_unaligned, store8_unaligned);
         unpack_simd_stride!(unpack_stride_neither_aligned, load16_unaligned, store8_unaligned);
 
         basic_latin_to_ascii_simd_stride!(basic_latin_to_ascii_stride_neither_aligned, load8_unaligned, store16_unaligned);
         pack_simd_stride!(pack_stride_neither_aligned, load8_unaligned, store16_unaligned);
 
         ascii_simd_unalign!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride_neither_aligned);
         ascii_simd_unalign!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_neither_aligned);
         ascii_simd_unalign!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_neither_aligned);
         latin1_simd_unalign!(unpack_latin1, u8, u16, unpack_stride_neither_aligned);
         latin1_simd_unalign!(pack_latin1, u16, u8, pack_stride_neither_aligned);
-    } else if #[cfg(all(feature = "simd-accel", target_feature = "sse2"))] {
+    } else if #[cfg(all(feature = "simd-accel", any(target_feature = "sse2", all(target_endian = "little", target_feature = "neon"))))] {
         // SIMD with different instructions for aligned and unaligned loads and stores.
         //
         // Newer microarchitectures are not supposed to have a performance difference between
         // aligned and unaligned SSE2 loads and stores when the address is actually aligned,
         // but the benchmark results I see don't agree.
 
-        pub const STRIDE_SIZE: usize = 16;
+        pub const SIMD_STRIDE_SIZE: usize = 16;
 
-        pub const ALIGNMENT_MASK: usize = 15;
+        pub const MAX_STRIDE_SIZE: usize = 16;
+
+        pub const SIMD_ALIGNMENT_MASK: usize = 15;
 
         ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_both_aligned, load16_aligned, store16_aligned);
         ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_src_aligned, load16_aligned, store16_unaligned);
         ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_dst_aligned, load16_unaligned, store16_aligned);
         ascii_to_ascii_simd_stride!(ascii_to_ascii_stride_neither_aligned, load16_unaligned, store16_unaligned);
 
         ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_both_aligned, load16_aligned, store8_aligned);
         ascii_to_basic_latin_simd_stride!(ascii_to_basic_latin_stride_src_aligned, load16_aligned, store8_unaligned);
@@ -642,21 +691,23 @@ cfg_if! {
         ascii_simd_check_align!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride_both_aligned, ascii_to_ascii_stride_src_aligned, ascii_to_ascii_stride_dst_aligned, ascii_to_ascii_stride_neither_aligned);
         ascii_simd_check_align!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_both_aligned, ascii_to_basic_latin_stride_src_aligned, ascii_to_basic_latin_stride_dst_aligned, ascii_to_basic_latin_stride_neither_aligned);
         ascii_simd_check_align!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_both_aligned, basic_latin_to_ascii_stride_src_aligned, basic_latin_to_ascii_stride_dst_aligned, basic_latin_to_ascii_stride_neither_aligned);
         latin1_simd_check_align!(unpack_latin1, u8, u16, unpack_stride_both_aligned, unpack_stride_src_aligned, unpack_stride_dst_aligned, unpack_stride_neither_aligned);
         latin1_simd_check_align!(pack_latin1, u16, u8, pack_stride_both_aligned, pack_stride_src_aligned, pack_stride_dst_aligned, pack_stride_neither_aligned);
     } else if #[cfg(all(target_endian = "little", target_pointer_width = "64"))] {
         // Aligned ALU word, little-endian, 64-bit
 
-        pub const STRIDE_SIZE: usize = 16;
+        pub const ALU_STRIDE_SIZE: usize = 16;
+
+        pub const MAX_STRIDE_SIZE: usize = 16;
 
-        pub const ALIGNMENT: usize = 8;
+        pub const ALU_ALIGNMENT: usize = 8;
 
-        pub const ALIGNMENT_MASK: usize = 7;
+        pub const ALU_ALIGNMENT_MASK: usize = 7;
 
         #[inline(always)]
         unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
             let first = ((0x00000000_FF000000usize & word) << 24) |
                         ((0x00000000_00FF0000usize & word) << 16) |
                         ((0x00000000_0000FF00usize & word) << 8) |
                         (0x00000000_000000FFusize & word);
             let second = ((0xFF000000_00000000usize & word) >> 8) |
@@ -696,21 +747,23 @@ cfg_if! {
                               ((0x00000000_00FF0000usize & third) >> 8) |
                               (0x00000000_000000FFusize & third);
             *dst = word;
             *(dst.offset(1)) = second_word;
         }
     } else if #[cfg(all(target_endian = "little", target_pointer_width = "32"))] {
         // Aligned ALU word, little-endian, 32-bit
 
-        pub const STRIDE_SIZE: usize = 8;
+        pub const ALU_STRIDE_SIZE: usize = 8;
+
+        pub const MAX_STRIDE_SIZE: usize = 8;
 
-        pub const ALIGNMENT: usize = 4;
+        pub const ALU_ALIGNMENT: usize = 4;
 
-        pub const ALIGNMENT_MASK: usize = 3;
+        pub const ALU_ALIGNMENT_MASK: usize = 3;
 
         #[inline(always)]
         unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
             let first = ((0x0000FF00usize & word) << 8) |
                         (0x000000FFusize & word);
             let second = ((0xFF000000usize & word) >> 8) |
                          ((0x00FF0000usize & word) >> 16);
             let third = ((0x0000FF00usize & second_word) << 8) |
@@ -734,21 +787,23 @@ cfg_if! {
                               ((0x00FF0000usize & third) >> 8) |
                               (0x000000FFusize & third);
             *dst = word;
             *(dst.offset(1)) = second_word;
         }
     } else if #[cfg(all(target_endian = "big", target_pointer_width = "64"))] {
         // Aligned ALU word, big-endian, 64-bit
 
-        pub const STRIDE_SIZE: usize = 16;
+        pub const ALU_STRIDE_SIZE: usize = 16;
+
+        pub const MAX_STRIDE_SIZE: usize = 16;
 
-        pub const ALIGNMENT: usize = 8;
+        pub const ALU_ALIGNMENT: usize = 8;
 
-        pub const ALIGNMENT_MASK: usize = 7;
+        pub const ALU_ALIGNMENT_MASK: usize = 7;
 
         #[inline(always)]
         unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
             let first = ((0xFF000000_00000000usize & word) >> 8) |
                          ((0x00FF0000_00000000usize & word) >> 16) |
                          ((0x0000FF00_00000000usize & word) >> 24) |
                          ((0x000000FF_00000000usize & word) >> 32);
             let second = ((0x00000000_FF000000usize & word) << 24) |
@@ -788,21 +843,23 @@ cfg_if! {
                               ((0x00000000_00FF0000usize & fourth) >> 8) |
                               (0x00000000_000000FFusize &  fourth);
             *dst = word;
             *(dst.offset(1)) = second_word;
         }
     } else if #[cfg(all(target_endian = "big", target_pointer_width = "32"))] {
         // Aligned ALU word, big-endian, 32-bit
 
-        pub const STRIDE_SIZE: usize = 8;
+        pub const ALU_STRIDE_SIZE: usize = 8;
+
+        pub const MAX_STRIDE_SIZE: usize = 8;
 
-        pub const ALIGNMENT: usize = 4;
+        pub const ALU_ALIGNMENT: usize = 4;
 
-        pub const ALIGNMENT_MASK: usize = 3;
+        pub const ALU_ALIGNMENT_MASK: usize = 3;
 
         #[inline(always)]
         unsafe fn unpack_alu(word: usize, second_word: usize, dst: *mut usize) {
             let first = ((0xFF000000usize & word) >> 8) |
                          ((0x00FF0000usize & word) >> 16);
             let second = ((0x0000FF00usize & word) << 8) |
                         (0x000000FFusize & word);
             let third = ((0xFF000000usize & second_word) >> 8) |
@@ -853,24 +910,24 @@ cfg_if! {
 
 cfg_if! {
     if #[cfg(all(feature = "simd-accel", target_endian = "little", target_arch = "aarch64"))] {
         #[inline(always)]
         pub fn validate_ascii(slice: &[u8]) -> Option<(u8, usize)> {
             let src = slice.as_ptr();
             let len = slice.len();
             let mut offset = 0usize;
-            if STRIDE_SIZE <= len {
-                let len_minus_stride = len - STRIDE_SIZE;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
                 loop {
                     let simd = unsafe { load16_unaligned(src.offset(offset as isize)) };
                     if !simd_is_ascii(simd) {
                         break;
                     }
-                    offset += STRIDE_SIZE;
+                    offset += SIMD_STRIDE_SIZE;
                     if offset > len_minus_stride {
                         break;
                     }
                 }
             }
             while offset < len {
                 let code_unit = slice[offset];
                 if code_unit > 127 {
@@ -881,47 +938,47 @@ cfg_if! {
             None
         }
     } else if #[cfg(all(feature = "simd-accel", target_feature = "sse2"))] {
         #[inline(always)]
         pub fn validate_ascii(slice: &[u8]) -> Option<(u8, usize)> {
             let src = slice.as_ptr();
             let len = slice.len();
             let mut offset = 0usize;
-            if STRIDE_SIZE <= len {
-                let len_minus_stride = len - STRIDE_SIZE;
+            if SIMD_STRIDE_SIZE <= len {
+                let len_minus_stride = len - SIMD_STRIDE_SIZE;
                 // XXX Should we first process one stride unconditionally as unaligned to
                 // avoid the cost of the branchiness below if the first stride fails anyway?
                 // XXX Should we just use unaligned SSE2 access unconditionally? It seems that
                 // on Haswell, it would make sense to just use unaligned and not bother
                 // checking. Need to benchmark older architectures before deciding.
-                if ((src as usize) & ALIGNMENT_MASK) == 0 {
+                if ((src as usize) & SIMD_ALIGNMENT_MASK) == 0 {
                     loop {
                         let simd = unsafe { load16_aligned(src.offset(offset as isize)) };
                         let mask = mask_ascii(simd);
                         if mask != 0 {
                             offset += mask.trailing_zeros() as usize;
                             let non_ascii = unsafe { *src.offset(offset as isize) };
                             return Some((non_ascii, offset));
                         }
-                        offset += STRIDE_SIZE;
+                        offset += SIMD_STRIDE_SIZE;
                         if offset > len_minus_stride {
                             break;
                         }
                     }
                 } else {
                     loop {
                         let simd = unsafe { load16_unaligned(src.offset(offset as isize)) };
                         let mask = mask_ascii(simd);
                         if mask != 0 {
                             offset += mask.trailing_zeros() as usize;
                             let non_ascii = unsafe { *src.offset(offset as isize) };
                             return Some((non_ascii, offset));
                         }
-                        offset += STRIDE_SIZE;
+                        offset += SIMD_STRIDE_SIZE;
                         if offset > len_minus_stride {
                             break;
                         }
                     }
                 }
             }
             while offset < len {
                 let code_unit = slice[offset];
@@ -929,16 +986,103 @@ cfg_if! {
                     return Some((code_unit, offset));
                 }
                 offset += 1;
             }
             None
         }
     } else {
         #[inline(always)]
+        fn find_non_ascii(word: usize, second_word: usize) -> Option<usize> {
+            let word_masked = word & ASCII_MASK;
+            let second_masked = second_word & ASCII_MASK;
+            if (word_masked | second_masked) == 0 {
+                return None;
+            }
+            if word_masked != 0 {
+                let zeros = count_zeros(word_masked);
+                // `zeros` now contains 7 (for the seven bits of non-ASCII)
+                // plus 8 times the number of ASCII in text order before the
+                // non-ASCII byte in the little-endian case or 8 times the number of ASCII in
+                // text order before the non-ASCII byte in the big-endian case.
+                let num_ascii = (zeros >> 3) as usize;
+                return Some(num_ascii);
+            }
+            let zeros = count_zeros(second_masked);
+            // `zeros` now contains 7 (for the seven bits of non-ASCII)
+            // plus 8 times the number of ASCII in text order before the
+            // non-ASCII byte in the little-endian case or 8 times the number of ASCII in
+            // text order before the non-ASCII byte in the big-endian case.
+            let num_ascii = (zeros >> 3) as usize;
+            Some(ALU_ALIGNMENT + num_ascii)
+        }
+
+        #[inline(always)]
+        unsafe fn validate_ascii_stride(src: *const usize) -> Option<usize> {
+            let word = *src;
+            let second_word = *(src.offset(1));
+            find_non_ascii(word, second_word)
+        }
+
+        #[inline(always)]
+        pub fn validate_ascii(slice: &[u8]) -> Option<(u8, usize)> {
+            let src = slice.as_ptr();
+            let len = slice.len();
+            let mut offset = 0usize;
+            let mut until_alignment = (ALU_ALIGNMENT - ((src as usize) & ALU_ALIGNMENT_MASK)) & ALU_ALIGNMENT_MASK;
+            if until_alignment + ALU_STRIDE_SIZE <= len {
+                while until_alignment != 0 {
+                    let code_unit = slice[offset];
+                    if code_unit > 127 {
+                        return Some((code_unit, offset));
+                    }
+                    offset += 1;
+                    until_alignment -= 1;
+                }
+                let len_minus_stride = len - ALU_STRIDE_SIZE;
+                loop {
+                    let ptr = unsafe { src.offset(offset as isize) as *const usize };
+                    if let Some(num_ascii) = unsafe { validate_ascii_stride(ptr) } {
+                        offset += num_ascii;
+                        return Some((unsafe { *(src.offset(offset as isize)) }, offset));
+                    }
+                    offset += ALU_STRIDE_SIZE;
+                    if offset > len_minus_stride {
+                        break;
+                    }
+                }
+            }
+            while offset < len {
+                let code_unit = slice[offset];
+                if code_unit > 127 {
+                    return Some((code_unit, offset));
+                }
+                offset += 1;
+           }
+           None
+        }
+
+    }
+}
+
+cfg_if! {
+    if #[cfg(all(feature = "simd-accel", any(target_feature = "sse2", all(target_endian = "little", target_arch = "aarch64"))))] {
+
+    } else if #[cfg(all(feature = "simd-accel", target_endian = "little", target_feature = "neon"))] {
+        // Even with NEON enabled, we use the ALU path for ASCII validation, because testing
+        // on Exynos 5 indicated that using NEON isn't worthwhile where there are only
+        // vector reads without vector writes.
+
+        pub const ALU_STRIDE_SIZE: usize = 8;
+
+        pub const ALU_ALIGNMENT: usize = 4;
+
+        pub const ALU_ALIGNMENT_MASK: usize = 3;
+    } else {
+        #[inline(always)]
         unsafe fn unpack_latin1_stride_alu(src: *const usize, dst: *mut usize) {
             let word = *src;
             let second_word = *(src.offset(1));
             unpack_alu(word, second_word, dst);
         }
 
         #[inline(always)]
         unsafe fn pack_latin1_stride_alu(src: *const usize, dst: *mut usize) {
@@ -969,103 +1113,30 @@ cfg_if! {
             let fourth = *(src.offset(3));
             if (first & BASIC_LATIN_MASK) | (second & BASIC_LATIN_MASK) | (third & BASIC_LATIN_MASK) | (fourth & BASIC_LATIN_MASK) != 0 {
                 return false;
             }
             pack_alu(first, second, third, fourth, dst);
             true
         }
 
-        basic_latin_alu!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_alu);
-        basic_latin_alu!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_alu);
-        latin1_alu!(unpack_latin1, u8, u16, unpack_latin1_stride_alu);
-        latin1_alu!(pack_latin1, u16, u8, pack_latin1_stride_alu);
-
         #[inline(always)]
         unsafe fn ascii_to_ascii_stride(src: *const usize, dst: *mut usize) -> Option<usize> {
             let word = *src;
             let second_word = *(src.offset(1));
             *dst = word;
             *(dst.offset(1)) = second_word;
             find_non_ascii(word, second_word)
         }
 
-        #[inline(always)]
-        unsafe fn validate_ascii_stride(src: *const usize) -> Option<usize> {
-            let word = *src;
-            let second_word = *(src.offset(1));
-            find_non_ascii(word, second_word)
-        }
-
-        #[inline(always)]
-        fn find_non_ascii(word: usize, second_word: usize) -> Option<usize> {
-            let word_masked = word & ASCII_MASK;
-            let second_masked = second_word & ASCII_MASK;
-            if (word_masked | second_masked) == 0 {
-                return None;
-            }
-            if word_masked != 0 {
-                let zeros = count_zeros(word_masked);
-                // `zeros` now contains 7 (for the seven bits of non-ASCII)
-                // plus 8 times the number of ASCII in text order before the
-                // non-ASCII byte in the little-endian case or 8 times the number of ASCII in
-                // text order before the non-ASCII byte in the big-endian case.
-                let num_ascii = (zeros >> 3) as usize;
-                return Some(num_ascii);
-            }
-            let zeros = count_zeros(second_masked);
-            // `zeros` now contains 7 (for the seven bits of non-ASCII)
-            // plus 8 times the number of ASCII in text order before the
-            // non-ASCII byte in the little-endian case or 8 times the number of ASCII in
-            // text order before the non-ASCII byte in the big-endian case.
-            let num_ascii = (zeros >> 3) as usize;
-            Some(ALIGNMENT + num_ascii)
-        }
-
-        #[cfg(not(all(feature = "simd-accel", target_endian = "little", target_arch = "aarch64")))]
+        basic_latin_alu!(ascii_to_basic_latin, u8, u16, ascii_to_basic_latin_stride_alu);
+        basic_latin_alu!(basic_latin_to_ascii, u16, u8, basic_latin_to_ascii_stride_alu);
+        latin1_alu!(unpack_latin1, u8, u16, unpack_latin1_stride_alu);
+        latin1_alu!(pack_latin1, u16, u8, pack_latin1_stride_alu);
         ascii_alu!(ascii_to_ascii, u8, u8, ascii_to_ascii_stride);
-
-        #[inline(always)]
-        pub fn validate_ascii(slice: &[u8]) -> Option<(u8, usize)> {
-            let src = slice.as_ptr();
-            let len = slice.len();
-            let mut offset = 0usize;
-            let mut until_alignment = (ALIGNMENT - ((src as usize) & ALIGNMENT_MASK)) & ALIGNMENT_MASK;
-            if until_alignment + STRIDE_SIZE <= len {
-                while until_alignment != 0 {
-                    let code_unit = slice[offset];
-                    if code_unit > 127 {
-                        return Some((code_unit, offset));
-                    }
-                    offset += 1;
-                    until_alignment -= 1;
-                }
-                let len_minus_stride = len - STRIDE_SIZE;
-                loop {
-                    let ptr = unsafe { src.offset(offset as isize) as *const usize };
-                    if let Some(num_ascii) = unsafe { validate_ascii_stride(ptr) } {
-                        offset += num_ascii;
-                        return Some((unsafe { *(src.offset(offset as isize)) }, offset));
-                    }
-                    offset += STRIDE_SIZE;
-                    if offset > len_minus_stride {
-                        break;
-                    }
-                }
-            }
-            while offset < len {
-                let code_unit = slice[offset];
-                if code_unit > 127 {
-                    return Some((code_unit, offset));
-                }
-                offset += 1;
-           }
-           None
-        }
-
     }
 }
 
 pub fn ascii_valid_up_to(bytes: &[u8]) -> usize {
     match validate_ascii(bytes) {
         None => bytes.len(),
         Some((_, num_valid)) => num_valid,
     }
@@ -1084,46 +1155,40 @@ pub fn iso_2022_jp_ascii_valid_up_to(byt
 // Any copyright to the test code below this comment is dedicated to the
 // Public Domain. http://creativecommons.org/publicdomain/zero/1.0/
 
 #[cfg(test)]
 mod tests {
     use super::*;
 
     macro_rules! test_ascii {
-        ($test_name:ident,
-         $fn_tested:ident,
-         $src_unit:ty,
-         $dst_unit:ty) => (
-        #[test]
-        fn $test_name() {
-            let mut src: Vec<$src_unit> = Vec::with_capacity(32);
-            let mut dst: Vec<$dst_unit> = Vec::with_capacity(32);
-            for i in 0..32 {
-                src.clear();
-                dst.clear();
-                dst.resize(32, 0);
-                for j in 0..32 {
-                    let c = if i == j {
-                        0xAA
-                    } else {
-                        j + 0x40
-                    };
-                    src.push(c as $src_unit);
-                }
-                match unsafe { $fn_tested(src.as_ptr(), dst.as_mut_ptr(), 32) } {
-                    None => unreachable!("Should always find non-ASCII"),
-                    Some((non_ascii, num_ascii)) => {
-                        assert_eq!(non_ascii, 0xAA);
-                        assert_eq!(num_ascii, i);
-                        for j in 0..i {
-                            assert_eq!(dst[j], (j + 0x40) as $dst_unit);
+        ($test_name:ident, $fn_tested:ident, $src_unit:ty, $dst_unit:ty) => {
+            #[test]
+            fn $test_name() {
+                let mut src: Vec<$src_unit> = Vec::with_capacity(32);
+                let mut dst: Vec<$dst_unit> = Vec::with_capacity(32);
+                for i in 0..32 {
+                    src.clear();
+                    dst.clear();
+                    dst.resize(32, 0);
+                    for j in 0..32 {
+                        let c = if i == j { 0xAA } else { j + 0x40 };
+                        src.push(c as $src_unit);
+                    }
+                    match unsafe { $fn_tested(src.as_ptr(), dst.as_mut_ptr(), 32) } {
+                        None => unreachable!("Should always find non-ASCII"),
+                        Some((non_ascii, num_ascii)) => {
+                            assert_eq!(non_ascii, 0xAA);
+                            assert_eq!(num_ascii, i);
+                            for j in 0..i {
+                                assert_eq!(dst[j], (j + 0x40) as $dst_unit);
+                            }
                         }
                     }
                 }
             }
-        });
+        };
     }
 
     test_ascii!(test_ascii_to_ascii, ascii_to_ascii, u8, u8);
     test_ascii!(test_ascii_to_basic_latin, ascii_to_basic_latin, u8, u16);
     test_ascii!(test_basic_latin_to_ascii, basic_latin_to_ascii, u16, u8);
 }
--- a/third_party/rust/encoding_rs/src/big5.rs
+++ b/third_party/rust/encoding_rs/src/big5.rs
@@ -2,39 +2,37 @@
 // file at the top-level directory of this distribution.
 //
 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
 // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
 // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use handles::*;
+use super::*;
 use data::*;
+use handles::*;
 use variant::*;
-use super::*;
 // Rust 1.14.0 requires the following despite the asterisk above.
 use super::in_inclusive_range32;
 
 pub struct Big5Decoder {
     lead: Option<u8>,
 }
 
 impl Big5Decoder {
     pub fn new() -> VariantDecoder {
         VariantDecoder::Big5(Big5Decoder { lead: None })
     }
 
     fn plus_one_if_lead(&self, byte_length: usize) -> Option<usize> {
-        byte_length.checked_add(
-            match self.lead {
-                None => 0,
-                Some(_) => 1,
-            }
-        )
+        byte_length.checked_add(match self.lead {
+            None => 0,
+            Some(_) => 1,
+        })
     }
 
     pub fn max_utf16_buffer_length(&self, byte_length: usize) -> Option<usize> {
         // If there is a lead but the next byte isn't a valid trail, an
         // error is generated for the lead (+1). Then another iteration checks
         // space, which needs +1 to account for the possibility of astral
         // output or combining pair.
         checked_add(1, self.plus_one_if_lead(byte_length))
@@ -164,28 +162,30 @@ impl Big5Decoder {
 
 pub struct Big5Encoder;
 
 impl Big5Encoder {
     pub fn new(encoding: &'static Encoding) -> Encoder {
         Encoder::new(encoding, VariantEncoder::Big5(Big5Encoder))
     }
 
-    pub fn max_buffer_length_from_utf16_without_replacement(&self,
-                                                            u16_length: usize)
-                                                            -> Option<usize> {
+    pub fn max_buffer_length_from_utf16_without_replacement(
+        &self,
+        u16_length: usize,
+    ) -> Option<usize> {
         // Astral: 2 to 2
         // ASCII: 1 to 1
         // Other: 1 to 2
         u16_length.checked_mul(2)
     }
 
-    pub fn max_buffer_length_from_utf8_without_replacement(&self,
-                                                           byte_length: usize)
-                                                           -> Option<usize> {
+    pub fn max_buffer_length_from_utf8_without_replacement(
+        &self,
+        byte_length: usize,
+    ) -> Option<usize> {
         // Astral: 4 to 2
         // Upper BMP: 3 to 2
         // Lower BMP: 2 to 2
         // ASCII: 1 to 1
         byte_length.checked_add(1)
     }
 
     ascii_compatible_encoder_functions!(
@@ -196,19 +196,21 @@ impl Big5Encoder {
             if let Some((lead, trail)) = big5_level1_hanzi_encode(bmp) {
                 handle.write_two(lead, trail)
             } else {
                 let pointer = if let Some(pointer) = big5_box_encode(bmp) {
                     pointer
                 } else if let Some(pointer) = big5_other_encode(bmp) {
                     pointer
                 } else {
-                    return (EncoderResult::unmappable_from_bmp(bmp),
-                            source.consumed(),
-                            handle.written());
+                    return (
+                        EncoderResult::unmappable_from_bmp(bmp),
+                        source.consumed(),
+                        handle.written(),
+                    );
                 };
                 let lead = pointer / 157 + 0x81;
                 let remainder = pointer % 157;
                 let trail = if remainder < 0x3F {
                     remainder + 0x40
                 } else {
                     remainder + 0x62
                 };
@@ -224,20 +226,28 @@ impl Big5Encoder {
                     let remainder = rebased_pointer % 157;
                     let trail = if remainder < 0x3F {
                         remainder + 0x40
                     } else {
                         remainder + 0x62
                     };
                     handle.write_two(lead as u8, trail as u8)
                 } else {
-                    return (EncoderResult::Unmappable(astral), source.consumed(), handle.written());
+                    return (
+                        EncoderResult::Unmappable(astral),
+                        source.consumed(),
+                        handle.written(),
+                    );
                 }
             } else {
-                return (EncoderResult::Unmappable(astral), source.consumed(), handle.written());
+                return (
+                    EncoderResult::Unmappable(astral),
+                    source.consumed(),
+                    handle.written(),
+                );
             }
         },
         bmp,
         astral,
         self,
         source,
         handle,
         copy_ascii_to_check_space_two,
--- a/third_party/rust/encoding_rs/src/data.rs
+++ b/third_party/rust/encoding_rs/src/data.rs
@@ -5,19059 +5,18565 @@
 // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license
 // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
 // THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
 // Instead, please regenerate using generate-encoding-data.py
 
-pub const IBM866_DATA: &'static [u16; 128] =
-    &[0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
-      0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
-      0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430,
-      0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B,
-      0x043C, 0x043D, 0x043E, 0x043F, 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562,
-      0x2556, 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510, 0x2514, 0x2534,
-      0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F, 0x255A, 0x2554, 0x2569, 0x2566, 0x2560,
-      0x2550, 0x256C, 0x2567, 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
-      0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, 0x0440, 0x0441, 0x0442,
-      0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
-      0x044E, 0x044F, 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E, 0x00B0,
-      0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0];
-
-pub const ISO_8859_2_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7, 0x00A8, 0x0160, 0x015E, 0x0164,
-      0x0179, 0x00AD, 0x017D, 0x017B, 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B,
-      0x02C7, 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C, 0x0154, 0x00C1,
-      0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A,
-      0x00CD, 0x00CE, 0x010E, 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
-      0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2,
-      0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED,
-      0x00EE, 0x010F, 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159,
-      0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9];
-
-pub const ISO_8859_3_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0126, 0x02D8, 0x00A3, 0x00A4, 0x0000, 0x0124, 0x00A7, 0x00A8, 0x0130, 0x015E, 0x011E,
-      0x0134, 0x00AD, 0x0000, 0x017B, 0x00B0, 0x0127, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x0125,
-      0x00B7, 0x00B8, 0x0131, 0x015F, 0x011F, 0x0135, 0x00BD, 0x0000, 0x017C, 0x00C0, 0x00C1,
-      0x00C2, 0x0000, 0x00C4, 0x010A, 0x0108, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x0000, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x0120, 0x00D6, 0x00D7,
-      0x011C, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x016C, 0x015C, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x0000, 0x00E4, 0x010B, 0x0109, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x0000, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x0121, 0x00F6, 0x00F7, 0x011D,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x016D, 0x015D, 0x02D9];
-
-pub const ISO_8859_4_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0104, 0x0138, 0x0156, 0x00A4, 0x0128, 0x013B, 0x00A7, 0x00A8, 0x0160, 0x0112, 0x0122,
-      0x0166, 0x00AD, 0x017D, 0x00AF, 0x00B0, 0x0105, 0x02DB, 0x0157, 0x00B4, 0x0129, 0x013C,
-      0x02C7, 0x00B8, 0x0161, 0x0113, 0x0123, 0x0167, 0x014A, 0x017E, 0x014B, 0x0100, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116,
-      0x00CD, 0x00CE, 0x012A, 0x0110, 0x0145, 0x014C, 0x0136, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
-      0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x0168, 0x016A, 0x00DF, 0x0101, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED,
-      0x00EE, 0x012B, 0x0111, 0x0146, 0x014D, 0x0137, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8,
-      0x0173, 0x00FA, 0x00FB, 0x00FC, 0x0169, 0x016B, 0x02D9];
-
-pub const ISO_8859_5_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040A, 0x040B,
-      0x040C, 0x00AD, 0x040E, 0x040F, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416,
-      0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421,
-      0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C,
-      0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
-      0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441, 0x0442,
-      0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
-      0x044E, 0x044F, 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458,
-      0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F];
-
-pub const ISO_8859_6_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0000, 0x0000, 0x0000, 0x00A4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-      0x060C, 0x00AD, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-      0x0000, 0x0000, 0x0000, 0x0000, 0x061B, 0x0000, 0x0000, 0x0000, 0x061F, 0x0000, 0x0621,
-      0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062A, 0x062B, 0x062C,
-      0x062D, 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x0637,
-      0x0638, 0x0639, 0x063A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0640, 0x0641, 0x0642,
-      0x0643, 0x0644, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649, 0x064A, 0x064B, 0x064C, 0x064D,
-      0x064E, 0x064F, 0x0650, 0x0651, 0x0652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-      0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000];
-
-pub const ISO_8859_7_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x2018, 0x2019, 0x00A3, 0x20AC, 0x20AF, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x037A, 0x00AB,
-      0x00AC, 0x00AD, 0x0000, 0x2015, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386,
-      0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, 0x0390, 0x0391,
-      0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C,
-      0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
-      0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03B1, 0x03B2,
-      0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD,
-      0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
-      0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000];
-
-pub const ISO_8859_8_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0000, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x0000, 0x0000, 0x0000,
-      0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-      0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-      0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2017, 0x05D0, 0x05D1, 0x05D2,
-      0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD,
-      0x05DE, 0x05DF, 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8,
-      0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000];
-
-pub const ISO_8859_10_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0104, 0x0112, 0x0122, 0x012A, 0x0128, 0x0136, 0x00A7, 0x013B, 0x0110, 0x0160, 0x0166,
-      0x017D, 0x00AD, 0x016A, 0x014A, 0x00B0, 0x0105, 0x0113, 0x0123, 0x012B, 0x0129, 0x0137,
-      0x00B7, 0x013C, 0x0111, 0x0161, 0x0167, 0x017E, 0x2015, 0x016B, 0x014B, 0x0100, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x012E, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x0116,
-      0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x0145, 0x014C, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x0168,
-      0x00D8, 0x0172, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x0101, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x012F, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x0117, 0x00ED,
-      0x00EE, 0x00EF, 0x00F0, 0x0146, 0x014D, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x0169, 0x00F8,
-      0x0173, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x0138];
-
-pub const ISO_8859_13_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00C6, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6,
-      0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, 0x0104, 0x012E,
-      0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122,
-      0x0136, 0x012A, 0x013B, 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
-      0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, 0x0105, 0x012F, 0x0101,
-      0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137,
-      0x012B, 0x013C, 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, 0x0173,
-      0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019];
-
-pub const ISO_8859_14_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x1E02, 0x1E03, 0x00A3, 0x010A, 0x010B, 0x1E0A, 0x00A7, 0x1E80, 0x00A9, 0x1E82, 0x1E0B,
-      0x1EF2, 0x00AD, 0x00AE, 0x0178, 0x1E1E, 0x1E1F, 0x0120, 0x0121, 0x1E40, 0x1E41, 0x00B6,
-      0x1E56, 0x1E81, 0x1E57, 0x1E83, 0x1E60, 0x1EF3, 0x1E84, 0x1E85, 0x1E61, 0x00C0, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x0174, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x1E6A,
-      0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x0176, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x0175, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x1E6B, 0x00F8,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x0177, 0x00FF];
-
-pub const ISO_8859_15_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7, 0x0161, 0x00A9, 0x00AA, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6,
-      0x00B7, 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF, 0x00C0, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
-      0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF];
-
-pub const ISO_8859_16_DATA: &'static [u16; 128] =
-    &[0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095,
-      0x0096, 0x0097, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0104, 0x0105, 0x0141, 0x20AC, 0x201E, 0x0160, 0x00A7, 0x0161, 0x00A9, 0x0218, 0x00AB,
-      0x0179, 0x00AD, 0x017A, 0x017B, 0x00B0, 0x00B1, 0x010C, 0x0142, 0x017D, 0x201D, 0x00B6,
-      0x00B7, 0x017E, 0x010D, 0x0219, 0x00BB, 0x0152, 0x0153, 0x0178, 0x017C, 0x00C0, 0x00C1,
-      0x00C2, 0x0102, 0x00C4, 0x0106, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x0110, 0x0143, 0x00D2, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x015A,
-      0x0170, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0118, 0x021A, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x0103, 0x00E4, 0x0107, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x0111, 0x0144, 0x00F2, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x015B, 0x0171,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0119, 0x021B, 0x00FF];
-
-pub const KOI8_R_DATA: &'static [u16; 128] =
-    &[0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, 0x252C, 0x2534, 0x253C,
-      0x2580, 0x2584, 0x2588, 0x258C, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219,
-      0x221A, 0x2248, 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, 0x2550,
-      0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A,
-      0x255B, 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564,
-      0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9, 0x044E, 0x0430,
-      0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043A, 0x043B,
-      0x043C, 0x043D, 0x043E, 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
-      0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, 0x042E, 0x0410, 0x0411,
-      0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C,
-      0x041D, 0x041E, 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042C,
-      0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A];
-
-pub const KOI8_U_DATA: &'static [u16; 128] =
-    &[0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524, 0x252C, 0x2534, 0x253C,
-      0x2580, 0x2584, 0x2588, 0x258C, 0x2590, 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219,
-      0x221A, 0x2248, 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7, 0x2550,
-      0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457, 0x2557, 0x2558, 0x2559, 0x255A,
-      0x255B, 0x0491, 0x045E, 0x255E, 0x255F, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406,
-      0x0407, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x0490, 0x040E, 0x00A9, 0x044E, 0x0430,
-      0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043A, 0x043B,
-      0x043C, 0x043D, 0x043E, 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
-      0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A, 0x042E, 0x0410, 0x0411,
-      0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C,
-      0x041D, 0x041E, 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042C,
-      0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A];
-
-pub const MACINTOSH_DATA: &'static [u16; 128] =
-    &[0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1, 0x00E0, 0x00E2, 0x00E4,
-      0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8, 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF,
-      0x00F1, 0x00F3, 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC, 0x2020,
-      0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF, 0x00AE, 0x00A9, 0x2122, 0x00B4,
-      0x00A8, 0x2260, 0x00C6, 0x00D8, 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202,
-      0x2211, 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x03A9, 0x00E6, 0x00F8, 0x00BF, 0x00A1,
-      0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3,
-      0x00D5, 0x0152, 0x0153, 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
-      0x00FF, 0x0178, 0x2044, 0x20AC, 0x2039, 0x203A, 0xFB01, 0xFB02, 0x2021, 0x00B7, 0x201A,
-      0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC,
-      0x00D3, 0x00D4, 0xF8FF, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC, 0x00AF,
-      0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7];
-
-pub const WINDOWS_874_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x0082, 0x0083, 0x0084, 0x2026, 0x0086, 0x0087, 0x0088, 0x0089, 0x008A,
-      0x008B, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08, 0x0E09, 0x0E0A, 0x0E0B,
-      0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16,
-      0x0E17, 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F, 0x0E20, 0x0E21,
-      0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C,
-      0x0E2D, 0x0E2E, 0x0E2F, 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
-      0x0E38, 0x0E39, 0x0E3A, 0x0000, 0x0000, 0x0000, 0x0000, 0x0E3F, 0x0E40, 0x0E41, 0x0E42,
-      0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D,
-      0x0E4E, 0x0E4F, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57, 0x0E58,
-      0x0E59, 0x0E5A, 0x0E5B, 0x0000, 0x0000, 0x0000, 0x0000];
-
-pub const WINDOWS_1250_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x0160,
-      0x2039, 0x015A, 0x0164, 0x017D, 0x0179, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x0098, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A, 0x00A0,
-      0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x015E, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x017B, 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C, 0x0154, 0x00C1,
-      0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7, 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A,
-      0x00CD, 0x00CE, 0x010E, 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
-      0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF, 0x0155, 0x00E1, 0x00E2,
-      0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7, 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED,
-      0x00EE, 0x010F, 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7, 0x0159,
-      0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9];
-
-pub const WINDOWS_1251_DATA: &'static [u16; 128] =
-    &[0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021, 0x20AC, 0x2030, 0x0409,
-      0x2039, 0x040A, 0x040C, 0x040B, 0x040F, 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x0098, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F, 0x00A0,
-      0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7, 0x0401, 0x00A9, 0x0404, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x0407, 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6,
-      0x00B7, 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457, 0x0410, 0x0411,
-      0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C,
-      0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
-      0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432,
-      0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
-      0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
-      0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F];
-
-pub const WINDOWS_1252_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160,
-      0x2039, 0x0152, 0x008D, 0x017D, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x017E, 0x0178, 0x00A0,
-      0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
-      0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF];
-
-pub const WINDOWS_1253_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A,
-      0x2039, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x0000, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x2015, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6,
-      0x00B7, 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F, 0x0390, 0x0391,
-      0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C,
-      0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x0000, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
-      0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03B1, 0x03B2,
-      0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD,
-      0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
-      0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0x0000];
-
-pub const WINDOWS_1254_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0160,
-      0x2039, 0x0152, 0x008D, 0x008E, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, 0x00A0,
-      0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
-      0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC,
-      0x00CD, 0x00CE, 0x00CF, 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
-      0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED,
-      0x00EE, 0x00EF, 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF];
-
-pub const WINDOWS_1255_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A,
-      0x2039, 0x008C, 0x008D, 0x008E, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x009C, 0x009D, 0x009E, 0x009F, 0x00A0,
-      0x00A1, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00D7, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x00F7, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x05B0, 0x05B1,
-      0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x05BC,
-      0x05BD, 0x05BE, 0x05BF, 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0x05F3,
-      0x05F4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x05D0, 0x05D1, 0x05D2,
-      0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7, 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD,
-      0x05DE, 0x05DF, 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7, 0x05E8,
-      0x05E9, 0x05EA, 0x0000, 0x0000, 0x200E, 0x200F, 0x0000];
-
-pub const WINDOWS_1256_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x0679,
-      0x2039, 0x0152, 0x0686, 0x0698, 0x0688, 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x06A9, 0x2122, 0x0691, 0x203A, 0x0153, 0x200C, 0x200D, 0x06BA, 0x00A0,
-      0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x06BE, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F, 0x06C1, 0x0621,
-      0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629, 0x062A, 0x062B, 0x062C,
-      0x062D, 0x062E, 0x062F, 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
-      0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643, 0x00E0, 0x0644, 0x00E2,
-      0x0645, 0x0646, 0x0647, 0x0648, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A,
-      0x00EE, 0x00EF, 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7, 0x0651,
-      0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0x06D2];
-
-pub const WINDOWS_1257_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0083, 0x201E, 0x2026, 0x2020, 0x2021, 0x0088, 0x2030, 0x008A,
-      0x2039, 0x008C, 0x00A8, 0x02C7, 0x00B8, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x0098, 0x2122, 0x009A, 0x203A, 0x009C, 0x00AF, 0x02DB, 0x009F, 0x00A0,
-      0x0000, 0x00A2, 0x00A3, 0x00A4, 0x0000, 0x00A6, 0x00A7, 0x00D8, 0x00A9, 0x0156, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00C6, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6, 0x0104, 0x012E,
-      0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112, 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122,
-      0x0136, 0x012A, 0x013B, 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
-      0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF, 0x0105, 0x012F, 0x0101,
-      0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113, 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137,
-      0x012B, 0x013C, 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7, 0x0173,
-      0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x02D9];
-
-pub const WINDOWS_1258_DATA: &'static [u16; 128] =
-    &[0x20AC, 0x0081, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021, 0x02C6, 0x2030, 0x008A,
-      0x2039, 0x0152, 0x008D, 0x008E, 0x008F, 0x0090, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022,
-      0x2013, 0x2014, 0x02DC, 0x2122, 0x009A, 0x203A, 0x0153, 0x009D, 0x009E, 0x0178, 0x00A0,
-      0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7, 0x00A8, 0x00A9, 0x00AA, 0x00AB,
-      0x00AC, 0x00AD, 0x00AE, 0x00AF, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
-      0x00B7, 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
-      0x00C2, 0x0102, 0x00C4, 0x00C5, 0x00C6, 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x0300,
-      0x00CD, 0x00CE, 0x00CF, 0x0110, 0x00D1, 0x0309, 0x00D3, 0x00D4, 0x01A0, 0x00D6, 0x00D7,
-      0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x01AF, 0x0303, 0x00DF, 0x00E0, 0x00E1, 0x00E2,
-      0x0103, 0x00E4, 0x00E5, 0x00E6, 0x00E7, 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0301, 0x00ED,
-      0x00EE, 0x00EF, 0x0111, 0x00F1, 0x0323, 0x00F3, 0x00F4, 0x01A1, 0x00F6, 0x00F7, 0x00F8,
-      0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x01B0, 0x20AB, 0x00FF];
-
-pub const X_MAC_CYRILLIC_DATA: &'static [u16; 128] =
-    &[0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
-      0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
-      0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x2020,
-      0x00B0, 0x0490, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x0406, 0x00AE, 0x00A9, 0x2122, 0x0402,
-      0x0452, 0x2260, 0x0403, 0x0453, 0x221E, 0x00B1, 0x2264, 0x2265, 0x0456, 0x00B5, 0x0491,
-      0x0408, 0x0404, 0x0454, 0x0407, 0x0457, 0x0409, 0x0459, 0x040A, 0x045A, 0x0458, 0x0405,
-      0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB, 0x00BB, 0x2026, 0x00A0, 0x040B, 0x045B,
-      0x040C, 0x045C, 0x0455, 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x201E,
-      0x040E, 0x045E, 0x040F, 0x045F, 0x2116, 0x0401, 0x0451, 0x044F, 0x0430, 0x0431, 0x0432,
-      0x0433, 0x0434, 0x0435, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
-      0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
-      0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x20AC];
-
-static BIG5_ASTRALNESS: [u32; 589] =
-    [0x445F0520, 0xB882520F, 0x400000F8, 0x044EA920, 0x00000000, 0x00010B34, 0x00000000,
-     0x00000000, 0x00000000, 0x0C000000, 0x00000040, 0x00000000, 0x00580400, 0x0000003C,
-     0x5C800000, 0xBBF3DCAD, 0xEDEE43C9, 0xC1260FA4, 0xEFF2769B, 0xF7FAFBDE, 0xAF44320F,
-     0xFEFDEFFE, 0x00B06011, 0x81192100, 0xA8881020, 0x24692160, 0xC4894400, 0x40030000,
-     0x84430035, 0x68935131, 0x00000202, 0x00000000, 0x00000000, 0x01004000, 0x8264AC80,
-     0x90A18C40, 0xD4605004, 0x182AD200, 0x9735689D, 0x20F8D84F, 0x281C82C4, 0x02947582,
-     0xA1A04038, 0x4D7110C5, 0xB9980DC4, 0x43015B5E, 0x7803999F, 0x081FE220, 0x40C90189,
-     0x9A0D0307, 0x4FD15290, 0x2102037C, 0x136EC020, 0xF5DBB583, 0x4F9077E5, 0x17369A17,
-     0xBA6E000C, 0x54602F09, 0x68781E00, 0x9E567022, 0xB78EF325, 0xE6EF0B17, 0x1B5B1777,
-     0x8D9810C1, 0xCFB61812, 0x1A723101, 0xC0B62C5B, 0x5CC3E220, 0xDAE01B82, 0x40D685CE,
-     0xD00B54A9, 0x4044480F, 0x40D40910, 0x1E643BAE, 0x08172B44, 0x18368286, 0x9CE789A0,
-     0x0384085B, 0xEC90DA02, 0xBF8587DB, 0x8E9DADA2, 0x2520989D, 0x9F460046, 0xC9D5E37F,
-     0x4DD6F484, 0x18B6E306, 0x00000912, 0x00000400, 0x00000020, 0x00000200, 0x00000000,
-     0x20000000, 0x00000000, 0x00000000, 0x00000000, 0x8E000008, 0x3F5F6E78, 0xF73DDD7E,
-     0xAEFC9BFC, 0x6B8FFFD2, 0xBABFE7F1, 0xEF176EAE, 0xB63EA7DC, 0x92C977B5, 0x4AB6A5D7,
-     0x81B99B6E, 0x54FE674D, 0xFE629BF1, 0x36D7526F, 0x4529BFFE, 0x65BDF981, 0x003942A6,
-     0x8F604200, 0x40409400, 0xD1D7AFD2, 0x98A000DB, 0x52067BB2, 0xC8169820, 0x0000093D,
-     0x00000001, 0x08B20A01, 0x00000080, 0x14208804, 0x00004C10, 0x44A10004, 0x01410010,
-     0xF0400800, 0x00024FDF, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x82800000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
-     0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xBE2B0680, 0xFEB016BE, 0x0008100C,
-     0x990829CA, 0x0C0B4010, 0x0025603B, 0x1882D42A, 0x822DDE48, 0x18872415, 0x2180E118,
-     0x7892D301, 0x93038213, 0x34C550CD, 0xADA228C0, 0x5818997C, 0x42C42212, 0x3E8E53A2,
-     0x4542E1CD, 0x0F7E9034, 0x01748100, 0x39858212, 0xDE002947, 0x88014162, 0x819D43A1,
-     0x0048A1C8];
-
-pub static BIG5_LOW_BITS: [u16; 18840] =
-    [0x43F0, 0x4C32, 0x4603, 0x45A6, 0x4578, 0x7267, 0x4D77, 0x45B3, 0x7CB1, 0x4CE2, 0x7CC5,
-     0x3B95, 0x4736, 0x4744, 0x4C47, 0x4C40, 0x42BF, 0x3617, 0x7352, 0x6E8B, 0x70D2, 0x4C57,
-     0xA351, 0x474F, 0x45DA, 0x4C85, 0x7C6C, 0x4D07, 0x4AA4, 0x46A1, 0x6B23, 0x7225, 0x5A54,
-     0x1A63, 0x3E06, 0x3F61, 0x664D, 0x56FB, 0x0000, 0x7D95, 0x591D, 0x8BB9, 0x3DF4, 0x9734,
-     0x7BEF, 0x5BDB, 0x1D5E, 0x5AA4, 0x3625, 0x9EB0, 0x5AD1, 0x5BB7, 0x5CFC, 0x676E, 0x8593,
-     0x9945, 0x7461, 0x749D, 0x3875, 0x1D53, 0x369E, 0x6021, 0x3EEC, 0x58DE, 0x3AF5, 0x7AFC,
-     0x9F97, 0x4161, 0x890D, 0x31EA, 0x0A8A, 0x325E, 0x430A, 0x8484, 0x9F96, 0x942F, 0x4930,
-     0x8613, 0x5896, 0x974A, 0x9218, 0x79D0, 0x7A32, 0x6660, 0x6A29, 0x889D, 0x744C, 0x7BC5,
-     0x6782, 0x7A2C, 0x524F, 0x9046, 0x34E6, 0x73C4, 0x5DB9, 0x74C6, 0x9FC7, 0x57B3, 0x492F,
-     0x544C, 0x4131, 0x368E, 0x5818, 0x7A72, 0x7B65, 0x8B8F, 0x46AE, 0x6E88, 0x4181, 0x5D99,
-     0x7BAE, 0x24BC, 0x9FC8, 0x24C1, 0x24C9, 0x24CC, 0x9FC9, 0x8504, 0x35BB, 0x40B4, 0x9FCA,
-     0x44E1, 0xADFF, 0x62C1, 0x706E, 0x9FCB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x31C0, 0x31C1, 0x31C2, 0x31C3, 0x31C4, 0x010C, 0x31C5, 0x00D1,
-     0x00CD, 0x31C6, 0x31C7, 0x00CB, 0x1FE8, 0x31C8, 0x00CA, 0x31C9, 0x31CA, 0x31CB, 0x31CC,
-     0x010E, 0x31CD, 0x31CE, 0x0100, 0x00C1, 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A, 0x00C8,
-     0x014C, 0x00D3, 0x01D1, 0x00D2, 0x0000, 0x1EBE, 0x0000, 0x1EC0, 0x00CA, 0x0101, 0x00E1,
-     0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B, 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC,
-     0x014D, 0x00F3, 0x01D2, 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA,
-     0x01DC, 0x00FC, 0x0000, 0x1EBF, 0x0000, 0x1EC1, 0x00EA, 0x0261, 0x23DA, 0x23DB, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xA3A9, 0x1145, 0x0000, 0x650A, 0x0000,
-     0x0000, 0x4E3D, 0x6EDD, 0x9D4E, 0x91DF, 0x0000, 0x0000, 0x7735, 0x6491, 0x4F1A, 0x4F28,
-     0x4FA8, 0x5156, 0x5174, 0x519C, 0x51E4, 0x52A1, 0x52A8, 0x533B, 0x534E, 0x53D1, 0x53D8,
-     0x56E2, 0x58F0, 0x5904, 0x5907, 0x5932, 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86,
-     0x603B, 0x6589, 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC, 0x7EBA,
-     0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF, 0x836F, 0x89C6, 0x8BBE, 0x8BE2,
-     0x8F66, 0x8F67, 0x8F6E, 0x7411, 0x7CFC, 0x7DCD, 0x6946, 0x7AC9, 0x5227, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x918C, 0x78B8, 0x915E, 0x80BC, 0x0000, 0x8D0B, 0x80F6, 0x09E7, 0x0000,
-     0x0000, 0x809F, 0x9EC7, 0x4CCD, 0x9DC9, 0x9E0C, 0x4C3E, 0x9DF6, 0x700E, 0x9E0A, 0xA133,
-     0x35C1, 0x0000, 0x6E9A, 0x823E, 0x7519, 0x0000, 0x4911, 0x9A6C, 0x9A8F, 0x9F99, 0x7987,
-     0x846C, 0x1DCA, 0x05D0, 0x2AE6, 0x4E24, 0x4E81, 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37,
-     0x344C, 0x4FBD, 0x3E48, 0x5003, 0x5088, 0x347D, 0x3493, 0x34A5, 0x5186, 0x5905, 0x51DB,
-     0x51FC, 0x5205, 0x4E89, 0x5279, 0x5290, 0x5327, 0x35C7, 0x53A9, 0x3551, 0x53B0, 0x3553,
-     0x53C2, 0x5423, 0x356D, 0x3572, 0x3681, 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF,
-     0x5518, 0x5523, 0x5528, 0x3598, 0x553F, 0x35A5, 0x35BF, 0x55D7, 0x35C5, 0x7D84, 0x5525,
-     0x0000, 0x0C42, 0x0D15, 0x512B, 0x5590, 0x2CC6, 0x39EC, 0x0341, 0x8E46, 0x4DB8, 0x94E5,
-     0x4053, 0x80BE, 0x777A, 0x2C38, 0x3A34, 0x47D5, 0x815D, 0x69F2, 0x4DEA, 0x64DD, 0x0D7C,
-     0x0FB4, 0x0CD5, 0x10F4, 0x648D, 0x8E7E, 0x0E96, 0x0C0B, 0x0F64, 0x2CA9, 0x8256, 0x44D3,
-     0x0000, 0x0D46, 0x9A4D, 0x80E9, 0x47F4, 0x4EA7, 0x2CC2, 0x9AB2, 0x3A67, 0x95F4, 0x3FED,
-     0x3506, 0x52C7, 0x97D4, 0x78C8, 0x2D44, 0x9D6E, 0x9815, 0x0000, 0x43D9, 0x60A5, 0x64B4,
-     0x54E3, 0x2D4C, 0x2BCA, 0x1077, 0x39FB, 0x106F, 0x66DA, 0x6716, 0x79A0, 0x64EA, 0x5052,
-     0x0C43, 0x8E68, 0x21A1, 0x8B4C, 0x0731, 0x0000, 0x480B, 0x01A9, 0x3FFA, 0x5873, 0x2D8D,
-     0x0000, 0x45C8, 0x04FC, 0x6097, 0x0F4C, 0x0D96, 0x5579, 0x40BB, 0x43BA, 0x0000, 0x4AB4,
-     0x2A66, 0x109D, 0x81AA, 0x98F5, 0x0D9C, 0x6379, 0x39FE, 0x2775, 0x8DC0, 0x56A1, 0x647C,
-     0x3E43, 0x0000, 0xA601, 0x0E09, 0x2ACF, 0x2CC9, 0x0000, 0x10C8, 0x39C2, 0x3992, 0x3A06,
-     0x829B, 0x3578, 0x5E49, 0x20C7, 0x5652, 0x0F31, 0x2CB2, 0x9720, 0x34BC, 0x6C3D, 0x4E3B,
-     0x0000, 0x0000, 0x7574, 0x2E8B, 0x2208, 0xA65B, 0x8CCD, 0x0E7A, 0x0C34, 0x681C, 0x7F93,
-     0x10CF, 0x2803, 0x2939, 0x35FB, 0x51E3, 0x0E8C, 0x0F8D, 0x0EAA, 0x3F93, 0x0F30, 0x0D47,
-     0x114F, 0x0E4C, 0x0000, 0x0EAB, 0x0BA9, 0x0D48, 0x10C0, 0x113D, 0x3FF9, 0x2696, 0x6432,
-     0x0FAD, 0x33F4, 0x7639, 0x2BCE, 0x0D7E, 0x0D7F, 0x2C51, 0x2C55, 0x3A18, 0x0E98, 0x10C7,
-     0x0F2E, 0xA632, 0x6B50, 0x8CD2, 0x8D99, 0x8CCA, 0x95AA, 0x54CC, 0x82C4, 0x55B9, 0x0000,
-     0x9EC3, 0x9C26, 0x9AB6, 0x775E, 0x2DEE, 0x7140, 0x816D, 0x80EC, 0x5C1C, 0x6572, 0x8134,
-     0x3797, 0x535F, 0x80BD, 0x91B6, 0x0EFA, 0x0E0F, 0x0E77, 0x0EFB, 0x35DD, 0x4DEB, 0x3609,
-     0x0CD6, 0x56AF, 0x27B5, 0x10C9, 0x0E10, 0x0E78, 0x1078, 0x1148, 0x8207, 0x1455, 0x0E79,
-     0x4E50, 0x2DA4, 0x5A54, 0x101D, 0x101E, 0x10F5, 0x10F6, 0x579C, 0x0E11, 0x7694, 0x82CD,
-     0x0FB5, 0x0E7B, 0x517E, 0x3703, 0x0FB6, 0x1180, 0x52D8, 0xA2BD, 0x49DA, 0x183A, 0x4177,
-     0x827C, 0x5899, 0x5268, 0x361A, 0x573D, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27, 0x49E7,
-     0x9C1F, 0x9B8D, 0x5B74, 0x313D, 0x55FB, 0x35F2, 0x5689, 0x4E28, 0x5902, 0x1BC1, 0xF878,
-     0x9751, 0x0086, 0x4E5B, 0x4EBB, 0x353E, 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535,
-     0x6B7A, 0x6C35, 0x6C3A, 0x706C, 0x722B, 0x4E2C, 0x72AD, 0x48E9, 0x7F52, 0x793B, 0x7CF9,
-     0x7F53, 0x626A, 0x34C1, 0x0000, 0x634B, 0x8002, 0x8080, 0x6612, 0x6951, 0x535D, 0x8864,
-     0x89C1, 0x78B2, 0x8BA0, 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0x8E0F, 0x97E6, 0x9875,
-     0x98CE, 0x98DE, 0x9963, 0x9810, 0x9C7C, 0x9E1F, 0x9EC4, 0x6B6F, 0xF907, 0x4E37, 0x0087,
-     0x961D, 0x6237, 0x94A2, 0x0000, 0x503B, 0x6DFE, 0x9C73, 0x9FA6, 0x3DC9, 0x888F, 0x414E,
-     0x7077, 0x5CF5, 0x4B20, 0x51CD, 0x3559, 0x5D30, 0x6122, 0x8A32, 0x8FA7, 0x91F6, 0x7191,
-     0x6719, 0x73BA, 0x3281, 0xA107, 0x3C8B, 0x1980, 0x4B10, 0x78E4, 0x7402, 0x51AE, 0x870F,
-     0x4009, 0x6A63, 0xA2BA, 0x4223, 0x860F, 0x0A6F, 0x7A2A, 0x9947, 0x8AEA, 0x9755, 0x704D,
-     0x5324, 0x207E, 0x93F4, 0x76D9, 0x89E3, 0x9FA7, 0x77DD, 0x4EA3, 0x4FF0, 0x50BC, 0x4E2F,
-     0x4F17, 0x9FA8, 0x5434, 0x7D8B, 0x5892, 0x58D0, 0x1DB6, 0x5E92, 0x5E99, 0x5FC2, 0x2712,
-     0x658B, 0x33F9, 0x6919, 0x6A43, 0x3C63, 0x6CFF, 0x0000, 0x7200, 0x4505, 0x738C, 0x3EDB,
-     0x4A13, 0x5B15, 0x74B9, 0x8B83, 0x5CA4, 0x5695, 0x7A93, 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8,
-     0x8597, 0x9FA9, 0x8890, 0x9FAA, 0x8EB9, 0x9FAB, 0x8FCF, 0x855F, 0x99E0, 0x9221, 0x9FAC,
-     0x8DB9, 0x143F, 0x4071, 0x42A2, 0x5A1A, 0x0000, 0x0000, 0x0000, 0x9868, 0x676B, 0x4276,
-     0x573D, 0x0000, 0x85D6, 0x497B, 0x82BF, 0x710D, 0x4C81, 0x6D74, 0x5D7B, 0x6B15, 0x6FBE,
-     0x9FAD, 0x9FAE, 0x5B96, 0x9FAF, 0x66E7, 0x7E5B, 0x6E57, 0x79CA, 0x3D88, 0x44C3, 0x3256,
-     0x2796, 0x439A, 0x4536, 0x0000, 0x5CD5, 0x3B1A, 0x8AF9, 0x5C78, 0x3D12, 0x3551, 0x5D78,
-     0x9FB2, 0x7157, 0x4558, 0x40EC, 0x1E23, 0x4C77, 0x3978, 0x344A, 0x01A4, 0x6C41, 0x8ACC,
-     0x4FB4, 0x0239, 0x59BF, 0x816C, 0x9856, 0x98FA, 0x5F3B, 0x0B9F, 0x0000, 0x21C1, 0x896D,
-     0x4102, 0x46BB, 0x9079, 0x3F07, 0x9FB3, 0xA1B5, 0x40F8, 0x37D6, 0x46F7, 0x6C46, 0x417C,
-     0x86B2, 0x73FF, 0x456D, 0x38D4, 0x549A, 0x4561, 0x451B, 0x4D89, 0x4C7B, 0x4D76, 0x45EA,
-     0x3FC8, 0x4B0F, 0x3661, 0x44DE, 0x44BD, 0x41ED, 0x5D3E, 0x5D48, 0x5D56, 0x3DFC, 0x380F,
-     0x5DA4, 0x5DB9, 0x3820, 0x3838, 0x5E42, 0x5EBD, 0x5F25, 0x5F83, 0x3908, 0x3914, 0x393F,
-     0x394D, 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61B9, 0x61CF, 0x39B8, 0x622C, 0x6290,
-     0x62E5, 0x6318, 0x39F8, 0x56B1, 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x645A, 0x3A4B, 0x64C0,
-     0x5D15, 0x5621, 0x9F9F, 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653, 0x3AF2, 0x6692, 0x3B22,
-     0x6716, 0x3B42, 0x67A4, 0x6800, 0x3B58, 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909,
-     0x6943, 0x725C, 0x6964, 0x699F, 0x6985, 0x3BBC, 0x69D6, 0x3BDD, 0x6A65, 0x6A74, 0x6A71,
-     0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4, 0x6AF6, 0x6B81, 0x6BC1, 0x6BEA,
-     0x6C75, 0x6CAA, 0x3CCB, 0x6D02, 0x6D06, 0x6D26, 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15,
-     0x6E18, 0x6E29, 0x6E86, 0x89C0, 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8, 0x6EE9, 0x6F24,
-     0x6F34, 0x3D46, 0x3F41, 0x6F81, 0x6FBE, 0x3D6A, 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C,
-     0x3D91, 0x7050, 0x7054, 0x706F, 0x707F, 0x7089, 0x0325, 0x43C1, 0x35F1, 0x0ED8, 0x3ED7,
-     0x57BE, 0x6ED3, 0x713E, 0x57E0, 0x364E, 0x69A2, 0x8BE9, 0x5B74, 0x7A49, 0x58E1, 0x94D9,
-     0x7A65, 0x7A7D, 0x59AC, 0x7ABB, 0x7AB0, 0x7AC2, 0x7AC3, 0x71D1, 0x648D, 0x41CA, 0x7ADA,
-     0x7ADD, 0x7AEA, 0x41EF, 0x54B2, 0x5C01, 0x7B0B, 0x7B55, 0x7B29, 0x530E, 0x5CFE, 0x7BA2,
-     0x7B6F, 0x839C, 0x5BB4, 0x6C7F, 0x7BD0, 0x8421, 0x7B92, 0x7BB8, 0x5D20, 0x3DAD, 0x5C65,
-     0x8492, 0x7BFA, 0x7C06, 0x7C35, 0x5CC1, 0x7C44, 0x7C83, 0x4882, 0x7CA6, 0x667D, 0x4578,
-     0x7CC9, 0x7CC7, 0x7CE6, 0x7C74, 0x7CF3, 0x7CF5, 0x7CCE, 0x7E67, 0x451D, 0x6E44, 0x7D5D,
-     0x6ED6, 0x748D, 0x7D89, 0x7DAB, 0x7135, 0x7DB3, 0x7DD2, 0x4057, 0x6029, 0x7DE4, 0x3D13,
-     0x7DF5, 0x17F9, 0x7DE5, 0x836D, 0x7E1D, 0x6121, 0x615A, 0x7E6E, 0x7E92, 0x432B, 0x946C,
-     0x7E27, 0x7F40, 0x7F41, 0x7F47, 0x7936, 0x62D0, 0x99E1, 0x7F97, 0x6351, 0x7FA3, 0x1661,
-     0x0068, 0x455C, 0x3766, 0x4503, 0x833A, 0x7FFA, 0x6489, 0x8005, 0x8008, 0x801D, 0x8028,
-     0x802F, 0xA087, 0x6CC3, 0x803B, 0x803C, 0x8061, 0x2714, 0x4989, 0x6626, 0x3DE3, 0x66E8,
-     0x6725, 0x80A7, 0x8A48, 0x8107, 0x811A, 0x58B0, 0x26F6, 0x6C7F, 0x6498, 0x4FB8, 0x64E7,
-     0x148A, 0x8218, 0x185E, 0x6A53, 0x4A65, 0x4A95, 0x447A, 0x8229, 0x0B0D, 0x6A52, 0x3D7E,
-     0x4FF9, 0x14FD, 0x84E2, 0x8362, 0x6B0A, 0x49A7, 0x3530, 0x1773, 0x3DF8, 0x82AA, 0x691B,
-     0xF994, 0x41DB, 0x854B, 0x82D0, 0x831A, 0x0E16, 0x17B4, 0x36C1, 0x317D, 0x355A, 0x827B,
-     0x82E2, 0x8318, 0x3E8B, 0x6DA3, 0x6B05, 0x6B97, 0x35CE, 0x3DBF, 0x831D, 0x55EC, 0x8385,
-     0x450B, 0x6DA5, 0x83AC, 0x83C1, 0x83D3, 0x347E, 0x6ED4, 0x6A57, 0x855A, 0x3496, 0x6E42,
-     0x2EEF, 0x8458, 0x5BE4, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0x3CB5, 0x7958, 0x84A8,
-     0x6B96, 0x6E77, 0x6E43, 0x84DE, 0x840F, 0x8391, 0x44A0, 0x8493, 0x84E4, 0x5C91, 0x4240,
-     0x5CC0, 0x4543, 0x8534, 0x5AF2, 0x6E99, 0x4527, 0x8573, 0x4516, 0x67BF, 0x8616, 0x8625,
-     0x863B, 0x85C1, 0x7088, 0x8602, 0x1582, 0x70CD, 0xF9B2, 0x456A, 0x8628, 0x3648, 0x18A2,
-     0x53F7, 0x739A, 0x867E, 0x8771, 0xA0F8, 0x87EE, 0x2C27, 0x87B1, 0x87DA, 0x880F, 0x5661,
-     0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0x75E0, 0x3DB9, 0x75E4, 0x885E, 0x889C, 0x465B,
-     0x88B4, 0x88B5, 0x63C1, 0x88C5, 0x7777, 0x770F, 0x8987, 0x898A, 0x89A6, 0x89A9, 0x89A7,
-     0x89BC, 0x8A25, 0x89E7, 0x7924, 0x7ABD, 0x8A9C, 0x7793, 0x91FE, 0x8A90, 0x7A59, 0x7AE9,
-     0x7B3A, 0x3F8F, 0x4713, 0x7B38, 0x717C, 0x8B0C, 0x8B1F, 0x5430, 0x5565, 0x8B3F, 0x8B4C,
-     0x8B4D, 0x8AA9, 0x4A7A, 0x8B90, 0x8B9B, 0x8AAF, 0x16DF, 0x4615, 0x884F, 0x8C9B, 0x7D54,
-     0x7D8F, 0xF9D4, 0x3725, 0x7D53, 0x8CD6, 0x7D98, 0x7DBD, 0x8D12, 0x8D03, 0x1910, 0x8CDB,
-     0x705C, 0x8D11, 0x4CC9, 0x3ED0, 0x8D77, 0x8DA9, 0x8002, 0x1014, 0x498A, 0x3B7C, 0x81BC,
-     0x710C, 0x7AE7, 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D, 0x8365, 0x8412, 0x8FA5,
-     0x9303, 0xA29F, 0x0A50, 0x8FB3, 0x492A, 0x89DE, 0x853D, 0x3DBB, 0x5EF8, 0x3262, 0x8FF9,
-     0xA014, 0x86BC, 0x8501, 0x2325, 0x3980, 0x6ED7, 0x9037, 0x853C, 0x7ABE, 0x9061, 0x856C,
-     0x860B, 0x90A8, 0x8713, 0x90C4, 0x86E6, 0x90AE, 0x90FD, 0x9167, 0x3AF0, 0x91A9, 0x91C4,
-     0x7CAC, 0x8933, 0x1E89, 0x920E, 0x6C9F, 0x9241, 0x9262, 0x55B9, 0x92B9, 0x8AC6, 0x3C9B,
-     0x8B0C, 0x55DB, 0x0D31, 0x932C, 0x936B, 0x8AE1, 0x8BEB, 0x708F, 0x5AC3, 0x8AE2, 0x8AE5,
-     0x4965, 0x9244, 0x8BEC, 0x8C39, 0x8BFF, 0x9373, 0x945B, 0x8EBC, 0x9585, 0x95A6, 0x9426,
-     0x95A0, 0x6FF6, 0x42B9, 0x267A, 0x86D8, 0x127C, 0x3E2E, 0x49DF, 0x6C1C, 0x967B, 0x9696,
-     0x416C, 0x96A3, 0x6ED5, 0x61DA, 0x96B6, 0x78F5, 0x8AE0, 0x96BD, 0x53CC, 0x49A1, 0x6CB8,
-     0x0274, 0x6410, 0x90AF, 0x90E5, 0x4AD1, 0x1915, 0x330A, 0x9731, 0x8642, 0x9736, 0x4A0F,
-     0x453D, 0x4585, 0x4AE9, 0x7075, 0x5B41, 0x971B, 0x975C, 0x91D5, 0x9757, 0x5B4A, 0x91EB,
-     0x975F, 0x9425, 0x50D0, 0x30B7, 0x30BC, 0x9789, 0x979F, 0x97B1, 0x97BE, 0x97C0, 0x97D2,
-     0x97E0, 0x546C, 0x97EE, 0x741C, 0x9433, 0x97FF, 0x97F5, 0x941D, 0x797A, 0x4AD1, 0x9834,
-     0x9833, 0x984B, 0x9866, 0x3B0E, 0x7175, 0x3D51, 0x0630, 0x415C, 0x5706, 0x98CA, 0x98B7,
-     0x98C8, 0x98C7, 0x4AFF, 0x6D27, 0x16D3, 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939,
-     0x4A29, 0x4B72, 0x9857, 0x9905, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0x5725, 0x36C4,
-     0x90B1, 0x9BD5, 0x9AE0, 0x9AE2, 0x9B05, 0x9AF4, 0x4C0E, 0x9B14, 0x9B2D, 0x8600, 0x5034,
-     0x9B34, 0x69A8, 0x38C3, 0x307D, 0x9B50, 0x9B40, 0x9D3E, 0x5A45, 0x1863, 0x9B8E, 0x424B,
-     0x9C02, 0x9BFF, 0x9C0C, 0x9E68, 0x9DD4, 0x9FB7, 0xA192, 0xA1AB, 0xA0E1, 0xA123, 0xA1DF,
-     0x9D7E, 0x9D83, 0xA134, 0x9E0E, 0x6888, 0x9DC4, 0x215B, 0xA193, 0xA220, 0x193B, 0xA233,
-     0x9D39, 0xA0B9, 0xA2B4, 0x9E90, 0x9E95, 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA, 0x9EAF, 0x4364,
-     0x9EC1, 0x3B60, 0x39E5, 0x3D1D, 0x4F32, 0x37BE, 0x8C2B, 0x9F02, 0x9F08, 0x4B96, 0x9424,
-     0x6DA2, 0x9F17, 0x9F16, 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0x908B, 0x97F2, 0x847F,
-     0x9F62, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0x4975, 0x49BB, 0x7177, 0x49F8, 0x4348,
-     0x4A51, 0x739E, 0x8BDA, 0x18FA, 0x799F, 0x897E, 0x8E36, 0x9369, 0x93F3, 0x8A44, 0x92EC,
-     0x9381, 0x93CB, 0x896C, 0x44B9, 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0x4473, 0x43F8,
-     0x717E, 0x17EF, 0x70A3, 0x18BE, 0x3599, 0x3EC7, 0x1885, 0x542F, 0x17F8, 0x3722, 0x16FB,
-     0x1839, 0x36E1, 0x1774, 0x18D1, 0x5F4B, 0x3723, 0x16C0, 0x575B, 0x4A25, 0x13FE, 0x12A8,
-     0x13C6, 0x14B6, 0x8503, 0x36A6, 0x8503, 0x8455, 0x4994, 0x7165, 0x3E31, 0x555C, 0x3EFB,
-     0x7052, 0x44F4, 0x36EE, 0x999D, 0x6F26, 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0x1922,
-     0x6810, 0x4057, 0x373F, 0x40E1, 0x408B, 0x410F, 0x6C21, 0x54CB, 0x569E, 0x66B1, 0x5692,
-     0x0FDF, 0x0BA8, 0x0E0D, 0x93C6, 0x8B13, 0x939C, 0x4EF8, 0x512B, 0x3819, 0x4436, 0x4EBC,
-     0x0465, 0x037F, 0x4F4B, 0x4F8A, 0x5651, 0x5A68, 0x01AB, 0x03CB, 0x3999, 0x030A, 0x0414,
-     0x3435, 0x4F29, 0x02C0, 0x8EB3, 0x0275, 0x8ADA, 0x020C, 0x4E98, 0x50CD, 0x510D, 0x4FA2,
-     0x4F03, 0x4A0E, 0x3E8A, 0x4F42, 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC,
-     0x5159, 0x515B, 0x515D, 0x515E, 0x6E76, 0x3595, 0x3E39, 0x3EBF, 0x6D72, 0x1884, 0x3E89,
-     0x51A8, 0x51C3, 0x05E0, 0x44DD, 0x04A3, 0x0492, 0x0491, 0x8D7A, 0x8A9C, 0x070E, 0x5259,
-     0x52A4, 0x0873, 0x52E1, 0x936E, 0x467A, 0x718C, 0x438C, 0x0C20, 0x49AC, 0x10E4, 0x69D1,
-     0x0E1D, 0x7479, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E, 0x4ABC, 0x408D, 0x53D0,
-     0x3584, 0x720F, 0x40C9, 0x55B4, 0x0345, 0x54CD, 0x0BC6, 0x571D, 0x925D, 0x96F4, 0x9366,
-     0x57DD, 0x578D, 0x577F, 0x363E, 0x58CB, 0x5A99, 0x8A46, 0x16FA, 0x176F, 0x1710, 0x5A2C,
-     0x59B8, 0x928F, 0x5A7E, 0x5ACF, 0x5A12, 0x5946, 0x19F3, 0x1861, 0x4295, 0x36F5, 0x6D05,
-     0x7443, 0x5A21, 0x5E83, 0x5A81, 0x8BD7, 0x0413, 0x93E0, 0x748C, 0x1303, 0x7105, 0x4972,
-     0x9408, 0x89FB, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48, 0x1996, 0x197C, 0x3AEE,
-     0x5ECD, 0x5B4F, 0x1903, 0x1904, 0x3701, 0x18A0, 0x36DD, 0x16FE, 0x36D3, 0x812A, 0x8A47,
-     0x1DBA, 0x3472, 0x89A8, 0x5F0C, 0x5F0E, 0x1927, 0x17AB, 0x5A6B, 0x173B, 0x5B44, 0x8614,
-     0x75FD, 0x8860, 0x607E, 0x2860, 0x262B, 0x5FDB, 0x3EB8, 0x25AF, 0x25BE, 0x9088, 0x6F73,
-     0x61C0, 0x003E, 0x0046, 0x261B, 0x6199, 0x6198, 0x6075, 0x2C9B, 0x2D07, 0x46D4, 0x914D,
-     0x6471, 0x4665, 0x2B6A, 0x3A29, 0x2B22, 0x3450, 0x98EA, 0x2E78, 0x6337, 0xA45B, 0x64B6,
-     0x6331, 0x63D1, 0x49E3, 0x2D67, 0x62A4, 0x2CA1, 0x643B, 0x656B, 0x6972, 0x3BF4, 0x308E,
-     0x32AD, 0x4989, 0x32AB, 0x550D, 0x32E0, 0x18D9, 0x943F, 0x66CE, 0x3289, 0x31B3, 0x3AE0,
-     0x4190, 0x5584, 0x8B22, 0x558F, 0x16FC, 0x555B, 0x5425, 0x78EE, 0x3103, 0x182A, 0x3234,
-     0x3464, 0x320F, 0x3182, 0x42C9, 0x668E, 0x6D24, 0x666B, 0x4B93, 0x6630, 0x7870, 0x1DEB,
-     0x6663, 0x32D2, 0x32E1, 0x661E, 0x5872, 0x38D1, 0x383A, 0x37BC, 0x3B99, 0x37A2, 0x33FE,
-     0x74D0, 0x3B96, 0x678F, 0x462A, 0x68B6, 0x681E, 0x3BC4, 0x6ABE, 0x3863, 0x37D5, 0x4487,
-     0x6A33, 0x6A52, 0x6AC9, 0x6B05, 0x1912, 0x6511, 0x6898, 0x6A4C, 0x3BD7, 0x6A7A, 0x6B57,
-     0x3FC0, 0x3C9A, 0x93A0, 0x92F2, 0x8BEA, 0x8ACB, 0x9289, 0x801E, 0x89DC, 0x9467, 0x6DA5,
-     0x6F0B, 0x49EC, 0x6D67, 0x3F7F, 0x3D8F, 0x6E04, 0x403C, 0x5A3D, 0x6E0A, 0x5847, 0x6D24,
-     0x7842, 0x713B, 0x431A, 0x4276, 0x70F1, 0x7250, 0x7287, 0x7294, 0x478F, 0x4725, 0x5179,
-     0x4AA4, 0x05EB, 0x747A, 0x3EF8, 0x365F, 0x4A4A, 0x4917, 0x5FE1, 0x3F06, 0x3EB1, 0x4ADF,
-     0x8C23, 0x3F35, 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F, 0x6DEA, 0x4551,
-     0x7583, 0x3F63, 0x4CD9, 0x4D06, 0x3F58, 0x7555, 0x7673, 0xA5C6, 0x3B19, 0x7468, 0x8ACC,
-     0x49AB, 0x498E, 0x3AFB, 0x3DCD, 0x4A4E, 0x3EFF, 0x49C5, 0x48F3, 0x91FA, 0x5732, 0x9342,
-     0x8AE3, 0x1864, 0x50DF, 0x5221, 0x51E7, 0x7778, 0x3232, 0x770E, 0x770F, 0x777B, 0x4697,
-     0x3781, 0x3A5E, 0x48F0, 0x7438, 0x749B, 0x3EBF, 0x4ABA, 0x4AC7, 0x40C8, 0x4A96, 0x61AE,
-     0x9307, 0x5581, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959, 0x7741, 0x56E3, 0x410E,
-     0x799B, 0x8496, 0x79A5, 0x6A2D, 0x3EFA, 0x7A3A, 0x79F4, 0x416E, 0x16E6, 0x4132, 0x9235,
-     0x79F1, 0x0D4C, 0x498C, 0x0299, 0x3DBA, 0x176E, 0x3597, 0x556B, 0x3570, 0x36AA, 0x01D4,
-     0x0C0D, 0x7AE2, 0x5A59, 0x26F5, 0x5AAF, 0x5A9C, 0x5A0D, 0x025B, 0x78F0, 0x5A2A, 0x5BC6,
-     0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211, 0x5BB3, 0x5EBC, 0x5EA6, 0x7CCD, 0x49F9, 0x17B0,
-     0x7C8E, 0x7C7C, 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3, 0x7F4E, 0x6261, 0x615C, 0x7B48,
-     0x7D97, 0x5E82, 0x426A, 0x6B75, 0x0916, 0x67D6, 0x004E, 0x35CF, 0x57C4, 0x6412, 0x63F8,
-     0x4962, 0x7FDD, 0x7B27, 0x082C, 0x5AE9, 0x5D43, 0x7B0C, 0x5E0E, 0x99E6, 0x8645, 0x9A63,
-     0x6A1C, 0x343F, 0x39E2, 0x49F7, 0x65AD, 0x9A1F, 0x65A0, 0x8480, 0x7127, 0x6CD1, 0x44EA,
-     0x8137, 0x4402, 0x80C6, 0x8109, 0x8142, 0x67B4, 0x98C3, 0x6A42, 0x8262, 0x8265, 0x6A51,
-     0x8453, 0x6DA7, 0x8610, 0x721B, 0x5A86, 0x417F, 0x1840, 0x5B2B, 0x18A1, 0x5AE4, 0x18D8,
-     0x86A0, 0xF9BC, 0x3D8F, 0x882D, 0x7422, 0x5A02, 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6,
-     0x8965, 0x894D, 0x5683, 0x8954, 0x7785, 0x7784, 0x8BF5, 0x8BD9, 0x8B9C, 0x89F9, 0x3EAD,
-     0x84A3, 0x46F5, 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0x9448, 0x5F4D, 0x922B, 0x4284, 0x65D4,
-     0x7129, 0x70C4, 0x1845, 0x9D6D, 0x8C9F, 0x8CE9, 0x7DDC, 0x599A, 0x77C3, 0x59F0, 0x436E,
-     0x36D4, 0x8E2A, 0x8EA7, 0x4C09, 0x8F30, 0x8F4A, 0x42F4, 0x6C58, 0x6FBB, 0x2321, 0x489B,
-     0x6F79, 0x6E8B, 0x17DA, 0x9BE9, 0x36B5, 0x492F, 0x90BB, 0x9097, 0x5571, 0x4906, 0x91BB,
-     0x9404, 0x8A4B, 0x4062, 0x8AFC, 0x9427, 0x8C1D, 0x8C3B, 0x84E5, 0x8A2B, 0x9599, 0x95A7,
-     0x9597, 0x9596, 0x8D34, 0x7445, 0x3EC2, 0x48FF, 0x4A42, 0x43EA, 0x3EE7, 0x3225, 0x968F,
-     0x8EE7, 0x8E66, 0x8E65, 0x3ECC, 0x49ED, 0x4A78, 0x3FEE, 0x7412, 0x746B, 0x3EFC, 0x9741,
-     0x90B0, 0x6847, 0x4A1D, 0x9093, 0x57DF, 0x975D, 0x9368, 0x8989, 0x8C26, 0x8B2F, 0x63BE,
-     0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9, 0x421B, 0x979B, 0x9771, 0x9938, 0x0F26, 0x5DC1,
-     0x8BC5, 0x4AB2, 0x981F, 0x94DA, 0x92F6, 0x95D7, 0x91E5, 0x44C0, 0x8B50, 0x4A67, 0x8B64,
-     0x98DC, 0x8A45, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D, 0x7B06, 0x3DFD, 0x999B,
-     0x4B6F, 0x99AA, 0x9A5C, 0x8B65, 0x58C8, 0x6A8F, 0x9A21, 0x5AFE, 0x9A2F, 0x98F1, 0x4B90,
-     0x9948, 0x99BC, 0x4BBD, 0x4B97, 0x937D, 0x5872, 0x1302, 0x5822, 0x49B8, 0x14E8, 0x7844,
-     0x271F, 0x3DB8, 0x68C5, 0x3D7D, 0x9458, 0x3927, 0x6150, 0x2781, 0x296B, 0x6107, 0x9C4F,
-     0x9C53, 0x9C7B, 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0x9E2D, 0x9B9F, 0xA1F5, 0xA0FE, 0x9D21,
-     0x4CAE, 0x4104, 0x9E18, 0x4CB0, 0x9D0C, 0xA1B4, 0xA0ED, 0xA0F3, 0x992F, 0x9DA5, 0x84BD,
-     0x6E12, 0x6FDF, 0x6B82, 0x85FC, 0x4533, 0x6DA4, 0x6E84, 0x6DF0, 0x8420, 0x85EE, 0x6E00,
-     0x37D7, 0x6064, 0x79E2, 0x359C, 0x3640, 0x492D, 0x49DE, 0x3D62, 0x93DB, 0x92BE, 0x9348,
-     0x02BF, 0x78B9, 0x9277, 0x944D, 0x4FE4, 0x3440, 0x9064, 0x555D, 0x783D, 0x7854, 0x78B6,
-     0x784B, 0x1757, 0x31C9, 0x4941, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0x701E, 0x701E, 0x5414,
-     0x41B5, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF, 0x41AC, 0x71EB, 0x6C40,
-     0x4F97, 0x5B28, 0x17B5, 0x8A49, 0x610C, 0x5ACE, 0x5A0B, 0x42BC, 0x4488, 0x372C, 0x4B7B,
-     0x89FC, 0x93BB, 0x93B8, 0x18D6, 0x0F1D, 0x8472, 0x6CC0, 0x1413, 0x42FA, 0x2C26, 0x43C1,
-     0x5994, 0x3DB7, 0x6741, 0x7DA8, 0x615B, 0x60A4, 0x49B9, 0x498B, 0x89FA, 0x92E5, 0x73E2,
-     0x3EE9, 0x74B4, 0x8B63, 0x189F, 0x3EE1, 0x4AB3, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6, 0x4A3E,
-     0x4A94, 0x17D9, 0x4A66, 0x03A7, 0x1424, 0x49E5, 0x7448, 0x4916, 0x70A5, 0x4976, 0x9284,
-     0x73E6, 0x935F, 0x04FE, 0x9331, 0x8ACE, 0x8A16, 0x9386, 0x8BE7, 0x55D5, 0x4935, 0x8A82,
-     0x716B, 0x4943, 0x0CFF, 0x56A4, 0x061A, 0x0BEB, 0x0CB8, 0x5502, 0x79C4, 0x17FA, 0x7DFE,
-     0x16C2, 0x4A50, 0x1852, 0x452E, 0x9401, 0x370A, 0x8AC0, 0x49AD, 0x59B0, 0x18BF, 0x1883,
-     0x7484, 0x5AA1, 0x36E2, 0x3D5B, 0x36B0, 0x925F, 0x5A79, 0x8A81, 0x1862, 0x9374, 0x3CCD,
-     0x0AB4, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0x139C, 0x7175, 0x42FB, 0x8218, 0x6E0F,
-     0x90E4, 0x44EB, 0x6D57, 0x7E4F, 0x7067, 0x6CAF, 0x3CD6, 0x3FED, 0x3E2D, 0x6E02, 0x6F0C,
-     0x3D6F, 0x03F5, 0x7551, 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4, 0x926E, 0x493E,
-     0x8F41, 0x8C1C, 0x6BC0, 0x5812, 0x57C8, 0x36D6, 0x1452, 0x70FE, 0x4362, 0x4A71, 0x2FE3,
-     0x12B0, 0x23BD, 0x68B9, 0x6967, 0x1398, 0x34E5, 0x7BF4, 0x36DF, 0x8A83, 0x37D6, 0x33FA,
-     0x4C9F, 0x6A1A, 0x36AD, 0x6CB7, 0x843E, 0x44DF, 0x44CE, 0x6D26, 0x6D51, 0x6C82, 0x6FDE,
-     0x6F17, 0x7109, 0x833D, 0x173A, 0x83ED, 0x6C80, 0x7053, 0x17DB, 0x5989, 0x5A82, 0x17B3,
-     0x5A61, 0x5A71, 0x1905, 0x41FC, 0x372D, 0x59EF, 0x173C, 0x36C7, 0x718E, 0x9390, 0x669A,
-     0x42A5, 0x5A6E, 0x5A2B, 0x4293, 0x6A2B, 0x3EF9, 0x7736, 0x445B, 0x42CA, 0x711D, 0x4259,
-     0x89E1, 0x4FB0, 0x6D28, 0x5CC2, 0x44CE, 0x7E4D, 0x43BD, 0x6A0C, 0x4256, 0x1304, 0x70A6,
-     0x7133, 0x43E9, 0x3DA5, 0x6CDF, 0xF825, 0x4A4F, 0x7E65, 0x59EB, 0x5D2F, 0x3DF3, 0x5F5C,
-     0x4A5D, 0x17DF, 0x7DA4, 0x8426, 0x5485, 0x3AFA, 0x3300, 0x0214, 0x577E, 0x08D5, 0x0619,
-     0x3FE5, 0x1F9E, 0xA2B6, 0x7003, 0x915B, 0x5D70, 0x738F, 0x7CD3, 0x8A59, 0x9420, 0x4FC8,
-     0x7FE7, 0x72CD, 0x7310, 0x7AF4, 0x7338, 0x7339, 0x56F6, 0x7341, 0x7348, 0x3EA9, 0x7B18,
-     0x906C, 0x71F5, 0x48F2, 0x73E1, 0x81F6, 0x3ECA, 0x770C, 0x3ED1, 0x6CA2, 0x56FD, 0x7419,
-     0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3, 0x3F0E, 0x3F53, 0x7542, 0x756D,
-     0x7572, 0x758D, 0x3F7C, 0x75C8, 0x75DC, 0x3FC0, 0x764D, 0x3FD7, 0x7674, 0x3FDC, 0x767A,
-     0x4F5C, 0x7188, 0x5623, 0x8980, 0x5869, 0x401D, 0x7743, 0x4039, 0x6761, 0x4045, 0x35DB,
-     0x7798, 0x406A, 0x406F, 0x5C5E, 0x77BE, 0x77CB, 0x58F2, 0x7818, 0x70B9, 0x781C, 0x40A8,
-     0x7839, 0x7847, 0x7851, 0x7866, 0x8448, 0x5535, 0x7933, 0x6803, 0x7932, 0x4103, 0x4109,
-     0x7991, 0x7999, 0x8FBB, 0x7A06, 0x8FBC, 0x4167, 0x7A91, 0x41B2, 0x7ABC, 0x8279, 0x41C4,
-     0x7ACF, 0x7ADB, 0x41CF, 0x4E21, 0x7B62, 0x7B6C, 0x7B7B, 0x7C12, 0x7C1B, 0x4260, 0x427A,
-     0x7C7B, 0x7C9C, 0x428C, 0x7CB8, 0x4294, 0x7CED, 0x8F93, 0x70C0, 0x0CCF, 0x7DCF, 0x7DD4,
-     0x7DD0, 0x7DFD, 0x7FAE, 0x7FB4, 0x729F, 0x4397, 0x8020, 0x8025, 0x7B39, 0x802E, 0x8031,
-     0x8054, 0x3DCC, 0x57B4, 0x70A0, 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x732A, 0x810E, 0x8112,
-     0x7560, 0x8114, 0x4401, 0x3B39, 0x8156, 0x8159, 0x815A, 0x4413, 0x583A, 0x817C, 0x8184,
-     0x4425, 0x8193, 0x442D, 0x81A5, 0x57EF, 0x81C1, 0x81E4, 0x8254, 0x448F, 0x82A6, 0x8276,
-     0x82CA, 0x82D8, 0x82FF, 0x44B0, 0x8357, 0x9669, 0x698A, 0x8405, 0x70F5, 0x8464, 0x60E3,
-     0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8, 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570,
-     0x85E0, 0x4577, 0x8672, 0x8692, 0x86B2, 0x86EF, 0x9645, 0x878B, 0x4606, 0x4617, 0x88AE,
-     0x88FF, 0x8924, 0x8947, 0x8991, 0x7967, 0x8A29, 0x8A38, 0x8A94, 0x8AB4, 0x8C51, 0x8CD4,
-     0x8CF2, 0x8D1C, 0x4798, 0x585F, 0x8DC3, 0x47ED, 0x4EEE, 0x8E3A, 0x55D8, 0x5754, 0x8E71,
-     0x55F5, 0x8EB0, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4, 0x8EED, 0x8EF2, 0x8FB7, 0x8FC1, 0x8FCA,
-     0x8FCC, 0x9033, 0x99C4, 0x48AD, 0x98E0, 0x9213, 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1,
-     0x92AE, 0x92BF, 0x92E3, 0x92EB, 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD, 0x4945,
-     0x4951, 0x9EBF, 0x9417, 0x5301, 0x941D, 0x942D, 0x943E, 0x496A, 0x9454, 0x9479, 0x952D,
-     0x95A2, 0x49A7, 0x95F4, 0x9633, 0x49E5, 0x67A0, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2,
-     0x5654, 0x4AE4, 0x60E8, 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x990E, 0x9919, 0x51B4, 0x991C,
-     0x9937, 0x9942, 0x995D, 0x9962, 0x4B70, 0x99C5, 0x4B9D, 0x9A3C, 0x9B0F, 0x7A83, 0x9B69,
-     0x9B81, 0x9BDD, 0x9BF1, 0x9BF4, 0x4C6D, 0x9C20, 0x376F, 0x1BC2, 0x9D49, 0x9C3A, 0x9EFE,
-     0x5650, 0x9D93, 0x9DBD, 0x9DC0, 0x9DFC, 0x94F6, 0x8FB6, 0x9E7B, 0x9EAC, 0x9EB1, 0x9EBD,
-     0x9EC6, 0x94DC, 0x9EE2, 0x9EF1, 0x9EF8, 0x7AC8, 0x9F44, 0x0094, 0x02B7, 0x03A0, 0x691A,
-     0x94C3, 0x59AC, 0x04D7, 0x5840, 0x94C1, 0x37B9, 0x05D5, 0x0615, 0x0676, 0x16BA, 0x5757,
-     0x7173, 0x0AC2, 0x0ACD, 0x0BBF, 0x546A, 0xF83B, 0x0BCB, 0x549E, 0x0BFB, 0x0C3B, 0x0C53,
-     0x0C65, 0x0C7C, 0x60E7, 0x0C8D, 0x567A, 0x0CB5, 0x0CDD, 0x0CED, 0x0D6F, 0x0DB2, 0x0DC8,
-     0x6955, 0x9C2F, 0x87A5, 0x0E04, 0x0E0E, 0x0ED7, 0x0F90, 0x0F2D, 0x0E73, 0x5C20, 0x0FBC,
-     0x5E0B, 0x105C, 0x104F, 0x1076, 0x671E, 0x107B, 0x1088, 0x1096, 0x3647, 0x10BF, 0x10D3,
-     0x112F, 0x113B, 0x5364, 0x84AD, 0x12E3, 0x1375, 0x1336, 0x8B81, 0x1577, 0x1619, 0x17C3,
-     0x17C7, 0x4E78, 0x70BB, 0x182D, 0x196A, 0x1A2D, 0x1A45, 0x1C2A, 0x1C70, 0x1CAC, 0x1EC8,
-     0x62C3, 0x1ED5, 0x1F15, 0x7198, 0x6855, 0x2045, 0x69E9, 0x36C8, 0x227C, 0x23D7, 0x23FA,
-     0x272A, 0x2871, 0x294F, 0x82FD, 0x2967, 0x2993, 0x2AD5, 0x89A5, 0x2AE8, 0x8FA0, 0x2B0E,
-     0x97B8, 0x2B3F, 0x9847, 0x9ABD, 0x2C4C, 0x0000, 0x2C88, 0x2CB7, 0x5BE8, 0x2D08, 0x2D12,
-     0x2DB7, 0x2D95, 0x2E42, 0x2F74, 0x2FCC, 0x3033, 0x3066, 0x331F, 0x33DE, 0x5FB1, 0x6648,
-     0x66BF, 0x7A79, 0x3567, 0x35F3, 0x7201, 0x49BA, 0x77D7, 0x361A, 0x3716, 0x7E87, 0x0346,
-     0x58B5, 0x670E, 0x6918, 0x3AA7, 0x7657, 0x5FE2, 0x3E11, 0x3EB9, 0x75FE, 0x209A, 0x48D0,
-     0x4AB8, 0x4119, 0x8A9A, 0x42EE, 0x430D, 0x403B, 0x4334, 0x4396, 0x4A45, 0x05CA, 0x51D2,
-     0x0611, 0x599F, 0x1EA8, 0x3BBE, 0x3CFF, 0x4404, 0x44D6, 0x5788, 0x4674, 0x399B, 0x472F,
-     0x85E8, 0x99C9, 0x3762, 0x21C3, 0x8B5E, 0x8B4E, 0x99D6, 0x4812, 0x48FB, 0x4A15, 0x7209,
-     0x4AC0, 0x0C78, 0x5965, 0x4EA5, 0x4F86, 0x0779, 0x8EDA, 0x502C, 0x528F, 0x573F, 0x7171,
-     0x5299, 0x5419, 0x3F4A, 0x4AA7, 0x55BC, 0x5446, 0x546E, 0x6B52, 0x91D4, 0x3473, 0x553F,
-     0x7632, 0x555E, 0x4718, 0x5562, 0x5566, 0x57C7, 0x493F, 0x585D, 0x5066, 0x34FB, 0x33CC,
-     0x60DE, 0x5903, 0x477C, 0x8948, 0x5AAE, 0x5B89, 0x5C06, 0x1D90, 0x57A1, 0x7151, 0x6FB6,
-     0x6102, 0x7C12, 0x9056, 0x61B2, 0x4F9A, 0x8B62, 0x6402, 0x644A, 0x5D5B, 0x6BF7, 0x8F36,
-     0x6484, 0x191C, 0x8AEA, 0x49F6, 0x6488, 0x3FEF, 0x6512, 0x4BC0, 0x65BF, 0x66B5, 0x271B,
-     0x9465, 0x57E1, 0x6195, 0x5A27, 0xF8CD, 0x4FBB, 0x56B9, 0x4521, 0x66FC, 0x4E6A, 0x4934,
-     0x9656, 0x6D8F, 0x6CBD, 0x3618, 0x8977, 0x6799, 0x686E, 0x6411, 0x685E, 0x71DF, 0x68C7,
-     0x7B42, 0x90C0, 0x0A11, 0x6926, 0x9104, 0x6939, 0x7A45, 0x9DF0, 0x69FA, 0x9A26, 0x6A2D,
-     0x365F, 0x6469, 0x0021, 0x7983, 0x6A34, 0x6B5B, 0x5D2C, 0x3519, 0x83CF, 0x6B9D, 0x46D0,
-     0x6CA4, 0x753B, 0x8865, 0x6DAE, 0x58B6, 0x371C, 0x258D, 0x704B, 0x71CD, 0x3C54, 0x7280,
-     0x7285, 0x9281, 0x217A, 0x728B, 0x9330, 0x72E6, 0x49D0, 0x6C39, 0x949F, 0x7450, 0x0EF8,
-     0x8827, 0x88F5, 0x2926, 0x8473, 0x17B1, 0x6EB8, 0x4A2A, 0x1820, 0x39A4, 0x36B9, 0x5C10,
-     0x79E3, 0x453F, 0x66B6, 0x9CAD, 0x98A4, 0x8943, 0x77CC, 0x7858, 0x56D6, 0x40DF, 0x160A,
-     0x39A1, 0x372F, 0x80E8, 0x13C5, 0x71AD, 0x8366, 0x79DD, 0x91A8, 0x5A67, 0x4CB7, 0x70AF,
-     0x89AB, 0x79FD, 0x7A0A, 0x7B0B, 0x7D66, 0x417A, 0x7B43, 0x797E, 0x8009, 0x6FB5, 0xA2DF,
-     0x6A03, 0x8318, 0x53A2, 0x6E07, 0x93BF, 0x6836, 0x975D, 0x816F, 0x8023, 0x69B5, 0x13ED,
-     0x322F, 0x8048, 0x5D85, 0x8C30, 0x8083, 0x5715, 0x9823, 0x8949, 0x5DAB, 0x4988, 0x65BE,
-     0x69D5, 0x53D2, 0x4AA5, 0x3F81, 0x3C11, 0x6736, 0x8090, 0x80F4, 0x812E, 0x1FA1, 0x814F,
-     0x8189, 0x81AF, 0x821A, 0x8306, 0x832F, 0x838A, 0x35CA, 0x8468, 0x86AA, 0x48FA, 0x63E6,
-     0x8956, 0x7808, 0x9255, 0x89B8, 0x43F2, 0x89E7, 0x43DF, 0x89E8, 0x8B46, 0x8BD4, 0x59F8,
-     0x8C09, 0x8F0B, 0x8FC5, 0x90EC, 0x7B51, 0x9110, 0x913C, 0x3DF7, 0x915E, 0x4ACA, 0x8FD0,
-     0x728F, 0x568B, 0x94E7, 0x95E9, 0x95B0, 0x95B8, 0x9732, 0x98D1, 0x9949, 0x996A, 0x99C3,
-     0x9A28, 0x9B0E, 0x9D5A, 0x9D9B, 0x7E9F, 0x9EF8, 0x9F23, 0x4CA4, 0x9547, 0xA293, 0x71A2,
-     0xA2FF, 0x4D91, 0x9012, 0xA5CB, 0x4D9C, 0x0C9C, 0x8FBE, 0x55C1, 0x8FBA, 0x24B0, 0x8FB9,
-     0x4A93, 0x4509, 0x7E7F, 0x6F56, 0x6AB1, 0x4EEA, 0x34E4, 0x8B2C, 0x789D, 0x373A, 0x8E80,
-     0x17F5, 0x8024, 0x8B6C, 0x8B99, 0x7A3E, 0x66AF, 0x3DEB, 0x7655, 0x3CB7, 0x5635, 0x5956,
-     0x4E9A, 0x5E81, 0x6258, 0x56BF, 0x0E6D, 0x8E0E, 0x5B6D, 0x3E88, 0x4C9E, 0x63DE, 0x62D0,
-     0x17F6, 0x187B, 0x6530, 0x562D, 0x5C4A, 0x541A, 0x5311, 0x3DC6, 0x9D98, 0x4C7D, 0x5622,
-     0x561E, 0x7F49, 0x5ED8, 0x5975, 0x3D40, 0x8770, 0x4E1C, 0x0FEA, 0x0D49, 0x36BA, 0x8117,
-     0x9D5E, 0x8D18, 0x763B, 0x9C45, 0x764E, 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625,
-     0x8132, 0x8418, 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0x0E9D, 0x35CE, 0x5605, 0x55F1,
-     0x66F1, 0x82E2, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497, 0x5572, 0x0C41, 0x0C96, 0x5ED0,
-     0x5148, 0x0E76, 0x2C62, 0x0EA2, 0x9EAB, 0x7D5A, 0x55DE, 0x1075, 0x629D, 0x976D, 0x5494,
-     0x8CCD, 0x71F6, 0x9176, 0x63FC, 0x63B9, 0x63FE, 0x5569, 0x2B43, 0x9C72, 0x2EB3, 0x519A,
-     0x34DF, 0x0DA7, 0x51A7, 0x544D, 0x551E, 0x5513, 0x7666, 0x8E2D, 0x688A, 0x75B1, 0x80B6,
-     0x8804, 0x8786, 0x88C7, 0x81B6, 0x841C, 0x10C1, 0x44EC, 0x7304, 0x4706, 0x5B90, 0x830B,
-     0x6893, 0x567B, 0x26F4, 0x7D2F, 0x41A3, 0x7D73, 0x6ED0, 0x72B6, 0x9170, 0x11D9, 0x9208,
-     0x3CFC, 0xA6A9, 0x0EAC, 0x0EF9, 0x7266, 0x1CA2, 0x474E, 0x4FC2, 0x7FF9, 0x0FEB, 0x40FA,
-     0x9C5D, 0x651F, 0x2DA0, 0x48F3, 0x47E0, 0x9D7C, 0x0FEC, 0x0E0A, 0x6062, 0x75A3, 0x0FED,
-     0x0000, 0x6048, 0x1187, 0x71A3, 0x7E8E, 0x9D50, 0x4E1A, 0x4E04, 0x3577, 0x5B0D, 0x6CB2,
-     0x5367, 0x36AC, 0x39DC, 0x537D, 0x36A5, 0x4618, 0x589A, 0x4B6E, 0x822D, 0x544B, 0x57AA,
-     0x5A95, 0x0979, 0x0000, 0x3A52, 0x2465, 0x7374, 0x9EAC, 0x4D09, 0x9BED, 0x3CFE, 0x9F30,
-     0x4C5B, 0x4FA9, 0x959E, 0x9FDE, 0x845C, 0x3DB6, 0x72B2, 0x67B3, 0x3720, 0x632E, 0x7D25,
-     0x3EF7, 0x3E2C, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9, 0x048E, 0x7640, 0x5AF0,
-     0x0EB6, 0x787A, 0x7F2E, 0x58A7, 0x40BF, 0x567C, 0x9B8B, 0x5D74, 0x7654, 0xA434, 0x9E85,
-     0x4CE1, 0x75F9, 0x37FB, 0x6119, 0x30DA, 0x43F2, 0x0000, 0x565D, 0x12A9, 0x57A7, 0x4963,
-     0x9E06, 0x5234, 0x70AE, 0x35AD, 0x6C4A, 0x9D7C, 0x7C56, 0x9B39, 0x57DE, 0x176C, 0x5C53,
-     0x64D3, 0x94D0, 0x6335, 0x7164, 0x86AD, 0x0D28, 0x6D22, 0x4AE2, 0x0D71, 0x0000, 0x51FE,
-     0x1F0F, 0x5D8E, 0x9703, 0x1DD1, 0x9E81, 0x904C, 0x7B1F, 0x9B02, 0x5CD1, 0x7BA3, 0x6268,
-     0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E, 0x9B2E, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09,
-     0x9F17, 0x9C1B, 0x493E, 0x9F5A, 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260, 0x3E06,
-     0x52D1, 0x5767, 0x5056, 0x59B7, 0x5E12, 0x97C8, 0x9DAB, 0x8F5C, 0x5469, 0x97B4, 0x9940,
-     0x97BA, 0x532C, 0x6130, 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980, 0x50A6,
-     0x7546, 0x176D, 0x99DA, 0x5273, 0x0000, 0x9159, 0x9681, 0x915C, 0x0000, 0x9151, 0x8E97,
-     0x637F, 0x6D23, 0x6ACA, 0x5611, 0x918E, 0x757A, 0x6285, 0x03FC, 0x734F, 0x7C70, 0x5C21,
-     0x3CFD, 0x0000, 0x4919, 0x76D6, 0x9B9D, 0x4E2A, 0x0CD4, 0x83BE, 0x8842, 0x0000, 0x5C4A,
-     0x69C0, 0x50ED, 0x577A, 0x521F, 0x5DF5, 0x4ECE, 0x6C31, 0x01F2, 0x4F39, 0x549C, 0x54DA,
-     0x529A, 0x8D82, 0x35FE, 0x5F0C, 0x35F3, 0x0000, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E,
-     0x98B4, 0x9ABA, 0x9EA8, 0x9E84, 0x717A, 0x7B14, 0x0000, 0x6BFA, 0x8818, 0x7F78, 0x0000,
-     0x5620, 0xA64A, 0x8E77, 0x9F53, 0x0000, 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282, 0x837D,
-     0x8E28, 0x8E75, 0x7AD3, 0x4A77, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607, 0x8A5A, 0x9F26,
-     0x6CCE, 0x87D6, 0x75C3, 0xA2B2, 0x7853, 0xF840, 0x8D0C, 0x72E2, 0x7371, 0x8B2D, 0x7302,
-     0x74F1, 0x8CEB, 0x4ABB, 0x862F, 0x5FBA, 0x88A0, 0x44B7, 0x0000, 0x183B, 0x6E05, 0x0000,
-     0x8A7E, 0x251B, 0x0000, 0x60FD, 0x7667, 0x9AD7, 0x9D44, 0x936E, 0x9B8F, 0x87F5, 0x0000,
-     0x880F, 0x8CF7, 0x732C, 0x9721, 0x9BB0, 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0x6159,
-     0x6159, 0x4C04, 0x9E96, 0x617D, 0x0000, 0x575F, 0x616F, 0x62A6, 0x6239, 0x62CE, 0x3A5C,
-     0x61E2, 0x53AA, 0x33F5, 0x6364, 0x6802, 0x35D2, 0x5D57, 0x8BC2, 0x8FDA, 0x8E39, 0x0000,
-     0x50D9, 0x1D46, 0x7906, 0x5332, 0x9638, 0x0F3B, 0x4065, 0x0000, 0x77FE, 0x0000, 0x7CC2,
-     0x5F1A, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505, 0x74F2, 0x8994, 0x821A, 0x670C,
-     0x8062, 0x7486, 0x805B, 0x74F0, 0x8103, 0x7724, 0x8989, 0x67CC, 0x7553, 0x6ED1, 0x87A9,
-     0x87CE, 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43, 0x772B, 0x74F8, 0x84DA, 0x3635, 0x69B2,
-     0x8DA6, 0x0000, 0x89A9, 0x7468, 0x6DB9, 0x87C1, 0x4011, 0x74E7, 0x3DDB, 0x7176, 0x60A4,
-     0x619C, 0x3CD1, 0x7162, 0x6077, 0x0000, 0x7F71, 0x8B2D, 0x7250, 0x60E9, 0x4B7E, 0x5220,
-     0x3C18, 0x3CC7, 0x5ED7, 0x7656, 0x5531, 0x1944, 0x12FE, 0x9903, 0x6DDC, 0x70AD, 0x5CC1,
-     0x61AD, 0x8A0F, 0x3677, 0x00EE, 0x6846, 0x4F0E, 0x4562, 0x5B1F, 0x634C, 0x9F50, 0x9EA6,
-     0x626B, 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A, 0xFF1F, 0xFF01,
-     0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52, 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57,
-     0xFF5C, 0x2013, 0xFE31, 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35,
-     0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39, 0xFE3A, 0x3010, 0x3011,
-     0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D, 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C,
-     0x300D, 0xFE41, 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A, 0xFE5B, 0xFE5C,
-     0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C, 0x201D, 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03,
-     0xFF06, 0xFF0A, 0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE, 0x2606,
-     0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC, 0x32A3, 0x2105, 0x00AF, 0xFFE3,
-     0xFF3F, 0x02CD, 0xFE49, 0xFE4A, 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61,
-     0xFF0B, 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D, 0x2266, 0x2267,
-     0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFF5E, 0x2229,
-     0x222A, 0x22A5, 0x2220, 0x221F, 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234,
-     0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192, 0x2196, 0x2197, 0x2199,
-     0x2198, 0x2225, 0x2223, 0xFF0F, 0xFF3C, 0x2215, 0xFE68, 0xFF04, 0xFFE5, 0x3012, 0xFFE0,
-     0xFFE1, 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5, 0x339C, 0x339D,
-     0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4, 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D,
-     0x5161, 0x5163, 0x55E7, 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
-     0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A, 0x2589, 0x253C, 0x2534,
-     0x252C, 0x2524, 0x251C, 0x2594, 0x2500, 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518,
-     0x256D, 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, 0x2561, 0x25E2, 0x25E3, 0x25E5,
-     0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16,
-     0xFF17, 0xFF18, 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
-     0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029,
-     0x5341, 0x5344, 0x5345, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28,
-     0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33,
-     0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44,
-     0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
-     0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A,
-     0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B,
-     0x039C, 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
-     0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9,
-     0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5,
-     0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310A, 0x310B,
-     0x310C, 0x310D, 0x310E, 0x310F, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
-     0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F, 0x3120, 0x3121,
-     0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA,
-     0x02C7, 0x02CB, 0x2400, 0x2401, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407, 0x2408,
-     0x2409, 0x240A, 0x240B, 0x240C, 0x240D, 0x240E, 0x240F, 0x2410, 0x2411, 0x2412, 0x2413,
-     0x2414, 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x241A, 0x241B, 0x241C, 0x241D, 0x241E,
-     0x241F, 0x2421, 0x20AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4E00,
-     0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C, 0x4EBA, 0x513F, 0x5165, 0x516B,
-     0x51E0, 0x5200, 0x5201, 0x529B, 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08,
-     0x4E0A, 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E, 0x4EA1, 0x5140,
-     0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F, 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50,
-     0x5B51, 0x5B53, 0x5BF8, 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2,
-     0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D, 0x4E11, 0x4E10, 0x4E0D, 0x4E2D,
-     0x4E30, 0x4E39, 0x4E4B, 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1,
-     0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4, 0x5143, 0x5141, 0x5167,
-     0x516D, 0x516E, 0x516C, 0x5197, 0x51F6, 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF,
-     0x5316, 0x5339, 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD, 0x58EC,
-     0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24, 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B,
-     0x5EFF, 0x5F14, 0x5F15, 0x5FC3, 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597,
-     0x65A4, 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79, 0x6BCB, 0x6BD4,
-     0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236, 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC,
-     0x738B, 0x4E19, 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E, 0x4EE5,
-     0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4, 0x4ED9, 0x4EDE, 0x5145, 0x5144,
-     0x5189, 0x518A, 0x51AC, 0x51F9, 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306,
-     0x5317, 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E, 0x53BB, 0x53EF,
-     0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8, 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6,
-     0x53EA, 0x53F2, 0x53F1, 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916, 0x592E,
-     0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C, 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03,
-     0x5E73, 0x5E7C, 0x5F01, 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251,
-     0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63, 0x6BCD, 0x6C11, 0x6C10,
-     0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF, 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F,
-     0x7528, 0x7529, 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF, 0x76EE,
-     0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB, 0x4E1E, 0x4E1F, 0x4E52, 0x4E53,
-     0x4E69, 0x4E99, 0x4EA4, 0x4EA6, 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D,
-     0x4F10, 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD, 0x4F01, 0x4F0B,
-     0x5149, 0x5147, 0x5146, 0x5148, 0x5168, 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212,
-     0x520E, 0x5216, 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F, 0x540C,
-     0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D, 0x5408, 0x5403, 0x540E, 0x5406,
-     0x5412, 0x56E0, 0x56DE, 0x56DD, 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729,
-     0x5919, 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979, 0x5982, 0x5981,
-     0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89, 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06,
-     0x5E76, 0x5E74, 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D, 0x6210, 0x6263,
-     0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC, 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D,
-     0x6734, 0x6731, 0x6735, 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F,
-     0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070, 0x725F, 0x725D, 0x767E,
-     0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A, 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033,
-     0x807F, 0x8089, 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B, 0x821F,
-     0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863, 0x897F, 0x9621, 0x4E32, 0x4EA8,
-     0x4F4D, 0x4F4F, 0x4F47, 0x4F57, 0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51,
-     0x4F3D, 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63, 0x4F5C, 0x4F60, 0x4F2F,
-     0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48, 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6,
-     0x51B7, 0x5225, 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC, 0x5323,
-     0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426, 0x544E, 0x5427, 0x5446, 0x5443,
-     0x5433, 0x5448, 0x5442, 0x541B, 0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435,
-     0x5436, 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA, 0x56F0, 0x56E4,
-     0x56EB, 0x574A, 0x5751, 0x5740, 0x574D, 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, 0x573B,
-     0x58EF, 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996, 0x598D, 0x59A4,
-     0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A, 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C,
-     0x5C40, 0x5C41, 0x5C3F, 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F,
-     0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77, 0x5F79, 0x5FD8, 0x5FCC,
-     0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8, 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296,
-     0x6280, 0x6276, 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292, 0x626F,
-     0x6298, 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539, 0x653B, 0x6538, 0x65F1, 0x66F4,
-     0x675F, 0x674E, 0x674F, 0x6750, 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760,
-     0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81, 0x6C88, 0x6C89, 0x6C85,
-     0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70, 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83,
-     0x6C72, 0x6C7E, 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076, 0x707C,
-     0x707D, 0x7078, 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2, 0x7396, 0x752C, 0x752B, 0x7537,
-     0x7538, 0x7682, 0x76EF, 0x77E3, 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096,
-     0x8093, 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292, 0x828B, 0x828D, 0x898B,
-     0x89D2, 0x8A00, 0x8C37, 0x8C46, 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA,
-     0x8F9B, 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2, 0x90AA, 0x90A6,
-     0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E, 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56,
-     0x4E73, 0x4E8B, 0x4E9B, 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F,
-     0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88, 0x4F69, 0x4F7B, 0x4F96,
-     0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154, 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178,
-     0x51BD, 0x51FD, 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241, 0x52BE,
-     0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377, 0x5378, 0x5379, 0x53D6, 0x53D4,
-     0x53D7, 0x5473, 0x5475, 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492,
-     0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462, 0x5468, 0x548B, 0x547D,
-     0x548E, 0x56FA, 0x5783, 0x5777, 0x576A, 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C,
-     0x5949, 0x5947, 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE, 0x59D1,
-     0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF, 0x59B3, 0x59D2, 0x59C5, 0x5B5F,
-     0x5B64, 0x5B63, 0x5B97, 0x5B9A, 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45,
-     0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5E18, 0x5E1A, 0x5E16,
-     0x5E15, 0x5E1B, 0x5E11, 0x5E78, 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26,
-     0x5F27, 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD, 0x5FF5, 0x5FFF,
-     0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A, 0x6015, 0x6021, 0x6027, 0x6029, 0x602B,
-     0x601B, 0x6216, 0x6215, 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF,
-     0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB, 0x62C8, 0x62A8, 0x62BD,
-     0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD, 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7,
-     0x62C6, 0x62AC, 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C, 0x6606,
-     0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A, 0x6607, 0x670D, 0x670B, 0x676D, 0x678B,
-     0x6795, 0x6771, 0x679C, 0x6773, 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F,
-     0x6789, 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A, 0x6772, 0x6B23, 0x6B66,
-     0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3, 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3,
-     0x6CBD, 0x6CBE, 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9, 0x6CC1,
-     0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1, 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF,
-     0x6CDC, 0x6CD6, 0x6CE0, 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, 0x722C, 0x722D, 0x7238,
-     0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7, 0x72D0, 0x73A9, 0x73A8, 0x739F,
-     0x73AB, 0x73A5, 0x753D, 0x759D, 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, 0x77E5,
-     0x77FD, 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA, 0x7CFE, 0x7F54,
-     0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2, 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4,
-     0x80AA, 0x80AF, 0x81E5, 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F,
-     0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0, 0x82BE, 0x82B7, 0x864E,
-     0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE, 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6,
-     0x91C7, 0x91D1, 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, 0x9644, 0x9642, 0x96B9,
-     0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE, 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0,
-     0x4FD1, 0x4FCF, 0x4FDD, 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0,
-     0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192, 0x5191, 0x51A0, 0x524E,
-     0x5243, 0x524A, 0x524D, 0x524C, 0x524B, 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D,
-     0x5357, 0x537B, 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, 0x54B8, 0x54A6,
-     0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1, 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1,
-     0x54BB, 0x54A9, 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2, 0x57CE,
-     0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950, 0x59DC, 0x59D8, 0x59FF, 0x59E3,
-     0x59E8, 0x5A03, 0x59E5, 0x59EA, 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6,
-     0x5BA4, 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9, 0x5CD2, 0x5DF7,
-     0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6, 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88,
-     0x5F85, 0x5F8A, 0x5F8B, 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E,
-     0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C, 0x606B, 0x606A, 0x6064,
-     0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC, 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1,
-     0x62F7, 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545, 0x65AB, 0x65BD,
-     0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F, 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7,
-     0x67FF, 0x67D3, 0x67F1, 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF,
-     0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE, 0x67F3, 0x67B0, 0x67D9,
-     0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83, 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9,
-     0x6D0B, 0x6D32, 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17, 0x6D3B, 0x6D3D,
-     0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39, 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E,
-     0x6D2B, 0x70AB, 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4, 0x7230,
-     0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7, 0x73CA, 0x73BB, 0x73B2, 0x73CD,
-     0x73C0, 0x73B3, 0x751A, 0x752D, 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5,
-     0x75A2, 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3, 0x76C5, 0x7701,
-     0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC, 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C,
-     0x780D, 0x7946, 0x7949, 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F,
-     0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09, 0x7D07, 0x7D04, 0x7D06,
-     0x7F38, 0x7F8E, 0x7FBF, 0x8004, 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA,
-     0x80C3, 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD, 0x81F4, 0x8222,
-     0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6, 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2,
-     0x82D7, 0x82F1, 0x8301, 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306,
-     0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4, 0x8A08, 0x8A02, 0x8A03,
-     0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4, 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA,
-     0x8FE5, 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1, 0x90C3, 0x914B, 0x914A,
-     0x91CD, 0x9582, 0x9650, 0x964B, 0x964C, 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3,
-     0x9801, 0x98A8, 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D, 0x5023,
-     0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006, 0x503C, 0x501F, 0x501A, 0x5012,
-     0x5011, 0x4FFA, 0x5000, 0x5014, 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3,
-     0x4FEE, 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5, 0x51A2, 0x51CD,
-     0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254, 0x525B, 0x525D, 0x532A, 0x537F, 0x539F,
-     0x539D, 0x53DF, 0x54E8, 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA,
-     0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA, 0x54E6, 0x5527, 0x5507, 0x54FD,
-     0x550F, 0x5703, 0x5704, 0x57C2, 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958,
-     0x595A, 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20, 0x5A23, 0x5A29,
-     0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0, 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5,
-     0x5BB9, 0x5BB8, 0x5C04, 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8,
-     0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB, 0x5EAD, 0x5EA7, 0x5F31,
-     0x5F92, 0x5F91, 0x5F90, 0x6059, 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F,
-     0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096, 0x6247, 0x62F3, 0x6308,
-     0x62FF, 0x634E, 0x633E, 0x632F, 0x6355, 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350,
-     0x633D, 0x632A, 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1, 0x65C5,
-     0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645, 0x6641, 0x66F8, 0x6714, 0x6715,
-     0x6717, 0x6821, 0x6838, 0x6848, 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3,
-     0x6817, 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843, 0x682A, 0x6845,
-     0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7, 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24,
-     0x6CF0, 0x6D6A, 0x6D95, 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93, 0x6D6C,
-     0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A, 0x6D79, 0x6D85, 0x6D65, 0x6D94,
-     0x70CA, 0x70D8, 0x70E4, 0x70D9, 0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD,
-     0x72F8, 0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE, 0x7554, 0x755D,
-     0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7, 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9,
-     0x75C2, 0x75B8, 0x768B, 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728,
-     0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837, 0x7825, 0x782D, 0x7820, 0x781F,
-     0x7832, 0x7955, 0x7950, 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4,
-     0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88, 0x7AD9, 0x7B06, 0x7B11,
-     0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A, 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A,
-     0x7D1C, 0x7D0D, 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006, 0x8018,
-     0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102, 0x80F0, 0x8105, 0x80ED, 0x80F4,
-     0x8106, 0x80F8, 0x80F3, 0x8108, 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200,
-     0x8210, 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354, 0x834A, 0x8338,
-     0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332, 0x8339, 0x8336, 0x8317, 0x8340, 0x8331,
-     0x8328, 0x8343, 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3, 0x869C,
-     0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18, 0x8A10, 0x8A0E, 0x8A0C, 0x8A15,
-     0x8A0A, 0x8A17, 0x8A13, 0x8A16, 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2,
-     0x8D77, 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7, 0x9000, 0x8FFA,
-     0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095, 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D,
-     0x914C, 0x91D8, 0x91DD, 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661, 0x965B,
-     0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2, 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32,
-     0x9B3C, 0x4E7E, 0x507A, 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065,
-     0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F, 0x506F, 0x506D, 0x515C,
-     0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2, 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319,
-     0x533F, 0x5340, 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E, 0x5561,
-     0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F, 0x5564, 0x5538, 0x552E, 0x555C,
-     0x552C, 0x5563, 0x5533, 0x5541, 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A,
-     0x5806, 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920, 0x5962, 0x5A36,
-     0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40, 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70,
-     0x5BC7, 0x5BC5, 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60, 0x5C5C,
-     0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22, 0x5D11, 0x5D29, 0x5D14, 0x5D19,
-     0x5D24, 0x5D27, 0x5D17, 0x5DE2, 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6,
-     0x5EB5, 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97, 0x5F99, 0x5F9E,
-     0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3, 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4,
-     0x60E6, 0x60BD, 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5, 0x60C6, 0x60DF,
-     0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248, 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2,
-     0x63A5, 0x6377, 0x6367, 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B,
-     0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F, 0x6380, 0x637B, 0x6369,
-     0x6368, 0x637A, 0x655D, 0x6556, 0x6551, 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555,
-     0x6554, 0x659C, 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A, 0x6664,
-     0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881, 0x68AF, 0x68A2, 0x6893, 0x68B5,
-     0x687F, 0x6876, 0x68B1, 0x68A7, 0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885,
-     0x6894, 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA, 0x6BEB, 0x6BEC, 0x6C2B,
-     0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2, 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05,
-     0x6DC7, 0x6DCB, 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5, 0x6DC5,
-     0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA, 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6,
-     0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF, 0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D,
-     0x727D, 0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405, 0x740A, 0x7403,
-     0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6, 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562,
-     0x7570, 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4, 0x76D2, 0x76DB,
-     0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A, 0x786B, 0x7843, 0x784E, 0x7965, 0x7968,
-     0x796D, 0x79FB, 0x7A92, 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E,
-     0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E, 0x7D39, 0x7D3C, 0x7D40,
-     0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42, 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC,
-     0x7FCE, 0x7FD2, 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129, 0x8130,
-     0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838E, 0x839E, 0x8398, 0x8378, 0x83A2,
-     0x8396, 0x83BD, 0x83AB, 0x8392, 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C,
-     0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4, 0x86B5, 0x86C6, 0x86CB,
-     0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E, 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B,
-     0x8993, 0x898F, 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B, 0x8A22,
-     0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA, 0x8CA7, 0x8D67, 0x8D66, 0x8DBE,
-     0x8DBA, 0x8EDB, 0x8EDF, 0x9019, 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010,
-     0x9015, 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014, 0x90E8, 0x90ED, 0x90FD,
-     0x9157, 0x91CE, 0x91F5, 0x91E6, 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675,
-     0x9673, 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA, 0x96E9, 0x7AE0,
-     0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75, 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D,
-     0x5085, 0x5099, 0x5091, 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
-     0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B, 0x5580, 0x55A7, 0x557C,
-     0x558A, 0x559D, 0x5598, 0x5582, 0x559C, 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3,
-     0x55AE, 0x559F, 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589, 0x55AB,
-     0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830, 0x5831, 0x5821, 0x581D, 0x5820,
-     0x58F9, 0x58FA, 0x5960, 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71,
-     0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C, 0x5D50, 0x5D34, 0x5D47,
-     0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43, 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C,
-     0x5F6D, 0x5FA9, 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C, 0x6123,
-     0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1, 0x610E, 0x60F6, 0x6109, 0x6100,
-     0x6112, 0x621F, 0x6249, 0x63A3, 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD,
-     0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE, 0x6376, 0x63F4, 0x63EA, 0x63DB,
-     0x6452, 0x63DA, 0x63F9, 0x655E, 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E,
-     0x6670, 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE, 0x66FF, 0x671F,
-     0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7, 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7,
-     0x68F9, 0x68D2, 0x68F2, 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA,
-     0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC, 0x6BEF, 0x6C2E, 0x6C2F,
-     0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21, 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23,
-     0x6E1B, 0x6E5B, 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34, 0x6E4D,
-     0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB, 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44,
-     0x6E72, 0x6E69, 0x6E5F, 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C,
-     0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A, 0x742A, 0x7433, 0x7422,
-     0x7425, 0x7435, 0x7436, 0x7434, 0x742F, 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B,
-     0x756A, 0x75E2, 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C, 0x7696,
-     0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C, 0x786F, 0x7A0D, 0x7A08, 0x7A0B,
-     0x7A05, 0x7A00, 0x7A98, 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46, 0x7B50,
-     0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F, 0x7CA5, 0x7D5E, 0x7D50, 0x7D68,
-     0x7D55, 0x7D2B, 0x7D6E, 0x7D72, 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4,
-     0x7FD5, 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E, 0x8139, 0x8146,
-     0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C, 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0,
-     0x83C5, 0x840B, 0x83C1, 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC,
-     0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407, 0x83D4, 0x83DF, 0x865B,
-     0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB, 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2,
-     0x88B1, 0x8983, 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41, 0x8A54, 0x8A5B,
-     0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56, 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3,
-     0x8CBD, 0x8CC1, 0x8CBB, 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85,
-     0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB, 0x8DC6, 0x8EFB, 0x8EF8,
-     0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031, 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109,
-     0x90FE, 0x9163, 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D, 0x9210,
-     0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591, 0x9593, 0x9592, 0x958E, 0x968A, 0x968E,
-     0x968B, 0x967D, 0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4, 0x96C6,
-     0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808, 0x98E7, 0x98EA, 0x98EF, 0x98E9,
-     0x98F2, 0x98ED, 0x99AE, 0x99AD, 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2,
-     0x50B3, 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F, 0x5277, 0x527D,
-     0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F, 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE,
-     0x55DC, 0x55C7, 0x55D1, 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5,
-     0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A, 0x5854, 0x586B, 0x584C,
-     0x586D, 0x584A, 0x5862, 0x5852, 0x584B, 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD,
-     0x5ABC, 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9, 0x5EC8, 0x5F12,
-     0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148, 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101,
-     0x6108, 0x614E, 0x614C, 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137,
-     0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D, 0x642C, 0x640F, 0x641C,
-     0x6414, 0x640D, 0x6436, 0x6416, 0x6417, 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689,
-     0x6687, 0x6688, 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D, 0x695A, 0x6977,
-     0x6960, 0x6954, 0x6975, 0x6930, 0x6982, 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979,
-     0x6986, 0x695D, 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD, 0x6EA2,
-     0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7, 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC,
-     0x6EBA, 0x6EAB, 0x6ED1, 0x6E96, 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E,
-     0x7159, 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C, 0x7165, 0x715E,
-     0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337, 0x7345, 0x733F, 0x733E, 0x746F, 0x745A,
-     0x7455, 0x745F, 0x745E, 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600,
-     0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3, 0x76DE, 0x76DF, 0x775B,
-     0x776B, 0x7766, 0x775E, 0x7763, 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762,
-     0x77EE, 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891, 0x7893, 0x787F,
-     0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C, 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E,
-     0x7A9F, 0x7AA0, 0x7B77, 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93,
-     0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A, 0x7F72, 0x7FA9, 0x7FA8,
-     0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084, 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173,
-     0x816B, 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477, 0x843D, 0x8431, 0x8475,
-     0x8466, 0x846B, 0x8449, 0x846C, 0x845B, 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D,
-     0x8446, 0x865E, 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE, 0x86FB,
-     0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4, 0x88D9, 0x88DC, 0x88D8, 0x88DD,
-     0x88E1, 0x88CA, 0x88D5, 0x88D2, 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69,
-     0x8A70, 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62, 0x8A6E, 0x8A6C,
-     0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A, 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4,
-     0x8CB2, 0x8CC3, 0x8CC2, 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA,
-     0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A, 0x8F9F, 0x8FB2, 0x904B, 0x904A,
-     0x9053, 0x9042, 0x9054, 0x903C, 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051,
-     0x903E, 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237, 0x9257, 0x9238,
-     0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264, 0x9251, 0x9234, 0x9249, 0x924D, 0x9245,
-     0x9239, 0x923F, 0x925A, 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA,
-     0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810, 0x9811, 0x9813, 0x980A,
-     0x9812, 0x980C, 0x98FC, 0x98F4, 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9,
-     0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6, 0x50ED, 0x50DA, 0x50D5,
-     0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9, 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD,
-     0x55FE, 0x5600, 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E, 0x55F7,
-     0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716, 0x5875, 0x587E, 0x5883, 0x5893,
-     0x588A, 0x5879, 0x5885, 0x587D, 0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1,
-     0x5AE6, 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7, 0x5BE1, 0x5BE5,
-     0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D, 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63,
-     0x5E55, 0x5E57, 0x5E54, 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147, 0x613F,
-     0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158, 0x6175, 0x622A, 0x6487, 0x6458,
-     0x6454, 0x64A4, 0x6478, 0x645F, 0x647A, 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572,
-     0x65A1, 0x65D7, 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995, 0x69C1, 0x69AE,
-     0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB, 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC,
-     0x69A6, 0x69C3, 0x69A3, 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4,
-     0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22, 0x6EFF, 0x6EEF, 0x6F06, 0x6F31,
-     0x6F38, 0x6F32, 0x6F23, 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2,
-     0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, 0x7184, 0x7192, 0x723E, 0x7292, 0x7296,
-     0x7344, 0x7350, 0x7464, 0x7463, 0x746A, 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D,
-     0x760B, 0x7609, 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1, 0x789F,
-     0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D, 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9,
-     0x7AED, 0x7AEF, 0x7BA1, 0x7B95, 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8,
-     0x7B87, 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD, 0x7DBE, 0x7DA0,
-     0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2, 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2,
-     0x7DC7, 0x7DAC, 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150, 0x8180,
-     0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA, 0x8207, 0x8214, 0x821E, 0x824B,
-     0x84C9, 0x84BF, 0x84C6, 0x84C4, 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0,
-     0x84D3, 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722, 0x8725, 0x8734,
-     0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902, 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8,
-     0x891A, 0x88EF, 0x8AA6, 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4, 0x8AAA,
-     0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7, 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1,
-     0x8CD2, 0x8D6B, 0x8D99, 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060,
-     0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B, 0x9119, 0x9118, 0x911E,
-     0x9175, 0x9178, 0x9177, 0x9174, 0x9278, 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293,
-     0x929C, 0x92A8, 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4, 0x9699,
-     0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785, 0x97F6, 0x9817, 0x9818, 0x98AF,
-     0x98B1, 0x9903, 0x9905, 0x990C, 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42,
-     0x9CF4, 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB, 0x50F5, 0x50F9,
-     0x5102, 0x5108, 0x5109, 0x5105, 0x51DC, 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0,
-     0x53B2, 0x562E, 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E, 0x5657,
-     0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E, 0x58B3, 0x589C, 0x58AE, 0x58A9,
-     0x58A6, 0x596D, 0x5B09, 0x5AFB, 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9,
-     0x5BEB, 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2, 0x5EDA, 0x5EDF,
-     0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7, 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D,
-     0x6155, 0x6182, 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB, 0x618E, 0x61AC,
-     0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469, 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488,
-     0x6490, 0x64B0, 0x64A5, 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A,
-     0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE, 0x66AB, 0x66B4, 0x66B1,
-     0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E, 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3,
-     0x6A02, 0x6A05, 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F, 0x6F7C,
-     0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B, 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A,
-     0x6F70, 0x6F64, 0x6F97, 0x6F58, 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1,
-     0x71A8, 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483, 0x747E, 0x7480, 0x757F,
-     0x7620, 0x7629, 0x761F, 0x7624, 0x7626, 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E,
-     0x7787, 0x778C, 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5, 0x78BC,
-     0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B, 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1,
-     0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7, 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF,
-     0x7DFB, 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9, 0x7D9E, 0x7DD9,
-     0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF, 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0,
-     0x819A, 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513, 0x8511, 0x8523,
-     0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506, 0x8782, 0x8774, 0x8776, 0x8760, 0x8766,
-     0x8778, 0x8768, 0x8759, 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912,
-     0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95, 0x8ACB, 0x8AF8, 0x8AB2,
-     0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6, 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E,
-     0x8C6C, 0x8CE0, 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC, 0x8CEA,
-     0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D, 0x8E22, 0x8E0F, 0x8E29, 0x8E1F,
-     0x8E21, 0x8E1E, 0x8EBA, 0x8F1D, 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E,
-     0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D, 0x9127, 0x9131, 0x9187,
-     0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB, 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3,
-     0x92BC, 0x92D2, 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707, 0x9709,
-     0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C, 0x98B3, 0x990A, 0x9913, 0x9912,
-     0x9918, 0x99DD, 0x99D0, 0x99DF, 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE,
-     0x9AEF, 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09, 0x9D03, 0x9EA9, 0x9EBE,
-     0x9ECE, 0x58A8, 0x9F52, 0x5112, 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD,
-     0x5291, 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678, 0x566A, 0x5668,
-     0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676, 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E,
-     0x5B1D, 0x5B34, 0x5B78, 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD,
-     0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB, 0x64BB, 0x64BC, 0x64DA,
-     0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF, 0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9,
-     0x66B9, 0x66C4, 0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58, 0x6A39,
-     0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F, 0x6A48, 0x6B59, 0x6B77, 0x6C05,
-     0x6FC2, 0x6FB1, 0x6FA1, 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6,
-     0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8, 0x71D5, 0x71B9, 0x71CE,
-     0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368, 0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2,
-     0x750C, 0x750D, 0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F, 0x77A5,
-     0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E, 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA,
-     0x7BD9, 0x7C11, 0x7BC9, 0x7BE4, 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A,
-     0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09, 0x7E10, 0x7F79, 0x7FB2, 0x7FF0,
-     0x7FF1, 0x7FEE, 0x8028, 0x81B3, 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A,
-     0x8559, 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E, 0x8783, 0x879F,
-     0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932, 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6,
-     0x8AE6, 0x8AFA, 0x8AEB, 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02,
-     0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93, 0x8CF4, 0x8E44, 0x8E31,
-     0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B, 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075,
-     0x9074, 0x9078, 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8, 0x9333,
-     0x932F, 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A, 0x9310, 0x9326, 0x9321, 0x9315, 0x932E,
-     0x9319, 0x95BB, 0x96A7, 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713,
-     0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B, 0x9837, 0x982D, 0x9839,
-     0x9824, 0x9910, 0x9928, 0x991E, 0x991B, 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8,
-     0x9ABC, 0x9AFB, 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12, 0x9D1B,
-     0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121, 0x5132, 0x52F5, 0x568E, 0x5680,
-     0x5690, 0x5685, 0x5687, 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A, 0x5B24,
-     0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8, 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9,
-     0x61C2, 0x61C7, 0x61E6, 0x61CB, 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0,
-     0x64E6, 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6, 0x6A80, 0x6A94,
-     0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E, 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE,
-     0x6BDA, 0x6C08, 0x6FD8, 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80,
-     0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF, 0x71EE, 0x71E6, 0x71E5,
-     0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235, 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6,
-     0x74A8, 0x7646, 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC, 0x77A7, 0x77AD,
-     0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901, 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07,
-     0x7C0D, 0x7BFE, 0x7BF7, 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9,
-     0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B, 0x7E3D, 0x7E31, 0x7E45,
-     0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35, 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071,
-     0x8072, 0x8070, 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF, 0x81BD,
-     0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA, 0x8584, 0x857E, 0x859C, 0x8591, 0x8594,
-     0x85AF, 0x859B, 0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2, 0x87C6,
-     0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936, 0x8944, 0x8938, 0x893D, 0x89AC,
-     0x8B0E, 0x8B17, 0x8B19, 0x8B1B, 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F,
-     0x8C73, 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B, 0x8E48, 0x8E4A,
-     0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F, 0x907D, 0x9084, 0x9081, 0x9082, 0x9080,
-     0x9139, 0x91A3, 0x919E, 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B,
-     0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA, 0x95CB, 0x95CC, 0x95C8,
-     0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C, 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935,
-     0x9A01, 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B, 0x9ECF, 0x9EDE,
-     0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2, 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38,
-     0x5F5D, 0x61E3, 0x6233, 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7,
-     0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2, 0x6AAE, 0x6AAF, 0x6B5F,
-     0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE, 0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC,
-     0x71FE, 0x71F8, 0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658, 0x7652, 0x77BD,
-     0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE, 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B,
-     0x7C27, 0x7C2A, 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A, 0x7E61,
-     0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076, 0x81CD, 0x81CF, 0x820A, 0x85CF,
-     0x85A9, 0x85CD, 0x85D0, 0x85C9, 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2,
-     0x87E0, 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50, 0x8D05, 0x8E59,
-     0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0, 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088,
-     0x91AB, 0x91AC, 0x91D0, 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0,
-     0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2, 0x96DC, 0x96D9, 0x96DB,
-     0x96DE, 0x9724, 0x97A3, 0x97A6, 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853,
-     0x98BA, 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03, 0x9B06, 0x9B4F,
-     0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8, 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0,
-     0x9F15, 0x9F2C, 0x5133, 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, 0x61F2,
-     0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, 0x6AE5, 0x6ADD, 0x6ADA, 0x6AD3,
-     0x701B, 0x701F, 0x7028, 0x701A, 0x701D, 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2,
-     0x7378, 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F, 0x7661, 0x77C7, 0x7919,
-     0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F, 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D,
-     0x7E79, 0x7E69, 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9, 0x85DD,
-     0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805, 0x880D, 0x87F9, 0x87FE, 0x8960,
-     0x895F, 0x8956, 0x895E, 0x8B41, 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46,
-     0x8B59, 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A, 0x8E74, 0x8F54,
-     0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE, 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8,
-     0x93DC, 0x93DD, 0x93D6, 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4,
-     0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E, 0x9858, 0x985B, 0x98BC, 0x9945,
-     0x9949, 0x9A16, 0x9A19, 0x9B0D, 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72,
-     0x9D6A, 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7, 0x56B6, 0x56B4,
-     0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6, 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514,
-     0x6519, 0x66E6, 0x6727, 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662,
-     0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C, 0x7C43, 0x7C4D, 0x7CEF,
-     0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C, 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9,
-     0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815, 0x8964, 0x89BA, 0x89F8,
-     0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F, 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85,
-     0x8E82, 0x91B4, 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952, 0x9951,
-     0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D, 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F,
-     0x9F5F, 0x9F63, 0x9F61, 0x5137, 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD,
-     0x61FC, 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA, 0x6BB2, 0x704C,
-     0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3, 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617,
-     0x862D, 0x861A, 0x8823, 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74, 0x8B77,
-     0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF, 0x91BA, 0x942E, 0x9433, 0x9435,
-     0x943A, 0x9438, 0x9432, 0x942B, 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865,
-     0x9957, 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D, 0x9C25, 0x9DAF,
-     0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19, 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B,
-     0x56C8, 0x56CA, 0x56C9, 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61,
-     0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C, 0x79B3, 0x7C60, 0x7C5F, 0x807E,
-     0x807D, 0x81DF, 0x8972, 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61,
-     0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1, 0x986B, 0x9955, 0x9A55,
-     0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31, 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C,
-     0x9F6A, 0x9F94, 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10, 0x74DA,
-     0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94, 0x81E2, 0x8638, 0x863F, 0x8831,
-     0x8B8A, 0x9090, 0x908F, 0x9463, 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B,
-     0x9A57, 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F, 0x9EF4, 0x56D1,
-     0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7, 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862,
-     0x8B93, 0x8B92, 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744, 0x97C6,
-     0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA, 0x9E7C, 0x9E7D, 0x9F07, 0x9F77,
-     0x9F72, 0x5EF3, 0x6B16, 0x7063, 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472,
-     0x9470, 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A, 0x9477, 0x97C9,
-     0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5, 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78,
-     0x9EF7, 0x8C54, 0x947F, 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72, 0x2460,
-     0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2474, 0x2475,
-     0x2476, 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172,
-     0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E36, 0x4E3F, 0x4E85, 0x4EA0,
-     0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338, 0x5369, 0x53B6, 0x590A, 0x5B80, 0x5DDB, 0x2F33,
-     0x5E7F, 0x5EF4, 0x5F50, 0x5F61, 0x6534, 0x65E0, 0x7592, 0x7676, 0x8FB5, 0x96B6, 0x00A8,
-     0x02C6, 0x30FD, 0x30FE, 0x309D, 0x309E, 0x3003, 0x4EDD, 0x3005, 0x3006, 0x3007, 0x30FC,
-     0xFF3B, 0xFF3D, 0x273D, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048,
-     0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051, 0x3052, 0x3053,
-     0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E,
-     0x305F, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069,
-     0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074,
-     0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
-     0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308A,
-     0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090, 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2,
-     0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD,
-     0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8,
-     0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3,
-     0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE,
-     0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9,
-     0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4,
-     0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
-     0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413,
-     0x0414, 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
-     0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428,
-     0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432, 0x0433,
-     0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
-     0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448,
-     0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x21E7, 0x21B8, 0x21B9, 0x31CF,
-     0x00CC, 0x4E5A, 0x008A, 0x5202, 0x4491, 0x9FB0, 0x5188, 0x9FB1, 0x7607, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE2, 0xFFE4, 0xFF07, 0xFF02, 0x3231, 0x2116,
-     0x2121, 0x309B, 0x309C, 0x2E80, 0x2E84, 0x2E86, 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D,
-     0x2E95, 0x2E9C, 0x2E9D, 0x2EA5, 0x2EA7, 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC, 0x2EBE,
-     0x2EC6, 0x2ECA, 0x2ECC, 0x2ECD, 0x2ECF, 0x2ED6, 0x2ED7, 0x2EDE, 0x2EE3, 0x0000, 0x0000,
-     0x0000, 0x0283, 0x0250, 0x025B, 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A,
-     0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47, 0x4E8D, 0x56D7, 0xFA0C,
-     0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E, 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198,
-     0x52FC, 0x536C, 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3, 0x6BCC,
-     0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9, 0x4EE1, 0x4EDD, 0x4EDA, 0x520C,
-     0x531C, 0x534C, 0x5722, 0x5723, 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74,
-     0x5C73, 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15, 0x6C36, 0x6C43, 0x6C3F,
-     0x6C3B, 0x72AE, 0x72B0, 0x738A, 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5,
-     0x4F14, 0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22, 0x4F13, 0x4F04,
-     0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210, 0x52A6, 0x5322, 0x531F, 0x534D, 0x538A,
-     0x5407, 0x56E1, 0x56DF, 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B,
-     0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A, 0x5C7B, 0x5C7E, 0x5DDF,
-     0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74, 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264,
-     0x6261, 0x6266, 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E, 0x6739,
-     0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18, 0x6C46, 0x6C52, 0x6C5C, 0x6C4F,
-     0x6C4A, 0x6C54, 0x6C4B, 0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F,
-     0x7A75, 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D, 0x897E, 0x9099, 0x9097,
-     0x9098, 0x909B, 0x9094, 0x9622, 0x9624, 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49,
-     0x4F53, 0x4F64, 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33, 0x4F3F,
-     0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD, 0x52AE, 0x5309, 0x5363, 0x5372,
-     0x538E, 0x538F, 0x5430, 0x5437, 0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418,
-     0x543D, 0x544F, 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE, 0x56E7, 0x56E5, 0x5741, 0x5745,
-     0x574C, 0x5749, 0x574B, 0x5752, 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, 0x598E,
-     0x59A2, 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A, 0x5C8D, 0x5C8F,
-     0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86, 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E,
-     0x5E8B, 0x5E89, 0x5E8C, 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1,
-     0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3, 0x5FFA, 0x5FEF, 0x5FF7,
-     0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283, 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271,
-     0x627B, 0x627A, 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, 0x6274, 0x6537, 0x65F0,
-     0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747, 0x6759, 0x6755, 0x674C, 0x6748, 0x675D,
-     0x674D, 0x675A, 0x674B, 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B,
-     0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95, 0x6C9C, 0x6C66, 0x6C73,
-     0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A, 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1,
-     0x72BA, 0x72C5, 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, 0x7594, 0x7595,
-     0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092, 0x809C, 0x8290, 0x828F, 0x8285,
-     0x828E, 0x8291, 0x8293, 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F, 0x90A1,
-     0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F, 0x962D, 0x4E33, 0x4F98, 0x4F7C,
-     0x4F85, 0x4F7D, 0x4F80, 0x4F87, 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97,
-     0x4F6A, 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E, 0x4F92, 0x4F82,
-     0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE, 0x5235, 0x5232, 0x5233, 0x5246, 0x5231,
-     0x52BC, 0x530A, 0x530B, 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482,
-     0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466, 0x548D, 0x546F, 0x5461,
-     0x5460, 0x5498, 0x5463, 0x5467, 0x5464, 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B,
-     0x5771, 0x5770, 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762, 0x5768, 0x577D,
-     0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE, 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC,
-     0x59C3, 0x59D6, 0x59B1, 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93,
-     0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF, 0x5CA8, 0x5CAC, 0x5C9F,
-     0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7, 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17,
-     0x5E14, 0x5E19, 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D, 0x5FDE,
-     0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B, 0x6034, 0x600A, 0x6017, 0x6033, 0x601A,
-     0x601E, 0x602C, 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009, 0x601C,
-     0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA, 0x62B6, 0x62CA, 0x62AE, 0x62B3,
-     0x62AF, 0x62BB, 0x62A9, 0x62B0, 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604,
-     0x6612, 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611, 0x6610, 0x66F6,
-     0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776, 0x677B, 0x6798, 0x6786, 0x6784, 0x6774,
-     0x678D, 0x678C, 0x677A, 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779,
-     0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC, 0x6CEB, 0x6CEE, 0x6CD9,
-     0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7, 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED,
-     0x6CF2, 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0, 0x6D30, 0x6CCD,
-     0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1, 0x7094, 0x7098, 0x7085, 0x7093, 0x7086,
-     0x7084, 0x7091, 0x7096, 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9,
-     0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1, 0x73AD, 0x73A6, 0x73A2,
-     0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8, 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF,
-     0x76F3, 0x76F1, 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA, 0x77F7, 0x7942,
-     0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB, 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3,
-     0x80B8, 0x80B5, 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B, 0x82B5,
-     0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8, 0x82A1, 0x82A9, 0x82C2, 0x82A4,
-     0x82C3, 0x82B6, 0x82A2, 0x8670, 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3,
-     0x8FCD, 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0, 0x9639, 0x963D,
-     0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3, 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4,
-     0x4FDC, 0x4FD9, 0x4FBB, 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC,
-     0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396, 0x5399, 0x5398, 0x54BA,
-     0x54A1, 0x54AD, 0x54A5, 0x54CF, 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5,
-     0x54C6, 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0, 0x57B5, 0x579E,
-     0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B, 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5,
-     0x579A, 0x5795, 0x58F4, 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD,
-     0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB, 0x59E9, 0x59F3, 0x59F5,
-     0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8, 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB,
-     0x5CDB, 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3, 0x5CD4, 0x5CCF, 0x5CC8,
-     0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9, 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0,
-     0x5EA4, 0x5EA2, 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037, 0x6039,
-     0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049, 0x605B, 0x604C, 0x6040, 0x6042,
-     0x605F, 0x6024, 0x6044, 0x6058, 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B,
-     0x62F5, 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6, 0x6300, 0x6313,
-     0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541, 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621,
-     0x6632, 0x6635, 0x661C, 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639,
-     0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA, 0x67DC, 0x67BB, 0x67F8, 0x67D8,
-     0x67C0, 0x67B7, 0x67C5, 0x67EB, 0x67E4, 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6,
-     0x67EE, 0x67E3, 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC, 0x67C6, 0x67ED,
-     0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9, 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28,
-     0x6B82, 0x6B84, 0x6BB6, 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D,
-     0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04, 0x6D19, 0x6D3A, 0x6D1A,
-     0x6D11, 0x6D00, 0x6D1D, 0x6D42, 0x6D01, 0x6D18, 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07,
-     0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F, 0x70BE, 0x70B1, 0x70B0,
-     0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241, 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E,
-     0x72CA, 0x72E4, 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC, 0x73C2,
-     0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB, 0x73BF, 0x73C7, 0x73BE, 0x73C3,
-     0x73C6, 0x73B8, 0x73CB, 0x74EC, 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679,
-     0x76C4, 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA, 0x77E7, 0x77E8,
-     0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780F, 0x780E, 0x7809, 0x7803, 0x7813, 0x794A,
-     0x794C, 0x794B, 0x7945, 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, 0x79CE, 0x7A80, 0x7A7E,
-     0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F, 0x7C80, 0x7C81, 0x7D03, 0x7D08,
-     0x7D01, 0x7F58, 0x7F91, 0x7F8D, 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8,
-     0x80C7, 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9, 0x80DC, 0x80CA,
-     0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD, 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE,
-     0x82F9, 0x8307, 0x82E8, 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, 0x82EC, 0x82E1,
-     0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA, 0x82E4, 0x82E0, 0x82FA, 0x82F3,
-     0x82ED, 0x8677, 0x8674, 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3,
-     0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1, 0x90BD, 0x90BF, 0x90D5,
-     0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8, 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653,
-     0x964A, 0x964E, 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5, 0x4FF4,
-     0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C, 0x5020, 0x5027, 0x5035, 0x502F,
-     0x5031, 0x500E, 0x515A, 0x5194, 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261,
-     0x525A, 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E, 0x5526, 0x54E2,
-     0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A, 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511,
-     0x5505, 0x54F1, 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B, 0x5701,
-     0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6, 0x57BD, 0x57BC, 0x57B8, 0x57B6,
-     0x57BF, 0x57C7, 0x57D0, 0x57B9, 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E,
-     0x5A15, 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD, 0x5BAC, 0x5C03,
-     0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1, 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28,
-     0x5EA8, 0x5EAE, 0x5EAA, 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067, 0x6041,
-     0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D, 0x6083, 0x6095, 0x609B, 0x6097, 0x6087,
-     0x609C, 0x608E, 0x6219, 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336,
-     0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341, 0x6334, 0x6358, 0x6354,
-     0x6359, 0x632D, 0x6347, 0x6333, 0x635A, 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A,
-     0x6546, 0x65C6, 0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712, 0x6713,
-     0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B, 0x684F, 0x6816, 0x6831, 0x681C,
-     0x6835, 0x682B, 0x682D, 0x682F, 0x684E, 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826,
-     0x6828, 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D, 0x6B31, 0x6B34,
-     0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4, 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A,
-     0x6D63, 0x6D64, 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F, 0x6D91,
-     0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60, 0x6D97, 0x6D70, 0x6D7C, 0x6D5F,
-     0x6D82, 0x6D98, 0x6D2F, 0x6D68, 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B,
-     0x6D7D, 0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39, 0x70E2, 0x70D7,
-     0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5, 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1,
-     0x7242, 0x7278, 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6, 0x72F3, 0x72FB,
-     0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC, 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2,
-     0x73DB, 0x73D4, 0x73DD, 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5,
-     0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0, 0x75BF, 0x75B6, 0x75BA,
-     0x768A, 0x76C9, 0x771D, 0x771B, 0x7710, 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719,
-     0x771A, 0x7722, 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E, 0x782B,
-     0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B, 0x794F, 0x795C, 0x7953, 0x7952,
-     0x7951, 0x79EB, 0x79EC, 0x79E0, 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86,
-     0x7A89, 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10, 0x7B04, 0x7B13, 0x7B05,
-     0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09, 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88,
-     0x7C8D, 0x7C85, 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F, 0x7D12,
-     0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D, 0x7F5B, 0x7F96, 0x7F92, 0x7FC3,
-     0x7FC2, 0x7FC0, 0x8016, 0x803E, 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB,
-     0x8100, 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351, 0x8325, 0x8356,
-     0x833F, 0x8341, 0x8326, 0x831C, 0x8322, 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C,
-     0x834D, 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345, 0x834C, 0x8353,
-     0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653, 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D,
-     0x8691, 0x869E, 0x8687, 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1,
-     0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843, 0x8844, 0x886D, 0x8875,
-     0x8876, 0x8872, 0x8880, 0x8871, 0x887F, 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12,
-     0x8C47, 0x8C57, 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6, 0x8ED1,
-     0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004, 0x8FFC, 0x8FF6, 0x90D6, 0x90E0,
-     0x90D9, 0x90DA, 0x90E3, 0x90DF, 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150,
-     0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC, 0x98E3, 0x9ADF, 0x9B2F,
-     0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E, 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048,
-     0x504D, 0x5041, 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B, 0x5063,
-     0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051, 0x51D0, 0x526B, 0x526D, 0x526C,
-     0x526E, 0x52D6, 0x52D3, 0x532D, 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534,
-     0x552A, 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545, 0x550C, 0x5532, 0x5565,
-     0x554E, 0x5539, 0x5548, 0x552D, 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814,
-     0x57E2, 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8, 0x580B, 0x57F3,
-     0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5, 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810,
-     0x57E7, 0x5801, 0x580C, 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58,
-     0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F, 0x5A65, 0x5A6C, 0x5A53,
-     0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52, 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D,
-     0x5A39, 0x5A4C, 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72, 0x5B6E,
-     0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A, 0x5D20, 0x5D0C, 0x5D28, 0x5D0D,
-     0x5D26, 0x5D25, 0x5D0F, 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1,
-     0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96, 0x5F9F, 0x608A, 0x6090,
-     0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3, 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8,
-     0x60B1, 0x60DB, 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365, 0x638A,
-     0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397, 0x63AB, 0x638E, 0x636F, 0x6387,
-     0x6390, 0x636E, 0x63AF, 0x6375, 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F,
-     0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553, 0x65CD, 0x6665, 0x6661, 0x665B,
-     0x6659, 0x665C, 0x6662, 0x6718, 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE,
-     0x68AB, 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2, 0x688F, 0x6877,
-     0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880, 0x6871, 0x687E, 0x689B, 0x6896, 0x688B,
-     0x68A0, 0x6889, 0x68A4, 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33,
-     0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A, 0x6DC0, 0x6DAB, 0x6DB4,
-     0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2, 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0,
-     0x6DDF, 0x6DD6, 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD, 0x6DED,
-     0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9, 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7,
-     0x6DCD, 0x6DE3, 0x6DBB, 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104,
-     0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8, 0x70F6, 0x710B, 0x7102,
-     0x710E, 0x727E, 0x727B, 0x727C, 0x727F, 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A,
-     0x7308, 0x72FF, 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401, 0x73FD,
-     0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B, 0x73F4, 0x7408, 0x7564, 0x7563,
-     0x75CE, 0x75D2, 0x75CF, 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3, 0x7739,
-     0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D, 0x7725, 0x773B, 0x7735, 0x7848,
-     0x7852, 0x7849, 0x784D, 0x784A, 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969,
-     0x796A, 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7, 0x7A8F, 0x7A94,
-     0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30, 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A,
-     0x7B1D, 0x7B31, 0x7B2B, 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98,
-     0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45, 0x7D2C, 0x7D29, 0x7D41,
-     0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B, 0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B,
-     0x7FCA, 0x7FCB, 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F, 0x801E, 0x801B,
-     0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119, 0x811B, 0x812D, 0x811F, 0x812C, 0x811E,
-     0x8121, 0x8115, 0x8127, 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232,
-     0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4, 0x8374, 0x838F, 0x8381,
-     0x8395, 0x8399, 0x8375, 0x8394, 0x83A9, 0x837D, 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA,
-     0x838B, 0x837E, 0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387, 0x83AE,
-     0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7, 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0,
-     0x86C8, 0x86B9, 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD, 0x86BE,
-     0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A, 0x8891, 0x88A1, 0x889F, 0x8898,
-     0x88A7, 0x8899, 0x889B, 0x8897, 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6,
-     0x89D9, 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C, 0x8C5D, 0x8C7D,
-     0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2, 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE,
-     0x8EDD, 0x8EDC, 0x8ED7, 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021,
-     0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB, 0x90EC, 0x90E9, 0x9156,
-     0x9158, 0x915A, 0x9153, 0x9155, 0x91EC, 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9,
-     0x91EA, 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C, 0x966D, 0x966B,
-     0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5, 0x9997, 0x509B, 0x5095, 0x5094, 0x509E,
-     0x508B, 0x50A3, 0x5083, 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, 0x5087,
-     0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, 0x55A8, 0x55A5, 0x55AD, 0x5577,
-     0x5645, 0x55A2, 0x5593, 0x5588, 0x558F, 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D,
-     0x558C, 0x55A6, 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837, 0x5819, 0x581E,
-     0x5827, 0x5823, 0x5828, 0x57F5, 0x5848, 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836,
-     0x582E, 0x5839, 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F, 0x5A7A,
-     0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC, 0x5A95, 0x5AAE, 0x5A37, 0x5A84,
-     0x5A8A, 0x5A97, 0x5A83, 0x5A8B, 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93,
-     0x5A9D, 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C, 0x5C30, 0x5D37,
-     0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35, 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A,
-     0x5D52, 0x5D3D, 0x5D31, 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36,
-     0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB, 0x60C9, 0x60B9, 0x60CC,
-     0x60E2, 0x60CE, 0x60C4, 0x6114, 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8,
-     0x60FC, 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104, 0x610B, 0x624A,
-     0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8, 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA,
-     0x63E0, 0x63F6, 0x63D5, 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4,
-     0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0, 0x63D7, 0x63D9, 0x6532,
-     0x6567, 0x656A, 0x6564, 0x655C, 0x6568, 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0,
-     0x65D2, 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A, 0x6672, 0x6701, 0x690C,
-     0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC, 0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB,
-     0x68E4, 0x68F6, 0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970, 0x68B4,
-     0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD, 0x68FC, 0x68E8, 0x690B, 0x690A,
-     0x6917, 0x68CE, 0x68C8, 0x68DD, 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9,
-     0x6915, 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97, 0x6B99, 0x6B95,
-     0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC, 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88,
-     0x6E3C, 0x6E3D, 0x6E45, 0x6E62, 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33,
-     0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E, 0x6E68, 0x6E5C, 0x6E61, 0x6E31,
-     0x6E28, 0x6E60, 0x6E71, 0x6E6B, 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78,
-     0x6E64, 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A, 0x7120, 0x711E,
-     0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125, 0x7122, 0x7132, 0x711F, 0x7128, 0x713A,
-     0x711B, 0x724B, 0x725A, 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330,
-     0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323, 0x7335, 0x730C, 0x742E,
-     0x742C, 0x7430, 0x742B, 0x7416, 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, 0x741D,
-     0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7, 0x75DA, 0x75E1, 0x75E6,
-     0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695, 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D,
-     0x7745, 0x774A, 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865, 0x785C,
-     0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868, 0x785E, 0x7862, 0x7974, 0x7973,
-     0x7972, 0x7970, 0x7A02, 0x7A0A, 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A,
-     0x7B3B, 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2, 0x7C9E, 0x7CA8,
-     0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56, 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C,
-     0x7D6B, 0x7D52, 0x7D54, 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65, 0x7F66,
-     0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050, 0x80FE, 0x80D4, 0x8143, 0x814A,
-     0x8152, 0x814F, 0x8147, 0x813D, 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9,
-     0x8204, 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423, 0x83C0, 0x83E8,
-     0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410, 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF,
-     0x8401, 0x83DD, 0x83E5, 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9,
-     0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3, 0x83D5, 0x83FA, 0x83C7, 0x83D1,
-     0x83EA, 0x8413, 0x83C3, 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB,
-     0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA, 0x86DD, 0x86EB, 0x86DC,
-     0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1, 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9,
-     0x88B8, 0x88C0, 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9, 0x8995,
-     0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D, 0x8A39, 0x8A59, 0x8A40, 0x8A57,
-     0x8A58, 0x8A44, 0x8A45, 0x8A52, 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81,
-     0x8C80, 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89, 0x8DD8, 0x8DD3,
-     0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5, 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF,
-     0x8EF7, 0x8EFA, 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6, 0x8EEB,
-     0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F, 0x9106, 0x912C, 0x9104, 0x90FF,
-     0x90FC, 0x9108, 0x90F9, 0x90FB, 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164,
-     0x915F, 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226, 0x920F, 0x920C,
-     0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204, 0x9227, 0x9202, 0x921C, 0x9224, 0x9219,
-     0x9217, 0x9205, 0x9216, 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688, 0x9689,
-     0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1, 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807,
-     0x98A9, 0x98EB, 0x9CE6, 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE,
-     0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA, 0x50B1, 0x50CB, 0x50C9,
-     0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278, 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0,
-     0x55CB, 0x55CA, 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D, 0x55CF,
-     0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9, 0x55C2, 0x5714, 0x5853, 0x5868,
-     0x5864, 0x584F, 0x584D, 0x5849, 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B,
-     0x583D, 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8, 0x5AB1, 0x5AB5,
-     0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6, 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD,
-     0x5AB9, 0x5A90, 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A, 0x5D65,
-     0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0, 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D,
-     0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6, 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149,
-     0x614A, 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F, 0x6129, 0x6140,
-     0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5, 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409,
-     0x6420, 0x6424, 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437, 0x6422, 0x6423,
-     0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435, 0x642F, 0x640A, 0x641A, 0x6440, 0x6425,
-     0x6427, 0x640B, 0x63E7, 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686,
-     0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678, 0x6720, 0x6966, 0x695F,
-     0x6938, 0x694E, 0x6962, 0x6971, 0x693F, 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959,
-     0x697A, 0x6948, 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978, 0x6934,
-     0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941, 0x6974, 0x694C, 0x693B, 0x694B,
-     0x6937, 0x695C, 0x694F, 0x6951, 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45,
-     0x6B43, 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC, 0x6BF9, 0x6BF7, 0x6BF8,
-     0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0, 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9,
-     0x6EC6, 0x6ED2, 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6, 0x6ECF,
-     0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92, 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1,
-     0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA, 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163,
-     0x7160, 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142, 0x7158, 0x7143,
-     0x714B, 0x7170, 0x715F, 0x7150, 0x7153, 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C,
-     0x7291, 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A, 0x7349, 0x7444,
-     0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440, 0x744F, 0x7450, 0x744E, 0x7442, 0x7446,
-     0x744D, 0x7454, 0x74E1, 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF,
-     0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610, 0x75FB, 0x75F6, 0x75ED,
-     0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD, 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A,
-     0x7769, 0x7767, 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F, 0x7884,
-     0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899, 0x7880, 0x7896, 0x787B, 0x797C,
-     0x7982, 0x797D, 0x7979, 0x7A11, 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13,
-     0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64, 0x7B6D, 0x7B74, 0x7B69,
-     0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70, 0x7B61, 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4,
-     0x7CAF, 0x7D88, 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B, 0x7D83,
-     0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D, 0x7F6B, 0x7F67, 0x7F68, 0x7F6C,
-     0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB, 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169,
-     0x815B, 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F, 0x8144, 0x8161, 0x821D,
-     0x8249, 0x8244, 0x8240, 0x8242, 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, 0x848F,
-     0x848D, 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844D, 0x847D, 0x845A, 0x8459,
-     0x8474, 0x8473, 0x845D, 0x8507, 0x845E, 0x8437, 0x843A, 0x8434, 0x847A, 0x8443, 0x8478,
-     0x8432, 0x8445, 0x8429, 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439,
-     0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447, 0x8436, 0x8433, 0x8468,
-     0x847E, 0x8444, 0x842B, 0x8460, 0x8454, 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C,
-     0x86FA, 0x86D6, 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D, 0x8705,
-     0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA, 0x88CC, 0x88D0, 0x8985, 0x899B,
-     0x89DF, 0x89E5, 0x89E4, 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F,
-     0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81, 0x8A74, 0x8A7A, 0x8C3C,
-     0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66, 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69,
-     0x8D91, 0x8D8C, 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0, 0x8DE0,
-     0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2, 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4,
-     0x8F06, 0x8EFF, 0x8F01, 0x8F00, 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F,
-     0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111, 0x9116, 0x9114, 0x910B, 0x910E,
-     0x916E, 0x916F, 0x9248, 0x9252, 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283,
-     0x922E, 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F, 0x9236, 0x9261,
-     0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272, 0x924E, 0x9253, 0x924C, 0x9256, 0x9232,
-     0x959F, 0x959C, 0x959E, 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD,
-     0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D, 0x980E, 0x98AC, 0x98F6,
-     0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5, 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7,
-     0x9E80, 0x9EFD, 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD, 0x50E4,
-     0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0, 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB,
-     0x5330, 0x53AC, 0x5627, 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613,
-     0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C, 0x5890, 0x5898, 0x5886,
-     0x5881, 0x587F, 0x5874, 0x588B, 0x587A, 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888,
-     0x587B, 0x5894, 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA, 0x5ADA,
-     0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC, 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8,
-     0x5ADF, 0x5B77, 0x5BE0, 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A, 0x5D81,
-     0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D, 0x5D79, 0x5D7F, 0x5E58, 0x5E59,
-     0x5E53, 0x5ED8, 0x5ED1, 0x5ED7, 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44,
-     0x5F43, 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173, 0x6152, 0x6153,
-     0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A, 0x615B, 0x6165, 0x613B, 0x616A, 0x6161,
-     0x6156, 0x6229, 0x6227, 0x622B, 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472,
-     0x6473, 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E, 0x645C, 0x644B, 0x6453,
-     0x6460, 0x6450, 0x647F, 0x643F, 0x646C, 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0,
-     0x66A1, 0x66A0, 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9, 0x69A0, 0x69CE,
-     0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999, 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE,
-     0x69AF, 0x69BF, 0x69C4, 0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3,
-     0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2, 0x69B5, 0x69A5, 0x69C6,
-     0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5,
-     0x6EF1, 0x6F03, 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19, 0x6F1A,
-     0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A, 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D,
-     0x6F40, 0x6F30, 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD, 0x6EF6,
-     0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E, 0x6F08, 0x6F21, 0x7187, 0x7190,
-     0x7189, 0x7180, 0x7185, 0x7182, 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253,
-     0x7297, 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473, 0x7471, 0x7475,
-     0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503, 0x757D, 0x7590, 0x7616, 0x7608, 0x760C,
-     0x7615, 0x7611, 0x760A, 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780,
-     0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8, 0x787E, 0x78AB, 0x789E,
-     0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4, 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994,
-     0x7993, 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F, 0x7A28, 0x7A26,
-     0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C, 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D,
-     0x7B8C, 0x7B9B, 0x7B8E, 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF,
-     0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1, 0x7DC0, 0x7DC5, 0x7D9D,
-     0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC, 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6,
-     0x7DAE, 0x7DA9, 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE, 0x8024, 0x805D,
-     0x805C, 0x8189, 0x8186, 0x8183, 0x8187, 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4,
-     0x84A1, 0x849F, 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4, 0x84C1,
-     0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7, 0x84BB, 0x84A2, 0x8494, 0x84C7,
-     0x84CC, 0x849B, 0x84A9, 0x84AF, 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7,
-     0x84D4, 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728, 0x876B, 0x8740,
-     0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743, 0x872C, 0x8741, 0x873E, 0x8746, 0x8720,
-     0x8732, 0x872A, 0x872D, 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
-     0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1, 0x88F2, 0x88FA, 0x88FE,
-     0x88EE, 0x88FC, 0x88F6, 0x88FB, 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E,
-     0x89E9, 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96, 0x8C3D, 0x8C68,
-     0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09, 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A,
-     0x8E03, 0x8E07, 0x8E06, 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D,
-     0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124, 0x9121, 0x911B, 0x917A,
-     0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4, 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA,
-     0x928D, 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3, 0x92EE, 0x928E, 0x9282,
-     0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1, 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E,
-     0x9287, 0x92A9, 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D, 0x977A,
-     0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781, 0x977F, 0x97CE, 0x97CD, 0x9816,
-     0x98AD, 0x98AE, 0x9902, 0x9900, 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA,
-     0x99C2, 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60, 0x9B61, 0x9B5F,
-     0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103, 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6,
-     0x50FE, 0x510B, 0x510C, 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642,
-     0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658, 0x565A, 0x5640, 0x5633, 0x563D,
-     0x562C, 0x563E, 0x5638, 0x562A, 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3,
-     0x58AF, 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7, 0x5AF6, 0x5B03,
-     0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05, 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F,
-     0x5D92, 0x5DA2, 0x5D93, 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D,
-     0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2, 0x618B, 0x6183, 0x6179,
-     0x61B1, 0x61B0, 0x61A2, 0x6189, 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA,
-     0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496, 0x64A0, 0x6485, 0x6497,
-     0x649C, 0x648F, 0x648B, 0x648A, 0x648C, 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576,
-     0x657A, 0x6579, 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7, 0x66AA,
-     0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15, 0x69F1, 0x69E4, 0x6A20, 0x69FF,
-     0x69EC, 0x69E2, 0x6A1B, 0x6A1D, 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7,
-     0x6A40, 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04, 0x6A18, 0x6A25,
-     0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16, 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6,
-     0x6C01, 0x6C00, 0x6BFF, 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92, 0x6F8D,
-     0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96, 0x6F76, 0x6F6C, 0x6F82, 0x6F55,
-     0x6F72, 0x6F52, 0x6F50, 0x6F57, 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D,
-     0x6F67, 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77, 0x6F6A, 0x6F7B,
-     0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A, 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E,
-     0x71A4, 0x71A1, 0x71AA, 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E,
-     0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359, 0x7362, 0x7487, 0x7489, 0x748A,
-     0x7486, 0x7481, 0x747D, 0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625,
-     0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B, 0x769C, 0x769D, 0x769E,
-     0x769B, 0x778D, 0x778F, 0x7789, 0x7788, 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE,
-     0x78D4, 0x78C8, 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2, 0x799B,
-     0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB, 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF,
-     0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5, 0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7,
-     0x7DD7, 0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE, 0x7DDF, 0x7F76,
-     0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA, 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067,
-     0x81A3, 0x819F, 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253, 0x8252,
-     0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500, 0x8529, 0x850E, 0x8509, 0x850D,
-     0x851F, 0x850A, 0x8527, 0x851C, 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A,
-     0x84F2, 0x8515, 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9, 0x8516, 0x84FE,
-     0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E, 0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8,
-     0x84F0, 0x84EF, 0x84F9, 0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662, 0x8756,
-     0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758, 0x8754, 0x875B, 0x8752, 0x8761, 0x875A,
-     0x8751, 0x875E, 0x876D, 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A,
-     0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767, 0x8769, 0x885A, 0x8905,
-     0x890C, 0x8914, 0x890B, 0x8917, 0x8918, 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909,
-     0x89A2, 0x89A4, 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3, 0x8AD1,
-     0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5, 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD,
-     0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F, 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7,
-     0x8DA0, 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E, 0x8E15, 0x8E1B,
-     0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27, 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17,
-     0x8E1A, 0x8F2C, 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073, 0x9070,
-     0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A, 0x9132, 0x9126, 0x912E, 0x9185,
-     0x9186, 0x918A, 0x9181, 0x9182, 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9,
-     0x92B6, 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, 0x92CC, 0x92EF, 0x92C2,
-     0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD, 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7,
-     0x92D1, 0x92D3, 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB, 0x95AE, 0x95B0,
-     0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702, 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0,
-     0x97CF, 0x981E, 0x981D, 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908,
-     0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD, 0x99CF, 0x99D3, 0x99D4,
-     0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB, 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3,
-     0x9AF2, 0x9AF1, 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75, 0x9B70,
-     0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF, 0x9CF7, 0x9D07, 0x9D00, 0x9CF9,
-     0x9CFB, 0x9D08, 0x9D05, 0x9D04, 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117,
-     0x511A, 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E, 0x5673, 0x5666, 0x5663,
-     0x566D, 0x5672, 0x565E, 0x5677, 0x571C, 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA,
-     0x58C2, 0x58BC, 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10, 0x5B16,
-     0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1, 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0,
-     0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2, 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F,
-     0x5EE9, 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8, 0x6196, 0x61C5,
-     0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA, 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0,
-     0x64CF, 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533, 0x657F, 0x657C,
-     0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB, 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC,
-     0x6723, 0x6A34, 0x6A66, 0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76,
-     0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A, 0x6A64, 0x6A50, 0x6A4F,
-     0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C, 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46,
-     0x6B55, 0x6B54, 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03, 0x6C06,
-     0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8, 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E,
-     0x6FCA, 0x6FA8, 0x7004, 0x6FA5, 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8,
-     0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5, 0x71C2, 0x71BF, 0x71B8,
-     0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4, 0x71CA, 0x71C7, 0x71CF, 0x71BD, 0x71D8, 0x71BC,
-     0x71C6, 0x71DA, 0x71DB, 0x729D, 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365, 0x736B,
-     0x736A, 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495, 0x74A1, 0x750B, 0x7580, 0x762F,
-     0x762D, 0x7631, 0x763D, 0x7633, 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A,
-     0x779D, 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799, 0x7797, 0x78DD, 0x78E9,
-     0x78E5, 0x78EA, 0x78DE, 0x78E3, 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, 0x79A4,
-     0x7A44, 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE, 0x7BE3, 0x7BE7,
-     0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9, 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB,
-     0x7BD8, 0x7BDF, 0x7CD2, 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C,
-     0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22, 0x7E0B, 0x7E0F, 0x7E16,
-     0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43, 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A,
-     0x8029, 0x806C, 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC, 0x81B4,
-     0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257, 0x8556, 0x8545, 0x856B, 0x854D,
-     0x8553, 0x8561, 0x8558, 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
-     0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555, 0x8567, 0x8560, 0x858C,
-     0x8566, 0x855D, 0x8554, 0x8565, 0x856C, 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797,
-     0x8793, 0x8792, 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785, 0x8790,
-     0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789, 0x891E, 0x8926, 0x8930, 0x892D,
-     0x892E, 0x8927, 0x8931, 0x8922, 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0,
-     0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4, 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE,
-     0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF, 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1,
-     0x8CF0, 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38, 0x8E40, 0x8E45,
-     0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F, 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32,
-     0x8F39, 0x8F37, 0x8F34, 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136,
-     0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308, 0x931F, 0x9306, 0x930F,
-     0x937A, 0x9338, 0x933C, 0x931B, 0x9323, 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D,
-     0x92CB, 0x931D, 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324, 0x92FF,
-     0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C, 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB,
-     0x9316, 0x95BC, 0x95CD, 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9,
-     0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0, 0x97F8, 0x9835, 0x982F,
-     0x9832, 0x9924, 0x991F, 0x9927, 0x9929, 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0,
-     0x99E3, 0x99EA, 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA, 0x9AF9,
-     0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E, 0x9B7B, 0x9B82, 0x9B93, 0x9B92,
-     0x9B90, 0x9B7A, 0x9B95, 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14, 0x9D29,
-     0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88, 0x9E86, 0x9E87, 0x9EAE, 0x9EAD,
-     0x9ED5, 0x9ED6, 0x9EFA, 0x9F12, 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129,
-     0x52F4, 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682, 0x567F, 0x5681,
-     0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25, 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26,
-     0x5B2F, 0x5B2E, 0x5B7B, 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3,
-     0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE, 0x64EF, 0x64E9, 0x64E3,
-     0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580, 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81,
-     0x6AA5, 0x6A89, 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E, 0x6A95, 0x6A83,
-     0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A, 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD,
-     0x6C09, 0x6FCC, 0x6FA9, 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE,
-     0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2, 0x71E4, 0x71F0, 0x71E2,
-     0x7373, 0x736E, 0x736F, 0x7497, 0x74B2, 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5,
-     0x74AF, 0x7510, 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647, 0x76A4,
-     0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6, 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3,
-     0x78FD, 0x7902, 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB, 0x79A8,
-     0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE, 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F,
-     0x7BF2, 0x7C00, 0x7BFF, 0x7BFB, 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03,
-     0x7C01, 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8, 0x7E2D, 0x7E3C,
-     0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49, 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30,
-     0x7E3B, 0x7E36, 0x7E44, 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C,
-     0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9, 0x825B, 0x825A, 0x825C,
-     0x8583, 0x8580, 0x858F, 0x85A7, 0x8595, 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A,
-     0x859E, 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E, 0x8596, 0x8586,
-     0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582, 0x8588, 0x8585, 0x8579, 0x8576, 0x8598,
-     0x8590, 0x859F, 0x8668, 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5,
-     0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF, 0x87C4, 0x87CA, 0x87B4,
-     0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE, 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941,
-     0x8952, 0x8937, 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E, 0x8B18, 0x8B16,
-     0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F, 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06,
-     0x8B1C, 0x8B13, 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94, 0x8CF9,
-     0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47, 0x8F43, 0x8F40, 0x9085, 0x907E,
-     0x9138, 0x919A, 0x91A2, 0x919B, 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383,
-     0x93AF, 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349, 0x9350, 0x9351,
-     0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379, 0x9357, 0x9355, 0x9352, 0x934F, 0x9371,
-     0x9377, 0x937B, 0x9361, 0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0,
-     0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720, 0x971F, 0x9718, 0x971D,
-     0x9719, 0x979A, 0x97A1, 0x979C, 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844,
-     0x984A, 0x9849, 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933, 0x9932, 0x992F,
-     0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1, 0x9A02, 0x99FA, 0x99F4, 0x99F7, 0x99F9,
-     0x99F8, 0x99F6, 0x99FB, 0x99FD, 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01,
-     0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1, 0x9BA5, 0x9BA4, 0x9B86,
-     0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41, 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38,
-     0x9D30, 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D, 0x7FF5, 0x9D2D, 0x9E8A,
-     0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA, 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, 0x9F54,
-     0x9FA0, 0x5131, 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A, 0x569D, 0x5699, 0x5970,
-     0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8, 0x61DF, 0x61ED, 0x61EE, 0x61F1,
-     0x61EA, 0x61F0, 0x61EB, 0x61D6, 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503,
-     0x64FC, 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD, 0x6AE1, 0x6AC6,
-     0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD, 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C,
-     0x700D, 0x7001, 0x7005, 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7,
-     0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, 0x71FD, 0x7376, 0x74B8, 0x74C0, 0x74B5, 0x74C1,
-     0x74BE, 0x74B6, 0x74BB, 0x74C2, 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653,
-     0x7657, 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C, 0x7913, 0x7914,
-     0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC, 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20,
-     0x7C1F, 0x7C2D, 0x7C1D, 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56,
-     0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53, 0x7FB5, 0x7FB3, 0x7FF7,
-     0x7FF8, 0x8075, 0x81D1, 0x81D2, 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3,
-     0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB, 0x85CE, 0x85C8, 0x85C5,
-     0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8, 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2,
-     0x87DB, 0x87EB, 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3, 0x87ED,
-     0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4, 0x87E8, 0x87DD, 0x8953, 0x894B,
-     0x894F, 0x894C, 0x8946, 0x8950, 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30,
-     0x8B35, 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26, 0x8B36, 0x8B2E,
-     0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75, 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04,
-     0x8D02, 0x8D00, 0x8E5C, 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67, 0x8E5B,
-     0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47, 0x8F48, 0x8F4B, 0x9128, 0x913A,
-     0x913B, 0x913E, 0x91A8, 0x91A5, 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7,
-     0x939B, 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395, 0x9388, 0x9399,
-     0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4, 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2,
-     0x95D3, 0x95D1, 0x96B3, 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722,
-     0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA, 0x97A2, 0x97A5, 0x97D7, 0x97D9,
-     0x97D6, 0x97D8, 0x97FA, 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F,
-     0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07, 0x9A06, 0x9AC0, 0x9ADC,
-     0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35, 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3,
-     0x9BBF, 0x9BC1, 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C, 0x9D53,
-     0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C, 0x9D57, 0x9D52, 0x9D54, 0x9D5F,
-     0x9D58, 0x9D5A, 0x9E8E, 0x9E8C, 0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A,
-     0x9F29, 0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4, 0x56AB, 0x56AD,
-     0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD, 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F,
-     0x5DC3, 0x5E70, 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E, 0x6584,
-     0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1, 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC,
-     0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD, 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020,
-     0x7016, 0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C, 0x702A, 0x720C,
-     0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6, 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5,
-     0x74B7, 0x74C3, 0x7516, 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B, 0x7921,
-     0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68, 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B,
-     0x7CEC, 0x7CEA, 0x7E76, 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74,
-     0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE, 0x8078, 0x81D7, 0x81D5,
-     0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1, 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7,
-     0x85EC, 0x85F2, 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6, 0x85EF,
-     0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7, 0x8809, 0x880C, 0x880B, 0x8806,
-     0x87FC, 0x8808, 0x87FF, 0x880A, 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C,
-     0x8958, 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48, 0x8B4A, 0x8B40,
-     0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55, 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77,
-     0x8C76, 0x8C9A, 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D, 0x8E78,
-     0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51, 0x8F4F, 0x8F50, 0x8F53, 0x8FB4,
-     0x9140, 0x913F, 0x91B0, 0x91AD, 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9,
-     0x93EC, 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3, 0x93D5, 0x93C4,
-     0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, 0x95DA, 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C,
-     0x9728, 0x9726, 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C, 0x9859, 0x985D,
-     0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948, 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A,
-     0x9A15, 0x9A25, 0x9A1D, 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C,
-     0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA, 0x9BEB, 0x9BE0, 0x9BDE,
-     0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4, 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5,
-     0x9BE1, 0x9BDA, 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78, 0x9D86,
-     0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70, 0x9D69, 0x9D85, 0x9D73, 0x9D7B,
-     0x9D82, 0x9D6F, 0x9D79, 0x9D7F, 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D,
-     0x9F40, 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2, 0x56B5, 0x56B3, 0x58E3,
-     0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF, 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515,
-     0x6513, 0x65DF, 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9, 0x6AF1,
-     0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034, 0x7031, 0x7042, 0x7038, 0x703F,
-     0x703A, 0x7039, 0x7040, 0x703B, 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C,
-     0x74BA, 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD, 0x77F2, 0x7925,
-     0x7923, 0x7927, 0x7928, 0x7924, 0x7929, 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49,
-     0x7C48, 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80, 0x7FBA, 0x7FFF,
-     0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269, 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B,
-     0x8600, 0x85F6, 0x8604, 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817,
-     0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A, 0x8B5D, 0x8B68, 0x8B63,
-     0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86, 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55,
-     0x8F58, 0x8F5A, 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B, 0x9413,
-     0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410, 0x9428, 0x9419, 0x940D, 0x93F5,
-     0x9400, 0x93F7, 0x9407, 0x940E, 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF,
-     0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF, 0x972E, 0x972F, 0x97B9,
-     0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862, 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E,
-     0x9959, 0x994C, 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36, 0x9A29,
-     0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10, 0x9B12, 0x9B11, 0x9C0B, 0x9C08,
-     0x9BF7, 0x9C05, 0x9C12, 0x9BF8, 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09,
-     0x9D9F, 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B, 0x9DA0, 0x9D94, 0x9D9C,
-     0x9DAA, 0x9D97, 0x9DA1, 0x9D9A, 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96,
-     0x9DA6, 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6, 0x9F30, 0x9F2E,
-     0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91, 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3,
-     0x56BD, 0x56BE, 0x5B48, 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC,
-     0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049, 0x7045, 0x7046, 0x721D,
-     0x721A, 0x7219, 0x737E, 0x7517, 0x766A, 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53,
-     0x7CF2, 0x7E8A, 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030, 0x81DD,
-     0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619, 0x8627, 0x862E, 0x8621, 0x8620,
-     0x8629, 0x861E, 0x8625, 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A,
-     0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45, 0x8B7A, 0x8B7B, 0x8D10,
-     0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E, 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9,
-     0x943F, 0x943B, 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437, 0x942C,
-     0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A, 0x97BF, 0x97E1, 0x9864, 0x98C9,
-     0x98C6, 0x98C0, 0x9958, 0x9956, 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
-     0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A, 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C,
-     0x9C2C, 0x9C23, 0x9C28, 0x9C29, 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7,
-     0x9DCA, 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9, 0x9DBA, 0x9DAC,
-     0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD, 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE,
-     0x9EED, 0x9F1B, 0x9F18, 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6,
-     0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2, 0x6521, 0x6520, 0x6526,
-     0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D, 0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F,
-     0x72A9, 0x737F, 0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4, 0x7A70,
-     0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A, 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87,
-     0x81DE, 0x826B, 0x8634, 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826,
-     0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84, 0x8B82, 0x8B86, 0x8B85,
-     0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A, 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62,
-     0x9147, 0x944C, 0x9450, 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449, 0x9446,
-     0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B, 0x9A4E, 0x9A53, 0x9A54, 0x9A4C,
-     0x9A4F, 0x9A48, 0x9A4A, 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B, 0x9B56,
-     0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33, 0x9C41, 0x9C3C, 0x9C37, 0x9C34,
-     0x9C32, 0x9C3D, 0x9C36, 0x9DDB, 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1,
-     0x9DDF, 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6, 0x9EF0, 0x9F35,
-     0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2, 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972,
-     0x5B4D, 0x5DD8, 0x882F, 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB,
-     0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382, 0x7381, 0x7383, 0x7670,
-     0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C, 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B,
-     0x863E, 0x8830, 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE, 0x8B8C, 0x8B8E,
-     0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64, 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D,
-     0x9457, 0x945E, 0x97C4, 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52,
-     0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C, 0x9C4E, 0x9DFB, 0x9DF7,
-     0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4, 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0,
-     0x9DE2, 0x9DEC, 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3, 0x9F06,
-     0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F, 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3,
-     0x56CD, 0x5B4E, 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D, 0x7060,
-     0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6, 0x7C6A, 0x7E97, 0x7F89, 0x826D,
-     0x8643, 0x8838, 0x8837, 0x8835, 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D,
-     0x91BE, 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743, 0x9747, 0x97C7,
-     0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67, 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02,
-     0x9DFE, 0x9E07, 0x9E03, 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04,
-     0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E, 0x65B8, 0x6B18, 0x6B19,
-     0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA, 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6,
-     0x7E9A, 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648, 0x8979, 0x897A,
-     0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5, 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F,
-     0x9471, 0x9473, 0x9749, 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10,
-     0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78, 0x9F7B, 0x9F7A, 0x9F79,
-     0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2, 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475,
-     0x9A60, 0x9C74, 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A, 0x9FA4, 0x7068,
-     0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D, 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B,
-     0x9873, 0x9874, 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15, 0x9E17,
-     0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482, 0x9480, 0x9481, 0x9A69, 0x9A68,
-     0x9B2E, 0x9E19, 0x7229, 0x864B, 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A,
-     0x9E1D, 0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9, 0x88CF, 0x58BB,
-     0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557, 0x2560, 0x256C, 0x2563, 0x255A, 0x2569,
-     0x255D, 0x2552, 0x2564, 0x2555, 0x255E, 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553,
-     0x2565, 0x2556, 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C, 0x2551, 0x2550, 0x256D,
-     0x256E, 0x2570, 0x256F, 0xFFED, 0x0547, 0x92DB, 0x05DF, 0x3FC5, 0x854C, 0x42B5, 0x73EF,
-     0x51B5, 0x3649, 0x4942, 0x89E4, 0x9344, 0x19DB, 0x82EE, 0x3CC8, 0x783C, 0x6744, 0x62DF,
-     0x4933, 0x89AA, 0x02A0, 0x6BB3, 0x1305, 0x4FAB, 0x24ED, 0x5008, 0x6D29, 0x7A84, 0x3600,
-     0x4AB1, 0x2513, 0x5029, 0x037E, 0x5FA4, 0x0380, 0x0347, 0x6EDB, 0x041F, 0x507D, 0x5101,
-     0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0x49A4, 0x0487, 0x5160, 0x33B4, 0x516A, 0x0BFF,
-     0x20FC, 0x02E5, 0x2530, 0x058E, 0x3233, 0x1983, 0x5B82, 0x877D, 0x05B3, 0x3C99, 0x51B2,
-     0x51B8, 0x9D34, 0x51C9, 0x51CF, 0x51D1, 0x3CDC, 0x51D3, 0x4AA6, 0x51B3, 0x51E2, 0x5342,
-     0x51ED, 0x83CD, 0x693E, 0x372D, 0x5F7B, 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294,
-     0x52B9, 0x52C5, 0x7C15, 0x8542, 0x52E0, 0x860D, 0x6B13, 0x5305, 0x8ADE, 0x5549, 0x6ED9,
-     0x3F80, 0x0954, 0x3FEC, 0x5333, 0x5344, 0x0BE2, 0x6CCB, 0x1726, 0x681B, 0x73D5, 0x604A,
-     0x3EAA, 0x38CC, 0x16E8, 0x71DD, 0x44A2, 0x536D, 0x5374, 0x86AB, 0x537E, 0x537F, 0x1596,
-     0x1613, 0x77E6, 0x5393, 0x8A9B, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0x5772, 0x3F59, 0x739C,
-     0x53C1, 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9, 0x3AAB, 0x0B8F, 0x53E0, 0x3FEB, 0x2DA3,
-     0x53F6, 0x0C77, 0x5413, 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D, 0x6B53, 0x0D74, 0x555D,
-     0x548F, 0x54A4, 0x47A6, 0x170D, 0x0EDD, 0x3DB4, 0x0D4D, 0x89BC, 0x2698, 0x5547, 0x4CED,
-     0x542F, 0x7417, 0x5586, 0x55A9, 0x5605, 0x18D7, 0x403A, 0x4552, 0x4435, 0x66B3, 0x10B4,
-     0x5637, 0x66CD, 0x328A, 0x66A4, 0x66AD, 0x564D, 0x564F, 0x78F1, 0x56F1, 0x9787, 0x53FE,
-     0x5700, 0x56EF, 0x56ED, 0x8B66, 0x3623, 0x124F, 0x5746, 0x41A5, 0x6C6E, 0x708B, 0x5742,
-     0x36B1, 0x6C7E, 0x57E6, 0x1416, 0x5803, 0x1454, 0x4363, 0x5826, 0x4BF5, 0x585C, 0x58AA,
-     0x3561, 0x58E0, 0x58DC, 0x123C, 0x58FB, 0x5BFF, 0x5743, 0xA150, 0x4278, 0x93D3, 0x35A1,
-     0x591F, 0x68A6, 0x36C3, 0x6E59, 0x163E, 0x5A24, 0x5553, 0x1692, 0x8505, 0x59C9, 0x0D4E,
-     0x6C81, 0x6D2A, 0x17DC, 0x59D9, 0x17FB, 0x17B2, 0x6DA6, 0x6D71, 0x1828, 0x16D5, 0x59F9,
-     0x6E45, 0x5AAB, 0x5A63, 0x36E6, 0x49A9, 0x5A77, 0x3708, 0x5A96, 0x7465, 0x5AD3, 0x6FA1,
-     0x2554, 0x3D85, 0x1911, 0x3732, 0x16B8, 0x5E83, 0x52D0, 0x5B76, 0x6588, 0x5B7C, 0x7A0E,
-     0x4004, 0x485D, 0x0204, 0x5BD5, 0x6160, 0x1A34, 0x59CC, 0x05A5, 0x5BF3, 0x5B9D, 0x4D10,
-     0x5C05, 0x1B44, 0x5C13, 0x73CE, 0x5C14, 0x1CA5, 0x6B28, 0x5C49, 0x48DD, 0x5C85, 0x5CE9,
-     0x5CEF, 0x5D8B, 0x1DF9, 0x1E37, 0x5D10, 0x5D18, 0x5D46, 0x1EA4, 0x5CBA, 0x5DD7, 0x82FC,
-     0x382D, 0x4901, 0x2049, 0x2173, 0x8287, 0x3836, 0x3BC2, 0x5E2E, 0x6A8A, 0x5E75, 0x5E7A,
-     0x44BC, 0x0CD3, 0x53A6, 0x4EB7, 0x5ED0, 0x53A8, 0x1771, 0x5E09, 0x5EF4, 0x8482, 0x5EF9,
-     0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B, 0x5F0D, 0x01C1, 0xF894, 0x3ADE, 0x48AE, 0x133A,
-     0x5F3A, 0x6888, 0x23D0, 0x5F58, 0x2471, 0x5F63, 0x97BD, 0x6E6E, 0x5F72, 0x9340, 0x8A36,
-     0x5FA7, 0x5DB6, 0x3D5F, 0x5250, 0x1F6A, 0x70F8, 0x2668, 0x91D6, 0x029E, 0x8A29, 0x6031,
-     0x6685, 0x1877, 0x3963, 0x3DC7, 0x3639, 0x5790, 0x27B4, 0x7971, 0x3E40, 0x609E, 0x60A4,
-     0x60B3, 0x4982, 0x498F, 0x7A53, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x8424, 0x6142, 0xF8A6,
-     0x6ED2, 0x6181, 0x51F4, 0x0656, 0x6187, 0x5BAA, 0x3FB7, 0x285F, 0x61D3, 0x8B9D, 0x995D,
-     0x61D0, 0x3932, 0x2980, 0x28C1, 0x6023, 0x615C, 0x651E, 0x638B, 0x0118, 0x62C5, 0x1770,
-     0x62D5, 0x2E0D, 0x636C, 0x49DF, 0x3A17, 0x6438, 0x63F8, 0x138E, 0x17FC, 0x6490, 0x6F8A,
-     0x2E36, 0x9814, 0x408C, 0x571D, 0x64E1, 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D,
-     0x6F16, 0x4A28, 0x4A23, 0x6585, 0x656D, 0x655F, 0x307E, 0x65B5, 0x4940, 0x4B37, 0x65D1,
-     0x40D8, 0x1829, 0x65E0, 0x65E3, 0x5FDF, 0x3400, 0x6618, 0x31F7, 0x31F8, 0x6644, 0x31A4,
-     0x31A5, 0x664B, 0x0E75, 0x6667, 0x51E6, 0x6673, 0x6674, 0x1E3D, 0x3231, 0x85F4, 0x31C8,
-     0x5313, 0x77C5, 0x28F7, 0x99A4, 0x6702, 0x439C, 0x4A21, 0x3B2B, 0x69FA, 0x37C2, 0x675E,
-     0x6767, 0x6762, 0x41CD, 0x90ED, 0x67D7, 0x44E9, 0x6822, 0x6E50, 0x923C, 0x6801, 0x33E6,
-     0x6DA0, 0x685D, 0x346F, 0x69E1, 0x6A0B, 0x8ADF, 0x6973, 0x68C3, 0x35CD, 0x6901, 0x6900,
-     0x3D32, 0x3A01, 0x363C, 0x3B80, 0x67AC, 0x6961, 0x8A4A, 0x42FC, 0x6936, 0x6998, 0x3BA1,
-     0x03C9, 0x8363, 0x5090, 0x69F9, 0x3659, 0x212A, 0x6A45, 0x3703, 0x6A9D, 0x3BF3, 0x67B1,
-     0x6AC8, 0x919C, 0x3C0D, 0x6B1D, 0x0923, 0x60DE, 0x6B35, 0x6B74, 0x27CD, 0x6EB5, 0x3ADB,
-     0x03B5, 0x1958, 0x3740, 0x5421, 0x3B5A, 0x6BE1, 0x3EFC, 0x6BDC, 0x6C37, 0x248B, 0x48F1,
-     0x6B51, 0x6C5A, 0x8226, 0x6C79, 0x3DBC, 0x44C5, 0x3DBD, 0x41A4, 0x490C, 0x4900, 0x3CC9,
-     0x36E5, 0x3CEB, 0x0D32, 0x9B83, 0x31F9, 0x2491, 0x7F8F, 0x6837, 0x6D25, 0x6DA1, 0x6DEB,
-     0x6D96, 0x6D5C, 0x6E7C, 0x6F04, 0x497F, 0x4085, 0x6E72, 0x8533, 0x6F74, 0x51C7, 0x6C9C,
-     0x6E1D, 0x842E, 0x8B21, 0x6E2F, 0x3E2F, 0x7453, 0x3F82, 0x79CC, 0x6E4F, 0x5A91, 0x304B,
-     0x6FF8, 0x370D, 0x6F9D, 0x3E30, 0x6EFA, 0x1497, 0x403D, 0x4555, 0x93F0, 0x6F44, 0x6F5C,
-     0x3D4E, 0x6F74, 0x9170, 0x3D3B, 0x6F9F, 0x4144, 0x6FD3, 0x4091, 0x4155, 0x4039, 0x3FF0,
-     0x3FB4, 0x413F, 0x51DF, 0x4156, 0x4157, 0x4140, 0x61DD, 0x704B, 0x707E, 0x70A7, 0x7081,
-     0x70CC, 0x70D5, 0x70D6, 0x70DF, 0x4104, 0x3DE8, 0x71B4, 0x7196, 0x4277, 0x712B, 0x7145,
-     0x5A88, 0x714A, 0x716E, 0x5C9C, 0x4365, 0x714F, 0x9362, 0x42C1, 0x712C, 0x445A, 0x4A27,
-     0x4A22, 0x71BA, 0x8BE8, 0x70BD, 0x720E, 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341,
-     0x5605, 0x722E, 0x7240, 0x4974, 0x68BD, 0x7255, 0x7257, 0x3E55, 0x3044, 0x680D, 0x6F3D,
-     0x7282, 0x732A, 0x732B, 0x4823, 0x882B, 0x48ED, 0x8804, 0x7328, 0x732E, 0x73CF, 0x73AA,
-     0x0C3A, 0x6A2E, 0x73C9, 0x7449, 0x41E2, 0x16E7, 0x4A24, 0x6623, 0x36C5, 0x49B7, 0x498D,
-     0x49FB, 0x73F7, 0x7415, 0x6903, 0x4A26, 0x7439, 0x05C3, 0x3ED7, 0x745C, 0x28AD, 0x7460,
-     0x8EB2, 0x7447, 0x73E4, 0x7476, 0x83B9, 0x746C, 0x3730, 0x7474, 0x93F1, 0x6A2C, 0x7482,
-     0x4953, 0x4A8C, 0x415F, 0x4A79, 0x8B8F, 0x5B46, 0x8C03, 0x189E, 0x74C8, 0x1988, 0x750E,
-     0x74E9, 0x751E, 0x8ED9, 0x1A4B, 0x5BD7, 0x8EAC, 0x9385, 0x754D, 0x754A, 0x7567, 0x756E,
-     0x4F82, 0x3F04, 0x4D13, 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651, 0x764F,
-     0x766F, 0x7676, 0x63F5, 0x7690, 0x81EF, 0x37F8, 0x6911, 0x690E, 0x76A1, 0x76A5, 0x76B7,
-     0x76CC, 0x6F9F, 0x8462, 0x509D, 0x517D, 0x1E1C, 0x771E, 0x7726, 0x7740, 0x64AF, 0x5220,
-     0x7758, 0x32AC, 0x77AF, 0x8964, 0x8968, 0x16C1, 0x77F4, 0x7809, 0x1376, 0x4A12, 0x68CA,
-     0x78AF, 0x78C7, 0x78D3, 0x96A5, 0x792E, 0x55E0, 0x78D7, 0x7934, 0x78B1, 0x760C, 0x8FB8,
-     0x8884, 0x8B2B, 0x6083, 0x261C, 0x7986, 0x8900, 0x6902, 0x7980, 0x5857, 0x799D, 0x7B39,
-     0x793C, 0x79A9, 0x6E2A, 0x7126, 0x3EA8, 0x79C6, 0x910D, 0x79D4];
-
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
-static BIG5_LEVEL1_HANZI_CODE_POINTS: [u16; 5406] =
-    [0x4E00, 0x4E01, 0x4E03, 0x4E08, 0x4E09, 0x4E0A, 0x4E0B, 0x4E0D, 0x4E10, 0x4E11, 0x4E14,
-     0x4E15, 0x4E16, 0x4E18, 0x4E19, 0x4E1E, 0x4E1F, 0x4E26, 0x4E2B, 0x4E2D, 0x4E30, 0x4E32,
-     0x4E38, 0x4E39, 0x4E3B, 0x4E43, 0x4E45, 0x4E48, 0x4E4B, 0x4E4D, 0x4E4E, 0x4E4F, 0x4E52,
-     0x4E53, 0x4E56, 0x4E58, 0x4E59, 0x4E5A, 0x4E5D, 0x4E5E, 0x4E5F, 0x4E69, 0x4E73, 0x4E7E,
-     0x4E82, 0x4E86, 0x4E88, 0x4E8B, 0x4E8C, 0x4E8E, 0x4E91, 0x4E92, 0x4E94, 0x4E95, 0x4E99,
-     0x4E9B, 0x4E9E, 0x4E9F, 0x4EA1, 0x4EA2, 0x4EA4, 0x4EA5, 0x4EA6, 0x4EA8, 0x4EAB, 0x4EAC,
-     0x4EAD, 0x4EAE, 0x4EB3, 0x4EBA, 0x4EC0, 0x4EC1, 0x4EC3, 0x4EC4, 0x4EC6, 0x4EC7, 0x4ECA,
-     0x4ECB, 0x4ECD, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4ED8, 0x4ED9, 0x4EDE, 0x4EDF, 0x4EE3,
-     0x4EE4, 0x4EE5, 0x4EF0, 0x4EF2, 0x4EF3, 0x4EF6, 0x4EFB, 0x4EFD, 0x4EFF, 0x4F01, 0x4F09,
-     0x4F0A, 0x4F0B, 0x4F0D, 0x4F0F, 0x4F10, 0x4F11, 0x4F15, 0x4F19, 0x4F2F, 0x4F30, 0x4F34,
-     0x4F36, 0x4F38, 0x4F3A, 0x4F3C, 0x4F3D, 0x4F43, 0x4F46, 0x4F47, 0x4F48, 0x4F4D, 0x4F4E,
-     0x4F4F, 0x4F50, 0x4F51, 0x4F54, 0x4F55, 0x4F57, 0x4F59, 0x4F5A, 0x4F5B, 0x4F5C, 0x4F5D,
-     0x4F5E, 0x4F60, 0x4F63, 0x4F69, 0x4F6C, 0x4F6F, 0x4F70, 0x4F73, 0x4F75, 0x4F7A, 0x4F7B,
-     0x4F7E, 0x4F7F, 0x4F83, 0x4F86, 0x4F88, 0x4F8B, 0x4F8D, 0x4F8F, 0x4F91, 0x4F96, 0x4F9B,
-     0x4F9D, 0x4FAE, 0x4FAF, 0x4FB5, 0x4FB6, 0x4FB7, 0x4FBF, 0x4FC2, 0x4FC3, 0x4FC4, 0x4FCA,
-     0x4FCE, 0x4FCF, 0x4FD0, 0x4FD1, 0x4FD7, 0x4FD8, 0x4FDA, 0x4FDD, 0x4FDE, 0x4FDF, 0x4FE0,
-     0x4FE1, 0x4FEE, 0x4FEF, 0x4FF1, 0x4FF3, 0x4FF8, 0x4FFA, 0x4FFE, 0x5000, 0x5006, 0x5009,
-     0x500B, 0x500C, 0x500D, 0x500F, 0x5011, 0x5012, 0x5014, 0x5016, 0x5018, 0x5019, 0x501A,
-     0x501F, 0x5021, 0x5023, 0x5025, 0x5026, 0x5028, 0x5029, 0x502A, 0x502B, 0x502D, 0x503C,
-     0x5043, 0x5047, 0x5049, 0x504C, 0x504E, 0x504F, 0x5055, 0x505A, 0x505C, 0x5065, 0x506D,
-     0x506F, 0x5074, 0x5075, 0x5076, 0x5077, 0x507A, 0x507D, 0x5080, 0x5085, 0x508D, 0x5091,
-     0x5096, 0x5098, 0x5099, 0x509A, 0x50A2, 0x50AC, 0x50AD, 0x50AF, 0x50B2, 0x50B3, 0x50B5,
-     0x50B7, 0x50BB, 0x50BE, 0x50C5, 0x50C7, 0x50CE, 0x50CF, 0x50D1, 0x50D5, 0x50D6, 0x50DA,
-     0x50E5, 0x50E7, 0x50E9, 0x50ED, 0x50EE, 0x50F1, 0x50F5, 0x50F9, 0x50FB, 0x5100, 0x5102,
-     0x5104, 0x5105, 0x5108, 0x5109, 0x5110, 0x5112, 0x5114, 0x5115, 0x5118, 0x511F, 0x5121,
-     0x512A, 0x5132, 0x5133, 0x5137, 0x5138, 0x513B, 0x513C, 0x513F, 0x5140, 0x5141, 0x5143,
-     0x5144, 0x5145, 0x5146, 0x5147, 0x5148, 0x5149, 0x514B, 0x514C, 0x514D, 0x5152, 0x5154,
-     0x5155, 0x5157, 0x515C, 0x5162, 0x5165, 0x5167, 0x5168, 0x5169, 0x516B, 0x516C, 0x516D,
-     0x516E, 0x5171, 0x5175, 0x5176, 0x5177, 0x5178, 0x517C, 0x5180, 0x5188, 0x5189, 0x518A,
-     0x518D, 0x5191, 0x5192, 0x5195, 0x5197, 0x51A0, 0x51A2, 0x51A4, 0x51A5, 0x51AA, 0x51AC,
-     0x51B0, 0x51B6, 0x51B7, 0x51BD, 0x51C6, 0x51CB, 0x51CC, 0x51CD, 0x51DC, 0x51DD, 0x51E0,
-     0x51E1, 0x51F0, 0x51F1, 0x51F3, 0x51F6, 0x51F8, 0x51F9, 0x51FA, 0x51FD, 0x5200, 0x5201,
-     0x5202, 0x5203, 0x5206, 0x5207, 0x5208, 0x520A, 0x520E, 0x5211, 0x5212, 0x5216, 0x5217,
-     0x521D, 0x5224, 0x5225, 0x5228, 0x5229, 0x522A, 0x522E, 0x5230, 0x5236, 0x5237, 0x5238,
-     0x523A, 0x523B, 0x5241, 0x5243, 0x5247, 0x524A, 0x524B, 0x524C, 0x524D, 0x524E, 0x5254,
-     0x5256, 0x525B, 0x525C, 0x525D, 0x5269, 0x526A, 0x526F, 0x5272, 0x5274, 0x5275, 0x5277,
-     0x527D, 0x527F, 0x5282, 0x5283, 0x5287, 0x5288, 0x5289, 0x528A, 0x528D, 0x5291, 0x5293,
-     0x529B, 0x529F, 0x52A0, 0x52A3, 0x52A9, 0x52AA, 0x52AB, 0x52AC, 0x52BB, 0x52BE, 0x52C1,
-     0x52C3, 0x52C7, 0x52C9, 0x52D2, 0x52D5, 0x52D7, 0x52D8, 0x52D9, 0x52DB, 0x52DD, 0x52DE,
-     0x52DF, 0x52E2, 0x52E3, 0x52E4, 0x52E6, 0x52F0, 0x52F3, 0x52F5, 0x52F8, 0x52FA, 0x52FB,
-     0x52FE, 0x52FF, 0x5305, 0x5306, 0x5308, 0x530D, 0x530F, 0x5310, 0x5315, 0x5316, 0x5317,
-     0x5319, 0x531D, 0x5320, 0x5321, 0x5323, 0x532A, 0x532F, 0x5331, 0x5339, 0x533E, 0x533F,
-     0x5340, 0x5341, 0x5343, 0x5345, 0x5347, 0x5348, 0x5349, 0x534A, 0x5351, 0x5352, 0x5353,
-     0x5354, 0x5357, 0x535A, 0x535C, 0x535E, 0x5360, 0x5361, 0x5366, 0x536E, 0x536F, 0x5370,
-     0x5371, 0x5373, 0x5375, 0x5377, 0x5378, 0x5379, 0x537B, 0x537F, 0x5384, 0x539A, 0x539D,
-     0x539F, 0x53A5, 0x53AD, 0x53B2, 0x53BB, 0x53C3, 0x53C8, 0x53C9, 0x53CA, 0x53CB, 0x53CD,
-     0x53D4, 0x53D6, 0x53D7, 0x53DB, 0x53DF, 0x53E2, 0x53E3, 0x53E4, 0x53E5, 0x53E6, 0x53E8,
-     0x53E9, 0x53EA, 0x53EB, 0x53EC, 0x53ED, 0x53EE, 0x53EF, 0x53F0, 0x53F1, 0x53F2, 0x53F3,
-     0x53F5, 0x53F8, 0x53FB, 0x53FC, 0x5401, 0x5403, 0x5404, 0x5406, 0x5408, 0x5409, 0x540A,
-     0x540B, 0x540C, 0x540D, 0x540E, 0x540F, 0x5410, 0x5411, 0x5412, 0x541B, 0x541D, 0x541E,
-     0x541F, 0x5420, 0x5426, 0x5427, 0x5429, 0x542B, 0x542C, 0x542D, 0x542E, 0x5431, 0x5433,
-     0x5435, 0x5436, 0x5438, 0x5439, 0x543B, 0x543C, 0x543E, 0x5440, 0x5442, 0x5443, 0x5446,
-     0x5448, 0x544A, 0x544E, 0x5462, 0x5468, 0x5471, 0x5473, 0x5475, 0x5476, 0x5477, 0x5478,
-     0x547B, 0x547C, 0x547D, 0x5480, 0x5484, 0x5486, 0x548B, 0x548C, 0x548E, 0x5490, 0x5492,
-     0x5495, 0x5496, 0x549A, 0x54A6, 0x54A7, 0x54A8, 0x54A9, 0x54AA, 0x54AB, 0x54AC, 0x54AF,
-     0x54B1, 0x54B3, 0x54B8, 0x54BB, 0x54BD, 0x54BF, 0x54C0, 0x54C1, 0x54C2, 0x54C4, 0x54C7,
-     0x54C8, 0x54C9, 0x54CE, 0x54E1, 0x54E5, 0x54E6, 0x54E8, 0x54E9, 0x54EA, 0x54ED, 0x54EE,
-     0x54F2, 0x54FA, 0x54FC, 0x54FD, 0x5501, 0x5506, 0x5507, 0x5509, 0x550F, 0x5510, 0x5514,
-     0x5527, 0x552C, 0x552E, 0x552F, 0x5531, 0x5533, 0x5537, 0x5538, 0x553E, 0x5541, 0x5543,
-     0x5544, 0x5546, 0x554A, 0x554F, 0x5555, 0x5556, 0x5557, 0x555C, 0x555E, 0x555F, 0x5561,
-     0x5563, 0x5564, 0x5566, 0x556A, 0x557B, 0x557C, 0x557E, 0x5580, 0x5582, 0x5583, 0x5584,
-     0x5587, 0x5589, 0x558A, 0x558B, 0x5594, 0x5598, 0x5599, 0x559A, 0x559C, 0x559D, 0x559F,
-     0x55A7, 0x55AA, 0x55AB, 0x55AC, 0x55AE, 0x55B1, 0x55B2, 0x55B3, 0x55BB, 0x55C5, 0x55C6,
-     0x55C7, 0x55C9, 0x55CE, 0x55D1, 0x55D3, 0x55DA, 0x55DC, 0x55DF, 0x55E1, 0x55E3, 0x55E4,
-     0x55E5, 0x55E6, 0x55E8, 0x55EF, 0x55F6, 0x55F7, 0x55FD, 0x55FE, 0x5600, 0x5606, 0x5608,
-     0x5609, 0x560D, 0x560E, 0x5610, 0x5614, 0x5616, 0x5617, 0x561B, 0x561F, 0x5629, 0x562E,
-     0x562F, 0x5630, 0x5632, 0x5634, 0x5636, 0x5639, 0x563B, 0x563F, 0x564E, 0x5653, 0x5657,
-     0x5659, 0x5662, 0x5664, 0x5665, 0x5668, 0x5669, 0x566A, 0x566B, 0x566C, 0x566F, 0x5671,
-     0x5674, 0x5676, 0x5678, 0x5679, 0x5680, 0x5685, 0x5687, 0x568E, 0x568F, 0x5690, 0x5695,
-     0x56A5, 0x56A8, 0x56AE, 0x56B4, 0x56B6, 0x56B7, 0x56BC, 0x56C0, 0x56C1, 0x56C2, 0x56C8,
-     0x56C9, 0x56CA, 0x56CC, 0x56D1, 0x56DA, 0x56DB, 0x56DD, 0x56DE, 0x56E0, 0x56E4, 0x56EA,
-     0x56EB, 0x56F0, 0x56FA, 0x56FF, 0x5703, 0x5704, 0x5708, 0x5709, 0x570B, 0x570D, 0x5712,
-     0x5713, 0x5716, 0x5718, 0x571F, 0x5728, 0x5729, 0x572C, 0x572D, 0x572F, 0x5730, 0x5733,
-     0x573B, 0x573E, 0x5740, 0x5747, 0x574A, 0x574D, 0x574E, 0x574F, 0x5750, 0x5751, 0x5761,
-     0x5764, 0x5766, 0x5769, 0x576A, 0x5777, 0x577C, 0x5782, 0x5783, 0x578B, 0x5793, 0x57A0,
-     0x57A2, 0x57A3, 0x57AE, 0x57C2, 0x57C3, 0x57CB, 0x57CE, 0x57D4, 0x57DF, 0x57E0, 0x57E4,
-     0x57F7, 0x57F9, 0x57FA, 0x5802, 0x5805, 0x5806, 0x5809, 0x580A, 0x581D, 0x5820, 0x5821,
-     0x5824, 0x582A, 0x582F, 0x5830, 0x5831, 0x5834, 0x5835, 0x584A, 0x584B, 0x584C, 0x5851,
-     0x5852, 0x5854, 0x5857, 0x5858, 0x585A, 0x585E, 0x5862, 0x586B, 0x586D, 0x5875, 0x5879,
-     0x587D, 0x587E, 0x5880, 0x5883, 0x5885, 0x588A, 0x5893, 0x589C, 0x589E, 0x589F, 0x58A6,
-     0x58A8, 0x58A9, 0x58AE, 0x58B3, 0x58BE, 0x58C1, 0x58C5, 0x58C7, 0x58CE, 0x58D1, 0x58D3,
-     0x58D5, 0x58D8, 0x58D9, 0x58DE, 0x58DF, 0x58E2, 0x58E4, 0x58E9, 0x58EB, 0x58EC, 0x58EF,
-     0x58F9, 0x58FA, 0x58FD, 0x590F, 0x5914, 0x5915, 0x5916, 0x5919, 0x591A, 0x591C, 0x5920,
-     0x5922, 0x5924, 0x5925, 0x5927, 0x5929, 0x592A, 0x592B, 0x592D, 0x592E, 0x5931, 0x5937,
-     0x5938, 0x593E, 0x5944, 0x5947, 0x5948, 0x5949, 0x594E, 0x594F, 0x5950, 0x5951, 0x5954,
-     0x5955, 0x5957, 0x5958, 0x595A, 0x5960, 0x5962, 0x5967, 0x5969, 0x596A, 0x596D, 0x596E,
-     0x5973, 0x5974, 0x5976, 0x5978, 0x5979, 0x597D, 0x5981, 0x5982, 0x5983, 0x5984, 0x598A,
-     0x598D, 0x5992, 0x5993, 0x5996, 0x5999, 0x599D, 0x599E, 0x59A3, 0x59A4, 0x59A5, 0x59A8,
-     0x59AE, 0x59AF, 0x59B3, 0x59B9, 0x59BB, 0x59BE, 0x59C5, 0x59C6, 0x59CA, 0x59CB, 0x59CD,
-     0x59D0, 0x59D1, 0x59D2, 0x59D3, 0x59D4, 0x59D8, 0x59DA, 0x59DC, 0x59E3, 0x59E5, 0x59E6,
-     0x59E8, 0x59EA, 0x59EC, 0x59FB, 0x59FF, 0x5A01, 0x5A03, 0x5A09, 0x5A0C, 0x5A11, 0x5A13,
-     0x5A18, 0x5A1B, 0x5A1C, 0x5A1F, 0x5A20, 0x5A23, 0x5A25, 0x5A29, 0x5A36, 0x5A3C, 0x5A40,
-     0x5A41, 0x5A46, 0x5A49, 0x5A4A, 0x5A5A, 0x5A62, 0x5A66, 0x5A6A, 0x5A77, 0x5A7F, 0x5A92,
-     0x5A9A, 0x5A9B, 0x5AA7, 0x5AB2, 0x5AB3, 0x5ABC, 0x5ABD, 0x5ABE, 0x5AC1, 0x5AC2, 0x5AC9,
-     0x5ACC, 0x5AD6, 0x5AD7, 0x5AD8, 0x5AE1, 0x5AE3, 0x5AE6, 0x5AE9, 0x5AF5, 0x5AFB, 0x5B08,
-     0x5B09, 0x5B0B, 0x5B0C, 0x5B1D, 0x5B24, 0x5B2A, 0x5B30, 0x5B34, 0x5B38, 0x5B40, 0x5B43,
-     0x5B50, 0x5B51, 0x5B53, 0x5B54, 0x5B55, 0x5B57, 0x5B58, 0x5B5A, 0x5B5B, 0x5B5C, 0x5B5D,
-     0x5B5F, 0x5B63, 0x5B64, 0x5B69, 0x5B6B, 0x5B70, 0x5B71, 0x5B73, 0x5B75, 0x5B78, 0x5B7A,
-     0x5B7D, 0x5B7F, 0x5B83, 0x5B85, 0x5B87, 0x5B88, 0x5B89, 0x5B8B, 0x5B8C, 0x5B8F, 0x5B97,
-     0x5B98, 0x5B99, 0x5B9A, 0x5B9B, 0x5B9C, 0x5BA2, 0x5BA3, 0x5BA4, 0x5BA5, 0x5BA6, 0x5BAE,
-     0x5BB0, 0x5BB3, 0x5BB4, 0x5BB5, 0x5BB6, 0x5BB8, 0x5BB9, 0x5BBF, 0x5BC2, 0x5BC4, 0x5BC5,
-     0x5BC6, 0x5BC7, 0x5BCC, 0x5BD0, 0x5BD2, 0x5BD3, 0x5BDE, 0x5BDF, 0x5BE1, 0x5BE2, 0x5BE4,
-     0x5BE5, 0x5BE6, 0x5BE7, 0x5BE8, 0x5BE9, 0x5BEB, 0x5BEC, 0x5BEE, 0x5BF0, 0x5BF5, 0x5BF6,
-     0x5BF8, 0x5BFA, 0x5C01, 0x5C04, 0x5C07, 0x5C08, 0x5C09, 0x5C0A, 0x5C0B, 0x5C0D, 0x5C0E,
-     0x5C0F, 0x5C11, 0x5C16, 0x5C1A, 0x5C22, 0x5C24, 0x5C2C, 0x5C31, 0x5C37, 0x5C38, 0x5C39,
-     0x5C3A, 0x5C3C, 0x5C3E, 0x5C3F, 0x5C40, 0x5C41, 0x5C45, 0x5C46, 0x5C48, 0x5C4B, 0x5C4D,
-     0x5C4E, 0x5C4F, 0x5C50, 0x5C51, 0x5C55, 0x5C58, 0x5C5C, 0x5C5D, 0x5C60, 0x5C62, 0x5C64,
-     0x5C65, 0x5C68, 0x5C6C, 0x5C6F, 0x5C71, 0x5C79, 0x5C8C, 0x5C90, 0x5C91, 0x5C94, 0x5CA1,
-     0x5CA9, 0x5CAB, 0x5CB1, 0x5CB3, 0x5CB7, 0x5CB8, 0x5CD2, 0x5CD9, 0x5CE8, 0x5CEA, 0x5CED,
-     0x5CF0, 0x5CF4, 0x5CF6, 0x5CFB, 0x5CFD, 0x5D01, 0x5D06, 0x5D07, 0x5D0E, 0x5D11, 0x5D14,
-     0x5D16, 0x5D17, 0x5D19, 0x5D1B, 0x5D22, 0x5D24, 0x5D27, 0x5D29, 0x5D34, 0x5D47, 0x5D4C,
-     0x5D50, 0x5D69, 0x5D6F, 0x5D84, 0x5D87, 0x5D94, 0x5D9D, 0x5DB8, 0x5DBA, 0x5DBC, 0x5DBD,
-     0x5DC9, 0x5DCD, 0x5DD2, 0x5DD4, 0x5DD6, 0x5DDD, 0x5DDE, 0x5DE1, 0x5DE2, 0x5DE5, 0x5DE6,
-     0x5DE7, 0x5DE8, 0x5DEB, 0x5DEE, 0x5DF1, 0x5DF2, 0x5DF3, 0x5DF4, 0x5DF7, 0x5DFD, 0x5DFE,
-     0x5E02, 0x5E03, 0x5E06, 0x5E0C, 0x5E11, 0x5E15, 0x5E16, 0x5E18, 0x5E1A, 0x5E1B, 0x5E1D,
-     0x5E1F, 0x5E25, 0x5E2B, 0x5E2D, 0x5E33, 0x5E36, 0x5E37, 0x5E38, 0x5E3D, 0x5E40, 0x5E43,
-     0x5E45, 0x5E4C, 0x5E54, 0x5E55, 0x5E57, 0x5E5B, 0x5E5F, 0x5E61, 0x5E62, 0x5E63, 0x5E6B,
-     0x5E72, 0x5E73, 0x5E74, 0x5E76, 0x5E78, 0x5E79, 0x5E7B, 0x5E7C, 0x5E7D, 0x5E7E, 0x5E87,
-     0x5E8A, 0x5E8F, 0x5E95, 0x5E96, 0x5E97, 0x5E9A, 0x5E9C, 0x5EA0, 0x5EA6, 0x5EA7, 0x5EAB,
-     0x5EAD, 0x5EB5, 0x5EB6, 0x5EB7, 0x5EB8, 0x5EBE, 0x5EC1, 0x5EC2, 0x5EC4, 0x5EC8, 0x5EC9,
-     0x5ECA, 0x5ED3, 0x5ED6, 0x5EDA, 0x5EDD, 0x5EDF, 0x5EE0, 0x5EE2, 0x5EE3, 0x5EEC, 0x5EF3,
-     0x5EF6, 0x5EF7, 0x5EFA, 0x5EFE, 0x5EFF, 0x5F01, 0x5F04, 0x5F08, 0x5F0A, 0x5F0B, 0x5F0F,
-     0x5F12, 0x5F13, 0x5F14, 0x5F15, 0x5F17, 0x5F18, 0x5F1B, 0x5F1F, 0x5F26, 0x5F27, 0x5F29,
-     0x5F2D, 0x5F31, 0x5F35, 0x5F37, 0x5F3C, 0x5F46, 0x5F48, 0x5F4A, 0x5F4C, 0x5F4E, 0x5F57,
-     0x5F59, 0x5F5D, 0x5F62, 0x5F64, 0x5F65, 0x5F69, 0x5F6A, 0x5F6B, 0x5F6C, 0x5F6D, 0x5F70,
-     0x5F71, 0x5F77, 0x5F79, 0x5F7C, 0x5F7F, 0x5F80, 0x5F81, 0x5F85, 0x5F87, 0x5F88, 0x5F89,
-     0x5F8A, 0x5F8B, 0x5F8C, 0x5F90, 0x5F91, 0x5F92, 0x5F97, 0x5F98, 0x5F99, 0x5F9C, 0x5F9E,
-     0x5FA0, 0x5FA1, 0x5FA8, 0x5FA9, 0x5FAA, 0x5FAC, 0x5FAE, 0x5FB5, 0x5FB7, 0x5FB9, 0x5FBD,
-     0x5FC3, 0x5FC5, 0x5FCC, 0x5FCD, 0x5FD6, 0x5FD7, 0x5FD8, 0x5FD9, 0x5FDD, 0x5FE0, 0x5FEA,
-     0x5FEB, 0x5FF1, 0x5FF5, 0x5FF8, 0x5FFD, 0x5FFF, 0x600E, 0x600F, 0x6012, 0x6014, 0x6015,
-     0x6016, 0x601B, 0x601D, 0x6020, 0x6021, 0x6025, 0x6027, 0x6028, 0x6029, 0x602A, 0x602B,
-     0x602F, 0x6035, 0x6043, 0x6046, 0x604D, 0x6050, 0x6055, 0x6059, 0x6062, 0x6063, 0x6064,
-     0x6065, 0x6068, 0x6069, 0x606A, 0x606B, 0x606C, 0x606D, 0x606F, 0x6070, 0x607F, 0x6084,
-     0x6085, 0x6089, 0x608C, 0x608D, 0x6094, 0x6096, 0x609A, 0x609F, 0x60A0, 0x60A3, 0x60A8,
-     0x60B2, 0x60B4, 0x60B5, 0x60B6, 0x60B8, 0x60BB, 0x60BC, 0x60BD, 0x60C5, 0x60C6, 0x60C7,
-     0x60CB, 0x60D1, 0x60D5, 0x60D8, 0x60DA, 0x60DC, 0x60DF, 0x60E0, 0x60E1, 0x60E6, 0x60F0,
-     0x60F1, 0x60F3, 0x60F4, 0x60F6, 0x60F9, 0x60FA, 0x60FB, 0x6100, 0x6101, 0x6106, 0x6108,
-     0x6109, 0x610D, 0x610E, 0x610F, 0x6112, 0x6115, 0x611A, 0x611B, 0x611C, 0x611F, 0x6123,
-     0x6127, 0x6134, 0x6137, 0x613E, 0x613F, 0x6144, 0x6147, 0x6148, 0x614B, 0x614C, 0x614D,
-     0x614E, 0x6155, 0x6158, 0x615A, 0x615D, 0x615F, 0x6162, 0x6163, 0x6167, 0x6168, 0x616B,
-     0x616E, 0x6170, 0x6175, 0x6176, 0x6177, 0x617C, 0x617E, 0x6182, 0x618A, 0x618E, 0x6190,
-     0x6191, 0x6194, 0x619A, 0x61A4, 0x61A7, 0x61A9, 0x61AB, 0x61AC, 0x61AE, 0x61B2, 0x61B6,
-     0x61BE, 0x61C2, 0x61C7, 0x61C8, 0x61C9, 0x61CA, 0x61CB, 0x61CD, 0x61E3, 0x61E6, 0x61F2,
-     0x61F5, 0x61F6, 0x61F7, 0x61F8, 0x61FA, 0x61FC, 0x61FE, 0x61FF, 0x6200, 0x6208, 0x620A,
-     0x620C, 0x620D, 0x620E, 0x6210, 0x6211, 0x6212, 0x6215, 0x6216, 0x621A, 0x621B, 0x621F,
-     0x6221, 0x6222, 0x622A, 0x622E, 0x6230, 0x6232, 0x6233, 0x6234, 0x6236, 0x623E, 0x623F,
-     0x6240, 0x6241, 0x6247, 0x6248, 0x6249, 0x624B, 0x624D, 0x624E, 0x6251, 0x6252, 0x6253,
-     0x6254, 0x6258, 0x625B, 0x6263, 0x626D, 0x626E, 0x626F, 0x6273, 0x6276, 0x6279, 0x627C,
-     0x627E, 0x627F, 0x6280, 0x6284, 0x6286, 0x6289, 0x628A, 0x6291, 0x6292, 0x6293, 0x6295,
-     0x6296, 0x6297, 0x6298, 0x62A8, 0x62AB, 0x62AC, 0x62B1, 0x62B5, 0x62B9, 0x62BC, 0x62BD,
-     0x62BF, 0x62C2, 0x62C4, 0x62C6, 0x62C7, 0x62C8, 0x62C9, 0x62CB, 0x62CC, 0x62CD, 0x62CE,
-     0x62D0, 0x62D2, 0x62D3, 0x62D4, 0x62D6, 0x62D7, 0x62D8, 0x62D9, 0x62DA, 0x62DB, 0x62DC,
-     0x62EC, 0x62ED, 0x62EE, 0x62EF, 0x62F1, 0x62F3, 0x62F4, 0x62F7, 0x62FC, 0x62FD, 0x62FE,
-     0x62FF, 0x6301, 0x6302, 0x6307, 0x6308, 0x6309, 0x6311, 0x6316, 0x6328, 0x632A, 0x632B,
-     0x632F, 0x633A, 0x633D, 0x633E, 0x6342, 0x6346, 0x6349, 0x634C, 0x634D, 0x634E, 0x634F,
-     0x6350, 0x6355, 0x6367, 0x6368, 0x6369, 0x636B, 0x6371, 0x6372, 0x6376, 0x6377, 0x637A,
-     0x637B, 0x6380, 0x6383, 0x6384, 0x6388, 0x6389, 0x638C, 0x638F, 0x6392, 0x6396, 0x6398,
-     0x6399, 0x639B, 0x63A0, 0x63A1, 0x63A2, 0x63A3, 0x63A5, 0x63A7, 0x63A8, 0x63A9, 0x63AA,
-     0x63AC, 0x63C0, 0x63C6, 0x63C9, 0x63CD, 0x63CF, 0x63D0, 0x63D2, 0x63D6, 0x63DA, 0x63DB,
-     0x63E1, 0x63E3, 0x63E9, 0x63EA, 0x63ED, 0x63EE, 0x63F4, 0x63F9, 0x6406, 0x640D, 0x640F,
-     0x6413, 0x6414, 0x6416, 0x6417, 0x641C, 0x641E, 0x642A, 0x642C, 0x642D, 0x6434, 0x6436,
-     0x643D, 0x643E, 0x6451, 0x6452, 0x6454, 0x6458, 0x645F, 0x6467, 0x6469, 0x646D, 0x646F,
-     0x6478, 0x6479, 0x647A, 0x647B, 0x6487, 0x6488, 0x6490, 0x6492, 0x6493, 0x6495, 0x6499,
-     0x649A, 0x649E, 0x64A2, 0x64A4, 0x64A5, 0x64A9, 0x64AB, 0x64AC, 0x64AD, 0x64AE, 0x64B0,
-     0x64B2, 0x64B3, 0x64BB, 0x64BC, 0x64BE, 0x64BF, 0x64C1, 0x64C2, 0x64C4, 0x64C5, 0x64C7,
-     0x64CA, 0x64CB, 0x64CD, 0x64CE, 0x64D2, 0x64D4, 0x64D8, 0x64DA, 0x64E0, 0x64E2, 0x64E6,
-     0x64EC, 0x64ED, 0x64F0, 0x64F1, 0x64F2, 0x64F4, 0x64F7, 0x64FA, 0x64FB, 0x64FE, 0x6500,
-     0x6506, 0x650F, 0x6514, 0x6518, 0x6519, 0x651C, 0x651D, 0x6523, 0x6524, 0x652A, 0x652B,
-     0x652C, 0x652F, 0x6536, 0x6538, 0x6539, 0x653B, 0x653E, 0x653F, 0x6545, 0x6548, 0x6549,
-     0x654F, 0x6551, 0x6554, 0x6555, 0x6556, 0x6557, 0x6558, 0x6559, 0x655D, 0x655E, 0x6562,
-     0x6563, 0x6566, 0x656C, 0x6572, 0x6574, 0x6575, 0x6577, 0x6578, 0x6582, 0x6583, 0x6587,
-     0x6590, 0x6591, 0x6595, 0x6597, 0x6599, 0x659B, 0x659C, 0x659F, 0x65A1, 0x65A4, 0x65A5,
-     0x65A7, 0x65AB, 0x65AC, 0x65AF, 0x65B0, 0x65B7, 0x65B9, 0x65BC, 0x65BD, 0x65C1, 0x65C5,
-     0x65CB, 0x65CC, 0x65CE, 0x65CF, 0x65D6, 0x65D7, 0x65E2, 0x65E5, 0x65E6, 0x65E8, 0x65E9,
-     0x65EC, 0x65ED, 0x65F1, 0x65FA, 0x6600, 0x6602, 0x6606, 0x6607, 0x660A, 0x660C, 0x660E,
-     0x660F, 0x6613, 0x6614, 0x6615, 0x661F, 0x6620, 0x6624, 0x6625, 0x6627, 0x6628, 0x662D,
-     0x662F, 0x6631, 0x6641, 0x6642, 0x6643, 0x6645, 0x6649, 0x664C, 0x664F, 0x6652, 0x665A,
-     0x665D, 0x665E, 0x6664, 0x6666, 0x6668, 0x666E, 0x666F, 0x6670, 0x6674, 0x6676, 0x6677,
-     0x667A, 0x667E, 0x6684, 0x6687, 0x6688, 0x6689, 0x668D, 0x6691, 0x6696, 0x6697, 0x6698,
-     0x669D, 0x66A2, 0x66A8, 0x66AB, 0x66AE, 0x66B1, 0x66B4, 0x66B8, 0x66B9, 0x66C4, 0x66C6,
-     0x66C7, 0x66C9, 0x66D6, 0x66D9, 0x66DC, 0x66DD, 0x66E0, 0x66E6, 0x66E9, 0x66EC, 0x66F0,
-     0x66F2, 0x66F3, 0x66F4, 0x66F7, 0x66F8, 0x66F9, 0x66FC, 0x66FE, 0x66FF, 0x6700, 0x6703,
-     0x6708, 0x6709, 0x670B, 0x670D, 0x6714, 0x6715, 0x6717, 0x671B, 0x671D, 0x671F, 0x6726,
-     0x6727, 0x6728, 0x672A, 0x672B, 0x672C, 0x672D, 0x672E, 0x6731, 0x6734, 0x6735, 0x673D,
-     0x6746, 0x6749, 0x674E, 0x674F, 0x6750, 0x6751, 0x6753, 0x6756, 0x6757, 0x675C, 0x675E,
-     0x675F, 0x6760, 0x676A, 0x676D, 0x676F, 0x6770, 0x6771, 0x6772, 0x6773, 0x6775, 0x6777,
-     0x677C, 0x677E, 0x677F, 0x6787, 0x6789, 0x678B, 0x6790, 0x6793, 0x6795, 0x6797, 0x679A,
-     0x679C, 0x679D, 0x67AF, 0x67B0, 0x67B4, 0x67B6, 0x67B8, 0x67C4, 0x67CF, 0x67D0, 0x67D1,
-     0x67D2, 0x67D3, 0x67D4, 0x67D9, 0x67DA, 0x67DD, 0x67DE, 0x67E2, 0x67E5, 0x67E9, 0x67EC,
-     0x67EF, 0x67F1, 0x67F3, 0x67F4, 0x67F5, 0x67FF, 0x6813, 0x6817, 0x6818, 0x6821, 0x6829,
-     0x682A, 0x6838, 0x6839, 0x683C, 0x683D, 0x6840, 0x6841, 0x6842, 0x6843, 0x6845, 0x6846,
-     0x6848, 0x684C, 0x6850, 0x6851, 0x6853, 0x6854, 0x6876, 0x687F, 0x6881, 0x6882, 0x6883,
-     0x6885, 0x6886, 0x6893, 0x6894, 0x6897, 0x689D, 0x689F, 0x68A1, 0x68A2, 0x68A7, 0x68A8,
-     0x68AD, 0x68AF, 0x68B0, 0x68B1, 0x68B3, 0x68B5, 0x68C4, 0x68C9, 0x68CB, 0x68CD, 0x68D2,
-     0x68D5, 0x68D7, 0x68D8, 0x68DA, 0x68DF, 0x68E0, 0x68E3, 0x68E7, 0x68EE, 0x68F2, 0x68F5,
-     0x68F9, 0x68FA, 0x68FB, 0x6905, 0x690D, 0x690E, 0x6912, 0x6930, 0x694A, 0x6953, 0x6954,
-     0x695A, 0x695B, 0x695D, 0x695E, 0x6960, 0x6963, 0x6968, 0x696B, 0x696D, 0x696E, 0x6975,
-     0x6977, 0x6979, 0x6982, 0x6986, 0x6994, 0x6995, 0x699B, 0x699C, 0x69A3, 0x69A6, 0x69A8,
-     0x69AB, 0x69AD, 0x69AE, 0x69B4, 0x69B7, 0x69BB, 0x69C1, 0x69C3, 0x69CB, 0x69CC, 0x69CD,
-     0x69D0, 0x69D3, 0x69E8, 0x69ED, 0x69F3, 0x69FD, 0x6A01, 0x6A02, 0x6A05, 0x6A0A, 0x6A11,
-     0x6A13, 0x6A19, 0x6A1E, 0x6A1F, 0x6A21, 0x6A23, 0x6A35, 0x6A38, 0x6A39, 0x6A3A, 0x6A3D,
-     0x6A44, 0x6A47, 0x6A48, 0x6A4B, 0x6A58, 0x6A59, 0x6A5F, 0x6A61, 0x6A62, 0x6A6B, 0x6A7E,
-     0x6A80, 0x6A84, 0x6A90, 0x6A94, 0x6A97, 0x6A9C, 0x6AA0, 0x6AA2, 0x6AA3, 0x6AAC, 0x6AAE,
-     0x6AAF, 0x6AB3, 0x6AB8, 0x6ABB, 0x6AC2, 0x6AC3, 0x6AD3, 0x6ADA, 0x6ADB, 0x6ADD, 0x6AE5,
-     0x6AEC, 0x6AFA, 0x6AFB, 0x6B04, 0x6B0A, 0x6B10, 0x6B16, 0x6B20, 0x6B21, 0x6B23, 0x6B32,
-     0x6B3A, 0x6B3D, 0x6B3E, 0x6B47, 0x6B49, 0x6B4C, 0x6B4E, 0x6B50, 0x6B59, 0x6B5C, 0x6B5F,
-     0x6B61, 0x6B62, 0x6B63, 0x6B64, 0x6B65, 0x6B66, 0x6B67, 0x6B6A, 0x6B72, 0x6B77, 0x6B78,
-     0x6B79, 0x6B7B, 0x6B7F, 0x6B83, 0x6B86, 0x6B89, 0x6B8A, 0x6B96, 0x6B98, 0x6BA4, 0x6BAE,
-     0x6BAF, 0x6BB2, 0x6BB5, 0x6BB7, 0x6BBA, 0x6BBC, 0x6BBF, 0x6BC0, 0x6BC5, 0x6BC6, 0x6BCB,
-     0x6BCD, 0x6BCF, 0x6BD2, 0x6BD3, 0x6BD4, 0x6BD7, 0x6BDA, 0x6BDB, 0x6BEB, 0x6BEC, 0x6BEF,
-     0x6BFD, 0x6C05, 0x6C08, 0x6C0F, 0x6C10, 0x6C11, 0x6C13, 0x6C16, 0x6C1B, 0x6C1F, 0x6C23,
-     0x6C24, 0x6C26, 0x6C27, 0x6C28, 0x6C2B, 0x6C2C, 0x6C2E, 0x6C2F, 0x6C33, 0x6C34, 0x6C38,
-     0x6C3E, 0x6C40, 0x6C41, 0x6C42, 0x6C4D, 0x6C4E, 0x6C50, 0x6C55, 0x6C57, 0x6C59, 0x6C5B,
-     0x6C5D, 0x6C5E, 0x6C5F, 0x6C60, 0x6C61, 0x6C68, 0x6C6A, 0x6C70, 0x6C72, 0x6C74, 0x6C76,
-     0x6C7A, 0x6C7D, 0x6C7E, 0x6C81, 0x6C82, 0x6C83, 0x6C85, 0x6C86, 0x6C88, 0x6C89, 0x6C8C,
-     0x6C8D, 0x6C90, 0x6C92, 0x6C94, 0x6C96, 0x6C98, 0x6C99, 0x6C9B, 0x6CAB, 0x6CAC, 0x6CAE,
-     0x6CB1, 0x6CB3, 0x6CB8, 0x6CB9, 0x6CBB, 0x6CBC, 0x6CBD, 0x6CBE, 0x6CBF, 0x6CC1, 0x6CC4,
-     0x6CC5, 0x6CC9, 0x6CCA, 0x6CCC, 0x6CD3, 0x6CD5, 0x6CD6, 0x6CD7, 0x6CDB, 0x6CDC, 0x6CE0,
-     0x6CE1, 0x6CE2, 0x6CE3, 0x6CE5, 0x6CE8, 0x6CEF, 0x6CF0, 0x6CF1, 0x6CF3, 0x6CF5, 0x6D0B,
-     0x6D0C, 0x6D0E, 0x6D17, 0x6D1B, 0x6D1E, 0x6D25, 0x6D27, 0x6D29, 0x6D2A, 0x6D2B, 0x6D2E,
-     0x6D31, 0x6D32, 0x6D35, 0x6D36, 0x6D38, 0x6D39, 0x6D3B, 0x6D3D, 0x6D3E, 0x6D41, 0x6D59,
-     0x6D5A, 0x6D65, 0x6D66, 0x6D69, 0x6D6A, 0x6D6C, 0x6D6E, 0x6D74, 0x6D77, 0x6D78, 0x6D79,
-     0x6D85, 0x6D87, 0x6D88, 0x6D89, 0x6D8A, 0x6D8C, 0x6D8E, 0x6D93, 0x6D94, 0x6D95, 0x6DAA,
-     0x6DAE, 0x6DAF, 0x6DB2, 0x6DB5, 0x6DB8, 0x6DBC, 0x6DBF, 0x6DC4, 0x6DC5, 0x6DC6, 0x6DC7,
-     0x6DCB, 0x6DCC, 0x6DD1, 0x6DD2, 0x6DD8, 0x6DD9, 0x6DDA, 0x6DDE, 0x6DE1, 0x6DE4, 0x6DE6,
-     0x6DE8, 0x6DEA, 0x6DEB, 0x6DEC, 0x6DEE, 0x6DF1, 0x6DF3, 0x6DF5, 0x6DF7, 0x6DF9, 0x6DFA,
-     0x6DFB, 0x6E05, 0x6E19, 0x6E1A, 0x6E1B, 0x6E1D, 0x6E20, 0x6E21, 0x6E23, 0x6E24, 0x6E25,
-     0x6E26, 0x6E2C, 0x6E2D, 0x6E2F, 0x6E32, 0x6E34, 0x6E38, 0x6E3A, 0x6E3E, 0x6E43, 0x6E44,
-     0x6E4A, 0x6E4D, 0x6E4E, 0x6E54, 0x6E56, 0x6E58, 0x6E5B, 0x6E5F, 0x6E63, 0x6E67, 0x6E69,
-     0x6E6E, 0x6E6F, 0x6E72, 0x6E89, 0x6E90, 0x6E96, 0x6E98, 0x6E9C, 0x6E9D, 0x6EA2, 0x6EA5,
-     0x6EA7, 0x6EAA, 0x6EAB, 0x6EAF, 0x6EB4, 0x6EB6, 0x6EBA, 0x6EBC, 0x6EC2, 0x6EC4, 0x6EC5,
-     0x6EC7, 0x6ECB, 0x6ECC, 0x6ED1, 0x6ED3, 0x6ED4, 0x6ED5, 0x6EEC, 0x6EEF, 0x6EF2, 0x6EF4,
-     0x6EF7, 0x6EFE, 0x6EFF, 0x6F01, 0x6F02, 0x6F06, 0x6F0F, 0x6F13, 0x6F14, 0x6F15, 0x6F20,
-     0x6F22, 0x6F23, 0x6F29, 0x6F2A, 0x6F2B, 0x6F2C, 0x6F2F, 0x6F31, 0x6F32, 0x6F33, 0x6F38,
-     0x6F3E, 0x6F3F, 0x6F51, 0x6F54, 0x6F58, 0x6F5B, 0x6F5F, 0x6F60, 0x6F64, 0x6F66, 0x6F6D,
-     0x6F6E, 0x6F6F, 0x6F70, 0x6F78, 0x6F7A, 0x6F7C, 0x6F80, 0x6F84, 0x6F86, 0x6F88, 0x6F8E,
-     0x6F97, 0x6FA0, 0x6FA1, 0x6FA4, 0x6FA6, 0x6FA7, 0x6FB1, 0x6FB3, 0x6FB4, 0x6FB6, 0x6FB9,
-     0x6FC0, 0x6FC1, 0x6FC2, 0x6FC3, 0x6FD5, 0x6FD8, 0x6FDB, 0x6FDF, 0x6FE0, 0x6FE1, 0x6FE4,
-     0x6FE9, 0x6FEB, 0x6FEC, 0x6FEE, 0x6FEF, 0x6FF0, 0x6FF1, 0x6FFA, 0x6FFE, 0x7006, 0x7009,
-     0x700B, 0x700F, 0x7011, 0x7015, 0x7018, 0x701A, 0x701B, 0x701D, 0x701F, 0x7028, 0x7030,
-     0x7032, 0x703E, 0x704C, 0x7051, 0x7058, 0x705E, 0x7063, 0x7064, 0x706B, 0x7070, 0x7076,
-     0x7078, 0x707C, 0x707D, 0x708A, 0x708E, 0x7092, 0x7095, 0x7099, 0x70A4, 0x70AB, 0x70AC,
-     0x70AD, 0x70AE, 0x70AF, 0x70B3, 0x70B8, 0x70BA, 0x70C8, 0x70CA, 0x70CF, 0x70D8, 0x70D9,
-     0x70E4, 0x70EF, 0x70F9, 0x70FD, 0x7109, 0x710A, 0x7119, 0x711A, 0x711C, 0x7121, 0x7126,
-     0x7130, 0x7136, 0x7146, 0x7149, 0x714C, 0x714E, 0x7156, 0x7159, 0x715C, 0x715E, 0x7164,
-     0x7165, 0x7166, 0x7167, 0x7168, 0x7169, 0x716C, 0x716E, 0x717D, 0x7184, 0x718A, 0x7192,
-     0x7194, 0x7199, 0x719F, 0x71A8, 0x71AC, 0x71B1, 0x71B9, 0x71BE, 0x71C3, 0x71C4, 0x71C8,
-     0x71C9, 0x71CE, 0x71D0, 0x71D2, 0x71D5, 0x71D9, 0x71DC, 0x71DF, 0x71E0, 0x71E5, 0x71E6,
-     0x71E7, 0x71EC, 0x71ED, 0x71EE, 0x71F4, 0x71F8, 0x71FB, 0x71FC, 0x71FE, 0x7206, 0x720D,
-     0x7210, 0x721B, 0x7228, 0x722A, 0x722C, 0x722D, 0x7230, 0x7235, 0x7236, 0x7238, 0x7239,
-     0x723A, 0x723B, 0x723D, 0x723E, 0x7246, 0x7247, 0x7248, 0x724C, 0x7252, 0x7256, 0x7258,
-     0x7259, 0x725B, 0x725D, 0x725F, 0x7260, 0x7261, 0x7262, 0x7267, 0x7269, 0x726F, 0x7272,
-     0x7274, 0x7279, 0x727D, 0x7280, 0x7281, 0x7284, 0x7292, 0x7296, 0x729B, 0x72A2, 0x72A7,
-     0x72AC, 0x72AF, 0x72C0, 0x72C2, 0x72C4, 0x72CE, 0x72D0, 0x72D7, 0x72D9, 0x72E0, 0x72E1,
-     0x72E9, 0x72F7, 0x72F8, 0x72F9, 0x72FC, 0x72FD, 0x7313, 0x7316, 0x7319, 0x731B, 0x731C,
-     0x7325, 0x7329, 0x7334, 0x7336, 0x7337, 0x733E, 0x733F, 0x7344, 0x7345, 0x734E, 0x7350,
-     0x7357, 0x7368, 0x7370, 0x7372, 0x7375, 0x7377, 0x7378, 0x737A, 0x737B, 0x7380, 0x7384,
-     0x7386, 0x7387, 0x7389, 0x738B, 0x7396, 0x739F, 0x73A5, 0x73A8, 0x73A9, 0x73AB, 0x73B2,
-     0x73B3, 0x73B7, 0x73BB, 0x73C0, 0x73CA, 0x73CD, 0x73DE, 0x73E0, 0x73EA, 0x73ED, 0x73EE,
-     0x73FE, 0x7403, 0x7405, 0x7406, 0x7409, 0x740A, 0x740D, 0x741B, 0x7422, 0x7425, 0x7426,
-     0x7428, 0x742A, 0x742F, 0x7433, 0x7434, 0x7435, 0x7436, 0x743A, 0x743F, 0x7441, 0x7455,
-     0x7459, 0x745A, 0x745B, 0x745C, 0x745E, 0x745F, 0x7463, 0x7464, 0x7469, 0x746A, 0x746D,
-     0x746F, 0x7470, 0x747E, 0x7480, 0x7483, 0x748B, 0x7498, 0x749C, 0x749E, 0x749F, 0x74A3,
-     0x74A6, 0x74A7, 0x74A8, 0x74A9, 0x74B0, 0x74BD, 0x74BF, 0x74CA, 0x74CF, 0x74D4, 0x74D6,
-     0x74DA, 0x74DC, 0x74E0, 0x74E2, 0x74E3, 0x74E4, 0x74E6, 0x74F6, 0x74F7, 0x7504, 0x750C,
-     0x750D, 0x7515, 0x7518, 0x751A, 0x751C, 0x751F, 0x7522, 0x7525, 0x7526, 0x7528, 0x7529,
-     0x752B, 0x752C, 0x752D, 0x7530, 0x7531, 0x7532, 0x7533, 0x7537, 0x7538, 0x753D, 0x754B,
-     0x754C, 0x754E, 0x754F, 0x7554, 0x7559, 0x755A, 0x755C, 0x755D, 0x7562, 0x7565, 0x7566,
-     0x756A, 0x756B, 0x7570, 0x7576, 0x7578, 0x757F, 0x7586, 0x7587, 0x758A, 0x758B, 0x758F,
-     0x7591, 0x7599, 0x759A, 0x759D, 0x75A2, 0x75A3, 0x75A4, 0x75A5, 0x75AB, 0x75B2, 0x75B3,
-     0x75B5, 0x75B8, 0x75B9, 0x75BC, 0x75BD, 0x75BE, 0x75C2, 0x75C5, 0x75C7, 0x75CA, 0x75CD,
-     0x75D4, 0x75D5, 0x75D8, 0x75D9, 0x75DB, 0x75DE, 0x75E0, 0x75E2, 0x75E3, 0x75F0, 0x75F1,
-     0x75F2, 0x75F3, 0x75F4, 0x75FA, 0x75FF, 0x7600, 0x7601, 0x7609, 0x760B, 0x760D, 0x7613,
-     0x761F, 0x7620, 0x7621, 0x7622, 0x7624, 0x7626, 0x7627, 0x7629, 0x7634, 0x7638, 0x763A,
-     0x7642, 0x7646, 0x764C, 0x7652, 0x7656, 0x7658, 0x765F, 0x7661, 0x7662, 0x7665, 0x7669,
-     0x766C, 0x766E, 0x7671, 0x7672, 0x7678, 0x767B, 0x767C, 0x767D, 0x767E, 0x7682, 0x7684,
-     0x7686, 0x7687, 0x7688, 0x768B, 0x768E, 0x7693, 0x7696, 0x769A, 0x76AE, 0x76B0, 0x76B4,
-     0x76BA, 0x76BF, 0x76C2, 0x76C3, 0x76C5, 0x76C6, 0x76C8, 0x76CA, 0x76CD, 0x76CE, 0x76D2,
-     0x76D4, 0x76DB, 0x76DC, 0x76DE, 0x76DF, 0x76E1, 0x76E3, 0x76E4, 0x76E5, 0x76E7, 0x76EA,
-     0x76EE, 0x76EF, 0x76F2, 0x76F4, 0x76F8, 0x76F9, 0x76FC, 0x76FE, 0x7701, 0x7707, 0x7709,
-     0x770B, 0x771F, 0x7720, 0x7728, 0x7729, 0x7736, 0x7737, 0x7738, 0x773A, 0x773C, 0x773E,
-     0x774F, 0x775B, 0x775C, 0x775E, 0x7761, 0x7762, 0x7763, 0x7765, 0x7766, 0x7768, 0x776A,
-     0x776B, 0x776C, 0x7779, 0x777D, 0x777F, 0x7784, 0x7787, 0x778B, 0x778C, 0x778E, 0x7791,
-     0x779E, 0x779F, 0x77A0, 0x77A5, 0x77A7, 0x77AA, 0x77AC, 0x77AD, 0x77B0, 0x77B3, 0x77BB,
-     0x77BC, 0x77BD, 0x77BF, 0x77C7, 0x77D3, 0x77D7, 0x77DA, 0x77DB, 0x77DC, 0x77E2, 0x77E3,
-     0x77E5, 0x77E9, 0x77ED, 0x77EE, 0x77EF, 0x77F3, 0x77FD, 0x7802, 0x780C, 0x780D, 0x7814,
-     0x781D, 0x781F, 0x7820, 0x7825, 0x7827, 0x782D, 0x7830, 0x7832, 0x7834, 0x7837, 0x7838,
-     0x7843, 0x784E, 0x785D, 0x786B, 0x786C, 0x786F, 0x787C, 0x787F, 0x7889, 0x788C, 0x788E,
-     0x7891, 0x7893, 0x7897, 0x7898, 0x789F, 0x78A3, 0x78A7, 0x78A9, 0x78B0, 0x78B3, 0x78BA,
-     0x78BC, 0x78BE, 0x78C1, 0x78C5, 0x78CA, 0x78CB, 0x78D0, 0x78D5, 0x78DA, 0x78E7, 0x78E8,
-     0x78EC, 0x78EF, 0x78F4, 0x78F7, 0x78FA, 0x7901, 0x790E, 0x7919, 0x7926, 0x792A, 0x792B,
-     0x792C, 0x793A, 0x793E, 0x7940, 0x7941, 0x7946, 0x7947, 0x7948, 0x7949, 0x7950, 0x7955,
-     0x7956, 0x7957, 0x795A, 0x795D, 0x795E, 0x795F, 0x7960, 0x7965, 0x7968, 0x796D, 0x797A,
-     0x797F, 0x7981, 0x798D, 0x798E, 0x798F, 0x79A6, 0x79A7, 0x79AA, 0x79AE, 0x79B1, 0x79B3,
-     0x79B9, 0x79BA, 0x79BD, 0x79BE, 0x79BF, 0x79C0, 0x79C1, 0x79C8, 0x79C9, 0x79CB, 0x79D1,
-     0x79D2, 0x79D8, 0x79DF, 0x79E3, 0x79E4, 0x79E6, 0x79E7, 0x79E9, 0x79FB, 0x7A00, 0x7A05,
-     0x7A08, 0x7A0B, 0x7A0D, 0x7A14, 0x7A1A, 0x7A1C, 0x7A1E, 0x7A1F, 0x7A20, 0x7A2E, 0x7A31,
-     0x7A37, 0x7A3B, 0x7A3C, 0x7A3D, 0x7A3F, 0x7A40, 0x7A46, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E,
-     0x7A57, 0x7A60, 0x7A61, 0x7A62, 0x7A69, 0x7A6B, 0x7A74, 0x7A76, 0x7A79, 0x7A7A, 0x7A7F,
-     0x7A81, 0x7A84, 0x7A88, 0x7A92, 0x7A95, 0x7A96, 0x7A97, 0x7A98, 0x7A9F, 0x7AA0, 0x7AA9,
-     0x7AAA, 0x7AAE, 0x7AAF, 0x7ABA, 0x7ABF, 0x7AC4, 0x7AC5, 0x7AC7, 0x7ACA, 0x7ACB, 0x7AD9,
-     0x7ADF, 0x7AE0, 0x7AE3, 0x7AE5, 0x7AED, 0x7AEF, 0x7AF6, 0x7AF9, 0x7AFA, 0x7AFD, 0x7AFF,
-     0x7B06, 0x7B11, 0x7B19, 0x7B1B, 0x7B1E, 0x7B20, 0x7B26, 0x7B28, 0x7B2C, 0x7B2E, 0x7B46,
-     0x7B49, 0x7B4B, 0x7B4D, 0x7B4F, 0x7B50, 0x7B51, 0x7B52, 0x7B54, 0x7B56, 0x7B60, 0x7B67,
-     0x7B6E, 0x7B75, 0x7B77, 0x7B84, 0x7B87, 0x7B8B, 0x7B8F, 0x7B94, 0x7B95, 0x7B97, 0x7B9D,
-     0x7BA0, 0x7BA1, 0x7BAD, 0x7BB1, 0x7BB4, 0x7BB8, 0x7BC0, 0x7BC1, 0x7BC4, 0x7BC6, 0x7BC7,
-     0x7BC9, 0x7BCC, 0x7BD9, 0x7BDB, 0x7BE0, 0x7BE1, 0x7BE4, 0x7BE6, 0x7BE9, 0x7BF7, 0x7BFE,
-     0x7C07, 0x7C0C, 0x7C0D, 0x7C11, 0x7C1E, 0x7C21, 0x7C23, 0x7C27, 0x7C2A, 0x7C2B, 0x7C37,
-     0x7C38, 0x7C3D, 0x7C3E, 0x7C3F, 0x7C40, 0x7C43, 0x7C4C, 0x7C4D, 0x7C50, 0x7C5F, 0x7C60,
-     0x7C63, 0x7C64, 0x7C65, 0x7C6C, 0x7C6E, 0x7C72, 0x7C73, 0x7C7D, 0x7C89, 0x7C92, 0x7C95,
-     0x7C97, 0x7C9F, 0x7CA5, 0x7CB1, 0x7CB3, 0x7CB5, 0x7CB9, 0x7CBD, 0x7CBE, 0x7CCA, 0x7CD5,
-     0x7CD6, 0x7CD9, 0x7CDC, 0x7CDD, 0x7CDE, 0x7CDF, 0x7CE0, 0x7CE2, 0x7CE7, 0x7CEF, 0x7CF0,
-     0x7CF8, 0x7CFB, 0x7CFE, 0x7D00, 0x7D02, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D09, 0x7D0A,
-     0x7D0B, 0x7D0D, 0x7D10, 0x7D14, 0x7D15, 0x7D17, 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D20,
-     0x7D21, 0x7D22, 0x7D2B, 0x7D2E, 0x7D2F, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D39, 0x7D3C,
-     0x7D40, 0x7D42, 0x7D43, 0x7D44, 0x7D46, 0x7D50, 0x7D55, 0x7D5B, 0x7D5E, 0x7D61, 0x7D62,
-     0x7D66, 0x7D68, 0x7D6E, 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D79, 0x7D81, 0x7D8F, 0x7D91,
-     0x7D93, 0x7D9C, 0x7D9E, 0x7DA0, 0x7DA2, 0x7DAC, 0x7DAD, 0x7DB0, 0x7DB1, 0x7DB2, 0x7DB4,
-     0x7DB5, 0x7DB8, 0x7DBA, 0x7DBB, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC7, 0x7DCA, 0x7DD2, 0x7DD8,
-     0x7DD9, 0x7DDA, 0x7DDD, 0x7DDE, 0x7DE0, 0x7DE3, 0x7DE8, 0x7DE9, 0x7DEC, 0x7DEF, 0x7DF2,
-     0x7DF4, 0x7DF9, 0x7DFB, 0x7E08, 0x7E09, 0x7E0A, 0x7E10, 0x7E11, 0x7E1B, 0x7E1D, 0x7E1E,
-     0x7E23, 0x7E2B, 0x7E2E, 0x7E2F, 0x7E31, 0x7E32, 0x7E34, 0x7E35, 0x7E37, 0x7E39, 0x7E3D,
-     0x7E3E, 0x7E3F, 0x7E41, 0x7E43, 0x7E45, 0x7E46, 0x7E48, 0x7E52, 0x7E54, 0x7E55, 0x7E59,
-     0x7E5A, 0x7E5E, 0x7E61, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6D, 0x7E73, 0x7E79, 0x7E7C, 0x7E7D,
-     0x7E82, 0x7E8C, 0x7E8F, 0x7E93, 0x7E94, 0x7E96, 0x7E9C, 0x7F36, 0x7F38, 0x7F3A, 0x7F3D,
-     0x7F44, 0x7F48, 0x7F4C, 0x7F50, 0x7F54, 0x7F55, 0x7F5F, 0x7F69, 0x7F6A, 0x7F6E, 0x7F70,
-     0x7F72, 0x7F75, 0x7F77, 0x7F79, 0x7F85, 0x7F88, 0x7F8A, 0x7F8B, 0x7F8C, 0x7F8E, 0x7F94,
-     0x7F9A, 0x7F9E, 0x7FA4, 0x7FA8, 0x7FA9, 0x7FAF, 0x7FB2, 0x7FB6, 0x7FB8, 0x7FB9, 0x7FBC,
-     0x7FBD, 0x7FBF, 0x7FC1, 0x7FC5, 0x7FCC, 0x7FCE, 0x7FD2, 0x7FD4, 0x7FD5, 0x7FDF, 0x7FE0,
-     0x7FE1, 0x7FE9, 0x7FEE, 0x7FF0, 0x7FF1, 0x7FF3, 0x7FF9, 0x7FFB, 0x7FFC, 0x8000, 0x8001,
-     0x8003, 0x8004, 0x8005, 0x8006, 0x800B, 0x800C, 0x800D, 0x8010, 0x8011, 0x8012, 0x8015,
-     0x8017, 0x8018, 0x8019, 0x801C, 0x8026, 0x8028, 0x8033, 0x8036, 0x803D, 0x803F, 0x8046,
-     0x804A, 0x8052, 0x8056, 0x8058, 0x805A, 0x805E, 0x806F, 0x8070, 0x8071, 0x8072, 0x8073,
-     0x8076, 0x8077, 0x807D, 0x807E, 0x807F, 0x8084, 0x8085, 0x8086, 0x8087, 0x8089, 0x808B,
-     0x808C, 0x8093, 0x8096, 0x8098, 0x809A, 0x809B, 0x809D, 0x80A1, 0x80A2, 0x80A5, 0x80A9,
-     0x80AA, 0x80AB, 0x80AF, 0x80B1, 0x80B2, 0x80B4, 0x80BA, 0x80C3, 0x80C4, 0x80CC, 0x80CE,
-     0x80D6, 0x80DA, 0x80DB, 0x80DD, 0x80DE, 0x80E1, 0x80E4, 0x80E5, 0x80ED, 0x80EF, 0x80F0,
-     0x80F1, 0x80F3, 0x80F4, 0x80F8, 0x80FC, 0x80FD, 0x8102, 0x8105, 0x8106, 0x8108, 0x810A,
-     0x8116, 0x8123, 0x8124, 0x8129, 0x812B, 0x812F, 0x8130, 0x8139, 0x813E, 0x8146, 0x814B,
-     0x814C, 0x814E, 0x8150, 0x8151, 0x8153, 0x8154, 0x8155, 0x8165, 0x8166, 0x816B, 0x816E,
-     0x8170, 0x8171, 0x8173, 0x8174, 0x8178, 0x8179, 0x817A, 0x817F, 0x8180, 0x8182, 0x8188,
-     0x818A, 0x818F, 0x8198, 0x819A, 0x819B, 0x819C, 0x819D, 0x81A0, 0x81A8, 0x81A9, 0x81B3,
-     0x81BA, 0x81BD, 0x81BE, 0x81BF, 0x81C0, 0x81C2, 0x81C3, 0x81C6, 0x81C9, 0x81CD, 0x81CF,
-     0x81D8, 0x81DA, 0x81DF, 0x81E2, 0x81E3, 0x81E5, 0x81E7, 0x81E8, 0x81EA, 0x81EC, 0x81ED,
-     0x81F3, 0x81F4, 0x81FA, 0x81FB, 0x81FC, 0x81FE, 0x8200, 0x8202, 0x8205, 0x8207, 0x8208,
-     0x8209, 0x820A, 0x820C, 0x820D, 0x8210, 0x8212, 0x8214, 0x821B, 0x821C, 0x821E, 0x821F,
-     0x8222, 0x8228, 0x822A, 0x822B, 0x822C, 0x8235, 0x8236, 0x8237, 0x8239, 0x8247, 0x824B,
-     0x8258, 0x8259, 0x8266, 0x826E, 0x826F, 0x8271, 0x8272, 0x8277, 0x827E, 0x828B, 0x828D,
-     0x8292, 0x8299, 0x829D, 0x829F, 0x82A3, 0x82A5, 0x82AC, 0x82AD, 0x82AF, 0x82B0, 0x82B1,
-     0x82B3, 0x82B7, 0x82B8, 0x82B9, 0x82BB, 0x82BD, 0x82BE, 0x82D1, 0x82D2, 0x82D3, 0x82D4,
-     0x82D7, 0x82DB, 0x82DC, 0x82DE, 0x82DF, 0x82E3, 0x82E5, 0x82E6, 0x82E7, 0x82EF, 0x82F1,
-     0x8301, 0x8302, 0x8303, 0x8304, 0x8305, 0x8306, 0x8309, 0x8317, 0x8328, 0x832B, 0x8331,
-     0x8332, 0x8334, 0x8335, 0x8336, 0x8338, 0x8339, 0x8340, 0x8343, 0x8349, 0x834A, 0x834F,
-     0x8350, 0x8352, 0x8354, 0x8377, 0x8378, 0x837B, 0x837C, 0x8386, 0x8389, 0x838A, 0x838E,
-     0x8392, 0x8393, 0x8396, 0x8398, 0x839E, 0x83A0, 0x83A2, 0x83A7, 0x83AB, 0x83BD, 0x83C1,
-     0x83C5, 0x83CA, 0x83CC, 0x83D4, 0x83DC, 0x83DF, 0x83E0, 0x83E9, 0x83EF, 0x83F0, 0x83F1,
-     0x83F2, 0x83F4, 0x83F8, 0x83FD, 0x8403, 0x8404, 0x8407, 0x840A, 0x840B, 0x840C, 0x840D,
-     0x840E, 0x842C, 0x8431, 0x8435, 0x8438, 0x843C, 0x843D, 0x8446, 0x8449, 0x8457, 0x845B,
-     0x8461, 0x8463, 0x8466, 0x8469, 0x846B, 0x846C, 0x846D, 0x8475, 0x8477, 0x8482, 0x8490,
-     0x8499, 0x849C, 0x849E, 0x84B2, 0x84B8, 0x84BC, 0x84BF, 0x84C0, 0x84C4, 0x84C6, 0x84C9,
-     0x84CA, 0x84CB, 0x84D1, 0x84D3, 0x84EC, 0x84EE, 0x84FF, 0x8506, 0x8511, 0x8513, 0x8514,
-     0x8517, 0x851A, 0x8521, 0x8523, 0x8525, 0x852C, 0x852D, 0x853D, 0x8543, 0x8548, 0x8549,
-     0x854A, 0x8559, 0x855E, 0x8568, 0x8569, 0x856A, 0x856D, 0x857E, 0x8584, 0x8587, 0x858A,
-     0x8591, 0x8594, 0x859B, 0x859C, 0x85A6, 0x85A8, 0x85A9, 0x85AA, 0x85AF, 0x85B0, 0x85B9,
-     0x85BA, 0x85C9, 0x85CD, 0x85CF, 0x85D0, 0x85D5, 0x85DD, 0x85E4, 0x85E5, 0x85E9, 0x85EA,
-     0x85F7, 0x85F9, 0x85FA, 0x85FB, 0x8606, 0x8607, 0x860A, 0x860B, 0x8611, 0x8617, 0x861A,
-     0x862D, 0x8638, 0x863F, 0x864E, 0x8650, 0x8654, 0x8655, 0x865B, 0x865C, 0x865E, 0x865F,
-     0x8667, 0x866B, 0x8671, 0x8679, 0x867A, 0x867B, 0x868A, 0x868C, 0x8693, 0x869C, 0x86A3,
-     0x86A4, 0x86A9, 0x86AA, 0x86AF, 0x86B1, 0x86B5, 0x86B6, 0x86C0, 0x86C4, 0x86C6, 0x86C7,
-     0x86C9, 0x86CB, 0x86D0, 0x86D4, 0x86D9, 0x86DB, 0x86DE, 0x86DF, 0x86E4, 0x86ED, 0x86F9,
-     0x86FB, 0x86FE, 0x8700, 0x8702, 0x8703, 0x8706, 0x8707, 0x8708, 0x870A, 0x8713, 0x8718,
-     0x871C, 0x8722, 0x8725, 0x8729, 0x8734, 0x8737, 0x873B, 0x873F, 0x874C, 0x8753, 0x8755,
-     0x8757, 0x8759, 0x8760, 0x8766, 0x8768, 0x8774, 0x8776, 0x8778, 0x8782, 0x8783, 0x878D,
-     0x879E, 0x879F, 0x87A2, 0x87AB, 0x87B3, 0x87BA, 0x87BB, 0x87C0, 0x87C6, 0x87C8, 0x87CB,
-     0x87D1, 0x87D2, 0x87E0, 0x87EC, 0x87EF, 0x87F2, 0x87F9, 0x87FB, 0x87FE, 0x8805, 0x880D,
-     0x8814, 0x8815, 0x881F, 0x8821, 0x8822, 0x8823, 0x8831, 0x8836, 0x8839, 0x883B, 0x8840,
-     0x884C, 0x884D, 0x8853, 0x8857, 0x8859, 0x885B, 0x885D, 0x8861, 0x8862, 0x8863, 0x8868,
-     0x886B, 0x8870, 0x8877, 0x8879, 0x887D, 0x8881, 0x8882, 0x8888, 0x888B, 0x888D, 0x8892,
-     0x8896, 0x889E, 0x88AB, 0x88B1, 0x88C1, 0x88C2, 0x88CA, 0x88D2, 0x88D4, 0x88D5, 0x88D8,
-     0x88D9, 0x88DC, 0x88DD, 0x88DF, 0x88E1, 0x88E8, 0x88EF, 0x88F3, 0x88F4, 0x88F8, 0x88F9,
-     0x88FD, 0x8902, 0x8907, 0x890A, 0x8910, 0x8912, 0x8913, 0x8915, 0x891A, 0x8921, 0x8925,
-     0x892A, 0x892B, 0x8932, 0x8936, 0x8938, 0x893B, 0x893D, 0x8944, 0x8956, 0x895E, 0x895F,
-     0x8960, 0x8964, 0x896A, 0x896C, 0x896F, 0x8972, 0x897F, 0x8981, 0x8983, 0x8986, 0x898B,
-     0x898F, 0x8993, 0x8996, 0x899C, 0x89A6, 0x89AA, 0x89AC, 0x89B2, 0x89BA, 0x89BD, 0x89C0,
-     0x89D2, 0x89D4, 0x89E3, 0x89F4, 0x89F8, 0x89FC, 0x8A00, 0x8A02, 0x8A03, 0x8A08, 0x8A0A,
-     0x8A0C, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A13, 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A1B,
-     0x8A1D, 0x8A1F, 0x8A22, 0x8A23, 0x8A25, 0x8A2A, 0x8A2D, 0x8A31, 0x8A34, 0x8A36, 0x8A3A,
-     0x8A3B, 0x8A3C, 0x8A3E, 0x8A41, 0x8A46, 0x8A50, 0x8A54, 0x8A55, 0x8A56, 0x8A5B, 0x8A5E,
-     0x8A60, 0x8A62, 0x8A63, 0x8A66, 0x8A68, 0x8A69, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E, 0x8A70,
-     0x8A71, 0x8A72, 0x8A73, 0x8A79, 0x8A7B, 0x8A7C, 0x8A85, 0x8A87, 0x8A8C, 0x8A8D, 0x8A91,
-     0x8A93, 0x8A95, 0x8A98, 0x8A9A, 0x8A9E, 0x8AA0, 0x8AA1, 0x8AA3, 0x8AA4, 0x8AA5, 0x8AA6,
-     0x8AA7, 0x8AA8, 0x8AAA, 0x8AB0, 0x8AB2, 0x8AB6, 0x8AB9, 0x8ABC, 0x8ABF, 0x8AC2, 0x8AC4,
-     0x8AC7, 0x8AC9, 0x8ACB, 0x8ACD, 0x8AD2, 0x8AD6, 0x8ADB, 0x8ADC, 0x8AE6, 0x8AE7, 0x8AEB,
-     0x8AED, 0x8AEE, 0x8AF1, 0x8AF3, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AFA, 0x8AFC, 0x8AFE, 0x8B00,
-     0x8B01, 0x8B02, 0x8B04, 0x8B0A, 0x8B0E, 0x8B10, 0x8B17, 0x8B19, 0x8B1B, 0x8B1D, 0x8B20,
-     0x8B28, 0x8B2B, 0x8B2C, 0x8B39, 0x8B41, 0x8B46, 0x8B49, 0x8B4E, 0x8B4F, 0x8B58, 0x8B59,
-     0x8B5A, 0x8B5C, 0x8B5F, 0x8B66, 0x8B6B, 0x8B6C, 0x8B6F, 0x8B70, 0x8B74, 0x8B77, 0x8B7D,
-     0x8B80, 0x8B8A, 0x8B92, 0x8B93, 0x8B96, 0x8B9A, 0x8B9C, 0x8C37, 0x8C3F, 0x8C41, 0x8C46,
-     0x8C48, 0x8C49, 0x8C4C, 0x8C4E, 0x8C50, 0x8C54, 0x8C55, 0x8C5A, 0x8C61, 0x8C62, 0x8C6A,
-     0x8C6B, 0x8C6C, 0x8C6D, 0x8C73, 0x8C79, 0x8C7A, 0x8C82, 0x8C89, 0x8C8A, 0x8C8C, 0x8C8D,
-     0x8C93, 0x8C9D, 0x8C9E, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB,
-     0x8CAC, 0x8CAF, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB6, 0x8CB7, 0x8CB8, 0x8CBB, 0x8CBC, 0x8CBD,
-     0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5, 0x8CC7, 0x8CC8, 0x8CCA, 0x8CD1,
-     0x8CD2, 0x8CD3, 0x8CDC, 0x8CDE, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE6, 0x8CEA,
-     0x8CEC, 0x8CED, 0x8CF4, 0x8CF8, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD, 0x8D05, 0x8D08, 0x8D0A,
-     0x8D0D, 0x8D0F, 0x8D13, 0x8D16, 0x8D17, 0x8D1B, 0x8D64, 0x8D66, 0x8D67, 0x8D6B, 0x8D6D,
-     0x8D70, 0x8D73, 0x8D74, 0x8D77, 0x8D81, 0x8D85, 0x8D8A, 0x8D95, 0x8D99, 0x8D9F, 0x8DA3,
-     0x8DA8, 0x8DB3, 0x8DB4, 0x8DBA, 0x8DBE, 0x8DC6, 0x8DCB, 0x8DCC, 0x8DCE, 0x8DD1, 0x8DDA,
-     0x8DDB, 0x8DDD, 0x8DDF, 0x8DE1, 0x8DE4, 0x8DE6, 0x8DE8, 0x8DEA, 0x8DEF, 0x8DF3, 0x8DFA,
-     0x8DFC, 0x8E0F, 0x8E10, 0x8E1D, 0x8E1E, 0x8E1F, 0x8E21, 0x8E22, 0x8E29, 0x8E2B, 0x8E31,
-     0x8E34, 0x8E35, 0x8E39, 0x8E42, 0x8E44, 0x8E48, 0x8E49, 0x8E4A, 0x8E4B, 0x8E55, 0x8E59,
-     0x8E5F, 0x8E63, 0x8E64, 0x8E66, 0x8E6C, 0x8E72, 0x8E74, 0x8E76, 0x8E7A, 0x8E7C, 0x8E81,
-     0x8E82, 0x8E85, 0x8E87, 0x8E89, 0x8E8A, 0x8E8B, 0x8E8D, 0x8E91, 0x8E93, 0x8EA1, 0x8EAA,
-     0x8EAB, 0x8EAC, 0x8EB2, 0x8EBA, 0x8EC0, 0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED2,
-     0x8ED4, 0x8EDB, 0x8EDF, 0x8EF8, 0x8EFB, 0x8EFC, 0x8EFE, 0x8F03, 0x8F09, 0x8F0A, 0x8F12,
-     0x8F13, 0x8F14, 0x8F15, 0x8F1B, 0x8F1C, 0x8F1D, 0x8F1E, 0x8F1F, 0x8F25, 0x8F26, 0x8F29,
-     0x8F2A, 0x8F2F, 0x8F33, 0x8F38, 0x8F3B, 0x8F3E, 0x8F3F, 0x8F42, 0x8F44, 0x8F45, 0x8F49,
-     0x8F4D, 0x8F4E, 0x8F54, 0x8F5F, 0x8F61, 0x8F9B, 0x8F9C, 0x8F9F, 0x8FA3, 0x8FA6, 0x8FA8,
-     0x8FAD, 0x8FAE, 0x8FAF, 0x8FB0, 0x8FB1, 0x8FB2, 0x8FC2, 0x8FC4, 0x8FC5, 0x8FC6, 0x8FCE,
-     0x8FD1, 0x8FD4, 0x8FE2, 0x8FE4, 0x8FE5, 0x8FE6, 0x8FE8, 0x8FEA, 0x8FEB, 0x8FED, 0x8FF0,
-     0x8FF4, 0x8FF7, 0x8FF8, 0x8FFA, 0x8FFD, 0x9000, 0x9001, 0x9003, 0x9005, 0x9006, 0x900D,
-     0x900F, 0x9010, 0x9014, 0x9015, 0x9016, 0x9017, 0x9019, 0x901A, 0x901B, 0x901D, 0x901E,
-     0x901F, 0x9020, 0x9022, 0x9023, 0x902E, 0x9031, 0x9032, 0x9035, 0x9036, 0x9038, 0x903C,
-     0x903E, 0x9041, 0x9042, 0x9047, 0x904A, 0x904B, 0x904D, 0x904E, 0x904F, 0x9050, 0x9051,
-     0x9053, 0x9054, 0x9055, 0x9058, 0x9059, 0x905B, 0x905C, 0x905D, 0x905E, 0x9060, 0x9062,
-     0x9063, 0x9068, 0x9069, 0x906D, 0x906E, 0x9072, 0x9074, 0x9075, 0x9077, 0x9078, 0x907A,
-     0x907C, 0x907D, 0x907F, 0x9080, 0x9081, 0x9082, 0x9083, 0x9084, 0x9087, 0x9088, 0x908A,
-     0x908B, 0x908F, 0x9090, 0x9091, 0x9095, 0x90A2, 0x90A3, 0x90A6, 0x90AA, 0x90B1, 0x90B5,
-     0x90B6, 0x90B8, 0x90C1, 0x90C3, 0x90CA, 0x90CE, 0x90DD, 0x90E1, 0x90E2, 0x90E8, 0x90ED,
-     0x90F5, 0x90FD, 0x90FE, 0x9102, 0x9109, 0x9112, 0x9117, 0x9118, 0x9119, 0x911E, 0x9127,
-     0x912D, 0x9130, 0x9131, 0x9134, 0x9139, 0x9148, 0x9149, 0x914A, 0x914B, 0x914C, 0x914D,
-     0x9152, 0x9157, 0x9163, 0x9165, 0x9169, 0x916A, 0x916C, 0x9174, 0x9175, 0x9177, 0x9178,
-     0x9183, 0x9187, 0x9189, 0x918B, 0x9192, 0x919C, 0x919E, 0x91A3, 0x91AB, 0x91AC, 0x91AE,
-     0x91B1, 0x91B4, 0x91BA, 0x91C0, 0x91C1, 0x91C5, 0x91C6, 0x91C7, 0x91C9, 0x91CB, 0x91CC,
-     0x91CD, 0x91CE, 0x91CF, 0x91D0, 0x91D1, 0x91D7, 0x91D8, 0x91D9, 0x91DC, 0x91DD, 0x91E3,
-     0x91E6, 0x91E7, 0x91E9, 0x91ED, 0x91F5, 0x9207, 0x9209, 0x920D, 0x9210, 0x9211, 0x9214,
-     0x9215, 0x921E, 0x9223, 0x9234, 0x9237, 0x9238, 0x9239, 0x923D, 0x923E, 0x923F, 0x9240,
-     0x9245, 0x9249, 0x924B, 0x924D, 0x9251, 0x9257, 0x925A, 0x925B, 0x9264, 0x9278, 0x927B,
-     0x927C, 0x9280, 0x9285, 0x9291, 0x9293, 0x9296, 0x9298, 0x929C, 0x92A8, 0x92AC, 0x92B2,
-     0x92B3, 0x92B7, 0x92BB, 0x92BC, 0x92C1, 0x92C5, 0x92C7, 0x92D2, 0x92E4, 0x92EA, 0x92F0,
-     0x92F8, 0x92FC, 0x9304, 0x9310, 0x9315, 0x9318, 0x9319, 0x931A, 0x9320, 0x9321, 0x9322,
-     0x9326, 0x9328, 0x932B, 0x932E, 0x932F, 0x9333, 0x9336, 0x934A, 0x934B, 0x934D, 0x9354,
-     0x935A, 0x935B, 0x9365, 0x936C, 0x9370, 0x9375, 0x937E, 0x9382, 0x938A, 0x9394, 0x9396,
-     0x9397, 0x9398, 0x939A, 0x93A2, 0x93AC, 0x93AE, 0x93B0, 0x93B3, 0x93C3, 0x93C8, 0x93CD,
-     0x93D1, 0x93D6, 0x93D7, 0x93D8, 0x93DC, 0x93DD, 0x93DF, 0x93E1, 0x93E2, 0x93E4, 0x93E8,
-     0x93FD, 0x9403, 0x9418, 0x942B, 0x942E, 0x9432, 0x9433, 0x9435, 0x9438, 0x943A, 0x9444,
-     0x9451, 0x9452, 0x9460, 0x9463, 0x9464, 0x946A, 0x9470, 0x9472, 0x9477, 0x947C, 0x947D,
-     0x947E, 0x947F, 0x9577, 0x9580, 0x9582, 0x9583, 0x9589, 0x958B, 0x958E, 0x958F, 0x9591,
-     0x9592, 0x9593, 0x9594, 0x9598, 0x95A1, 0x95A3, 0x95A4, 0x95A5, 0x95A8, 0x95A9, 0x95AD,
-     0x95B1, 0x95BB, 0x95C6, 0x95C8, 0x95CA, 0x95CB, 0x95CC, 0x95D0, 0x95D4, 0x95D5, 0x95D6,
-     0x95DC, 0x95E1, 0x95E2, 0x961C, 0x9621, 0x962A, 0x962C, 0x962E, 0x9631, 0x9632, 0x963B,
-     0x963F, 0x9640, 0x9642, 0x9644, 0x964B, 0x964C, 0x964D, 0x9650, 0x9658, 0x965B, 0x965D,
-     0x965E, 0x9661, 0x9662, 0x9663, 0x9664, 0x966A, 0x966C, 0x9670, 0x9672, 0x9673, 0x9674,
-     0x9675, 0x9676, 0x9677, 0x9678, 0x967D, 0x9684, 0x9685, 0x9686, 0x968A, 0x968B, 0x968D,
-     0x968E, 0x9694, 0x9695, 0x9698, 0x9699, 0x969B, 0x969C, 0x96A7, 0x96A8, 0x96AA, 0x96B1,
-     0x96B4, 0x96B8, 0x96B9, 0x96BB, 0x96C0, 0x96C1, 0x96C4, 0x96C5, 0x96C6, 0x96C7, 0x96C9,
-     0x96CA, 0x96CB, 0x96CC, 0x96CD, 0x96D2, 0x96D5, 0x96D6, 0x96D9, 0x96DB, 0x96DC, 0x96DE,
-     0x96E2, 0x96E3, 0x96E8, 0x96E9, 0x96EA, 0x96EF, 0x96F2, 0x96F6, 0x96F7, 0x96F9, 0x96FB,
-     0x9700, 0x9704, 0x9706, 0x9707, 0x9709, 0x970D, 0x970E, 0x970F, 0x9711, 0x9713, 0x9716,
-     0x971C, 0x971E, 0x9724, 0x9727, 0x972A, 0x9730, 0x9732, 0x9738, 0x9739, 0x973D, 0x973E,
-     0x9742, 0x9744, 0x9748, 0x9752, 0x9756, 0x975B, 0x975C, 0x975E, 0x9760, 0x9761, 0x9762,
-     0x9766, 0x9768, 0x9769, 0x9774, 0x9776, 0x977C, 0x9785, 0x978B, 0x978D, 0x978F, 0x9798,
-     0x97A0, 0x97A3, 0x97A6, 0x97AD, 0x97C1, 0x97C3, 0x97C6, 0x97C9, 0x97CB, 0x97CC, 0x97D3,
-     0x97DC, 0x97ED, 0x97F3, 0x97F6, 0x97F9, 0x97FB, 0x97FF, 0x9801, 0x9802, 0x9803, 0x9805,
-     0x9806, 0x9808, 0x980A, 0x980C, 0x9810, 0x9811, 0x9812, 0x9813, 0x9817, 0x9818, 0x981C,
-     0x9821, 0x9824, 0x982B, 0x982D, 0x9830, 0x9837, 0x9838, 0x9839, 0x983B, 0x9846, 0x984C,
-     0x984D, 0x984E, 0x984F, 0x9853, 0x9858, 0x985B, 0x985E, 0x9865, 0x9867, 0x986B, 0x986F,
-     0x9870, 0x9871, 0x98A8, 0x98AF, 0x98B1, 0x98B3, 0x98B6, 0x98BA, 0x98BC, 0x98C4, 0x98DB,
-     0x98DF, 0x98E2, 0x98E7, 0x98E9, 0x98EA, 0x98ED, 0x98EF, 0x98F2, 0x98F4, 0x98FC, 0x98FD,
-     0x98FE, 0x9903, 0x9905, 0x9909, 0x990A, 0x990C, 0x9910, 0x9912, 0x9913, 0x9918, 0x991A,
-     0x991B, 0x991E, 0x9921, 0x9928, 0x992E, 0x9935, 0x993D, 0x993E, 0x993F, 0x9945, 0x9949,
-     0x9951, 0x9952, 0x9955, 0x9957, 0x995C, 0x995E, 0x9996, 0x9999, 0x99A5, 0x99A8, 0x99AC,
-     0x99AD, 0x99AE, 0x99B1, 0x99B3, 0x99B4, 0x99C1, 0x99D0, 0x99D1, 0x99D2, 0x99D5, 0x99D9,
-     0x99DB, 0x99DD, 0x99DF, 0x99E2, 0x99ED, 0x99F1, 0x99FF, 0x9A01, 0x9A0E, 0x9A16, 0x9A19,
-     0x9A2B, 0x9A30, 0x9A35, 0x9A37, 0x9A3E, 0x9A40, 0x9A43, 0x9A45, 0x9A4D, 0x9A55, 0x9A57,
-     0x9A5A, 0x9A5B, 0x9A5F, 0x9A62, 0x9A65, 0x9A6A, 0x9AA8, 0x9AAF, 0x9AB0, 0x9AB7, 0x9AB8,
-     0x9ABC, 0x9AC1, 0x9ACF, 0x9AD1, 0x9AD2, 0x9AD3, 0x9AD4, 0x9AD6, 0x9AD8, 0x9AE1, 0x9AE6,
-     0x9AED, 0x9AEE, 0x9AEF, 0x9AFB, 0x9B03, 0x9B06, 0x9B0D, 0x9B1A, 0x9B22, 0x9B23, 0x9B25,
-     0x9B27, 0x9B28, 0x9B31, 0x9B32, 0x9B3C, 0x9B41, 0x9B42, 0x9B44, 0x9B45, 0x9B4D, 0x9B4E,
-     0x9B4F, 0x9B51, 0x9B54, 0x9B58, 0x9B5A, 0x9B6F, 0x9B77, 0x9B91, 0x9BAA, 0x9BAB, 0x9BAD,
-     0x9BAE, 0x9BC0, 0x9BC8, 0x9BC9, 0x9BCA, 0x9BD6, 0x9BDB, 0x9BE7, 0x9BE8, 0x9BFD, 0x9C0D,
-     0x9C13, 0x9C25, 0x9C2D, 0x9C31, 0x9C3B, 0x9C3E, 0x9C49, 0x9C54, 0x9C56, 0x9C57, 0x9C5F,
-     0x9C77, 0x9C78, 0x9CE5, 0x9CE9, 0x9CF3, 0x9CF4, 0x9CF6, 0x9D03, 0x9D06, 0x9D09, 0x9D12,
-     0x9D15, 0x9D1B, 0x9D23, 0x9D26, 0x9D28, 0x9D3B, 0x9D3F, 0x9D51, 0x9D5D, 0x9D60, 0x9D61,
-     0x9D6A, 0x9D6C, 0x9D72, 0x9D89, 0x9DAF, 0x9DB4, 0x9DB8, 0x9DC2, 0x9DD3, 0x9DD7, 0x9DE5,
-     0x9DF9, 0x9DFA, 0x9E1A, 0x9E1B, 0x9E1E, 0x9E75, 0x9E79, 0x9E7C, 0x9E7D, 0x9E7F, 0x9E82,
-     0x9E8B, 0x9E92, 0x9E93, 0x9E97, 0x9E9D, 0x9E9F, 0x9EA5, 0x9EA9, 0x9EB4, 0x9EB5, 0x9EBB,
-     0x9EBC, 0x9EBE, 0x9EC3, 0x9ECC, 0x9ECD, 0x9ECE, 0x9ECF, 0x9ED1, 0x9ED4, 0x9ED8, 0x9EDB,
-     0x9EDC, 0x9EDD, 0x9EDE, 0x9EE0, 0x9EE8, 0x9EEF, 0x9EF4, 0x9EF7, 0x9F07, 0x9F0E, 0x9F13,
-     0x9F15, 0x9F19, 0x9F20, 0x9F2C, 0x9F2F, 0x9F34, 0x9F3B, 0x9F3E, 0x9F4A, 0x9F4B, 0x9F52,
-     0x9F5C, 0x9F5F, 0x9F61, 0x9F63, 0x9F66, 0x9F67, 0x9F6A, 0x9F6C, 0x9F72, 0x9F77, 0x9F8D,
-     0x9F90, 0x9F94, 0x9F9C, 0x9FB0, 0x9FB1];
-
-#[cfg(not(feature = "no-static-ideograph-encoder-tables"))]
-static BIG5_LEVEL1_HANZI_BYTES: [[u8; 2]; 5406] = [[0xA4, 0x40],
-                                                   [0xA4, 0x42],
-                                                   [0xA4, 0x43],
-                                                   [0xA4, 0x56],
-                                                   [0xA4, 0x54],
-                                                   [0xA4, 0x57],
-                                                   [0xA4, 0x55],
-                                                   [0xA4, 0xA3],
-                                                   [0xA4, 0xA2],
-                                                   [0xA4, 0xA1],
-                                                   [0xA5, 0x42],
-                                                   [0xA5, 0x41],
-                                                   [0xA5, 0x40],
-                                                   [0xA5, 0x43],
-                                                   [0xA4, 0xFE],
-                                                   [0xA5, 0xE0],
-                                                   [0xA5, 0xE1],
-                                                   [0xA8, 0xC3],
-                                                   [0xA4, 0x58],
-                                                   [0xA4, 0xA4],
-                                                   [0xA4, 0xA5],
-                                                   [0xA6, 0xEA],
-                                                   [0xA4, 0x59],
-                                                   [0xA4, 0xA6],
-                                                   [0xA5, 0x44],
-                                                   [0xA4, 0x44],
-                                                   [0xA4, 0x5B],
-                                                   [0xA4, 0x5C],
-                                                   [0xA4, 0xA7],
-                                                   [0xA5, 0x45],
-                                                   [0xA5, 0x47],
-                                                   [0xA5, 0x46],
-                                                   [0xA5, 0xE2],
-                                                   [0xA5, 0xE3],
-                                                   [0xA8, 0xC4],
-                                                   [0xAD, 0xBC],
-                                                   [0xA4, 0x41],
-                                                   [0xC8, 0x7B],
-                                                   [0xA4, 0x45],
-                                                   [0xA4, 0x5E],
-                                                   [0xA4, 0x5D],
-                                                   [0xA5, 0xE4],
-                                                   [0xA8, 0xC5],
-                                                   [0xB0, 0xAE],
-                                                   [0xB6, 0xC3],
-                                                   [0xA4, 0x46],
-                                                   [0xA4, 0xA9],
-                                                   [0xA8, 0xC6],
-                                                   [0xA4, 0x47],
-                                                   [0xA4, 0x5F],
-                                                   [0xA4, 0xAA],
-                                                   [0xA4, 0xAC],
-                                                   [0xA4, 0xAD],
-                                                   [0xA4, 0xAB],
-                                                   [0xA5, 0xE5],
-                                                   [0xA8, 0xC7],
-                                                   [0xA8, 0xC8],
-                                                   [0xAB, 0x45],
-                                                   [0xA4, 0x60],
-                                                   [0xA4, 0xAE],
-                                                   [0xA5, 0xE6],
-                                                   [0xA5, 0xE8],
-                                                   [0xA5, 0xE7],
-                                                   [0xA6, 0xEB],
-                                                   [0xA8, 0xC9],
-                                                   [0xA8, 0xCA],
-                                                   [0xAB, 0x46],
-                                                   [0xAB, 0x47],
-                                                   [0xAD, 0xBD],
-                                                   [0xA4, 0x48],
-                                                   [0xA4, 0xB0],
-                                                   [0xA4, 0xAF],
-                                                   [0xA4, 0xB1],
-                                                   [0xA4, 0xB7],
-                                                   [0xA4, 0xB2],
-                                                   [0xA4, 0xB3],
-                                                   [0xA4, 0xB5],
-                                                   [0xA4, 0xB6],
-                                                   [0xA4, 0xB4],
-                                                   [0xA5, 0x4A],
-                                                   [0xA5, 0x4B],
-                                                   [0xA5, 0x4C],
-                                                   [0xA5, 0x4D],
-                                                   [0xA5, 0x49],
-                                                   [0xA5, 0x50],
-                                                   [0xA5, 0x51],
-                                                   [0xA5, 0x61],
-                                                   [0xA5, 0x4E],
-                                                   [0xA5, 0x4F],
-                                                   [0xA5, 0x48],
-                                                   [0xA5, 0xF5],
-                                                   [0xA5, 0xF2],
-                                                   [0xA5, 0xF6],
-                                                   [0xA5, 0xF3],
-                                                   [0xA5, 0xF4],
-                                                   [0xA5, 0xF7],
-                                                   [0xA5, 0xE9],
-                                                   [0xA5, 0xF8],
-                                                   [0xA5, 0xEA],
-                                                   [0xA5, 0xEC],
-                                                   [0xA5, 0xF9],
-                                                   [0xA5, 0xEE],
-                                                   [0xA5, 0xF1],
-                                                   [0xA5, 0xEF],
-                                                   [0xA5, 0xF0],
-                                                   [0xA5, 0xED],
-                                                   [0xA5, 0xEB],
-                                                   [0xA7, 0x42],
-                                                   [0xA6, 0xF4],
-                                                   [0xA6, 0xF1],
-                                                   [0xA7, 0x44],
-                                                   [0xA6, 0xF9],
-                                                   [0xA6, 0xF8],
-                                                   [0xA6, 0xFC],
-                                                   [0xA6, 0xF7],
-                                                   [0xA6, 0xFA],
-                                                   [0xA6, 0xFD],
-                                                   [0xA6, 0xEE],
-                                                   [0xA7, 0x47],
-                                                   [0xA6, 0xEC],
-                                                   [0xA7, 0x43],
-                                                   [0xA6, 0xED],
-                                                   [0xA6, 0xF5],
-                                                   [0xA6, 0xF6],
-                                                   [0xA6, 0xFB],
-                                                   [0xA6, 0xF3],
-                                                   [0xA6, 0xEF],
-                                                   [0xA7, 0x45],
-                                                   [0xA7, 0x48],
-                                                   [0xA6, 0xF2],
-                                                   [0xA7, 0x40],
-                                                   [0xA7, 0x46],
-                                                   [0xA6, 0xF0],
-                                                   [0xA7, 0x41],
-                                                   [0xA6, 0xFE],
-                                                   [0xA8, 0xD8],
-                                                   [0xA8, 0xD0],
-                                                   [0xA8, 0xCB],
-                                                   [0xA8, 0xD5],
-                                                   [0xA8, 0xCE],
-                                                   [0xA8, 0xD6],
-                                                   [0xA8, 0xDE],
-                                                   [0xA8, 0xD9],
-                                                   [0xA8, 0xDB],
-                                                   [0xA8, 0xCF],
-                                                   [0xA8, 0xD4],
-                                                   [0xA8, 0xD3],
-                                                   [0xA8, 0xD7],
-                                                   [0xA8, 0xD2],
-                                                   [0xA8, 0xCD],
-                                                   [0xA8, 0xDC],
-                                                   [0xA8, 0xDD],
-                                                   [0xA8, 0xDA],
-                                                   [0xA8, 0xD1],
-                                                   [0xA8, 0xCC],
-                                                   [0xAB, 0x56],
-                                                   [0xAB, 0x4A],
-                                                   [0xAB, 0x49],
-                                                   [0xAB, 0x51],
-                                                   [0xAB, 0x5D],
-                                                   [0xAB, 0x4B],
-                                                   [0xAB, 0x59],
-                                                   [0xAB, 0x50],
-                                                   [0xAB, 0x58],
-                                                   [0xAB, 0x54],
-                                                   [0xAB, 0x5B],
-                                                   [0xAB, 0x4E],
-                                                   [0xAB, 0x57],
-                                                   [0xAB, 0x4D],
-                                                   [0xAB, 0x55],
-                                                   [0xAB, 0x52],
-                                                   [0xAB, 0x5A],
-                                                   [0xAB, 0x4F],
-                                                   [0xAB, 0x5C],
-                                                   [0xAB, 0x53],
-                                                   [0xAB, 0x4C],
-                                                   [0xAB, 0x48],
-                                                   [0xAD, 0xD7],
-                                                   [0xAD, 0xC1],
-                                                   [0xAD, 0xD1],
-                                                   [0xAD, 0xD6],
-                                                   [0xAD, 0xC4],
-                                                   [0xAD, 0xCD],
-                                                   [0xAD, 0xDA],
-                                                   [0xAD, 0xCE],
-                                                   [0xAD, 0xC7],
-                                                   [0xAD, 0xDC],
-                                                   [0xAD, 0xD3],
-                                                   [0xAD, 0xBE],
-                                                   [0xAD, 0xBF],
-                                                   [0xB0, 0xBF],
-                                                   [0xAD, 0xCC],
-                                                   [0xAD, 0xCB],
-                                                   [0xAD, 0xCF],
-                                                   [0xAD, 0xC6],
-                                                   [0xAD, 0xD5],
-                                                   [0xAD, 0xD4],
-                                                   [0xAD, 0xCA],
-                                                   [0xAD, 0xC9],
-                                                   [0xAD, 0xD2],
-                                                   [0xAD, 0xC0],
-                                                   [0xAD, 0xC3],
-                                                   [0xAD, 0xC2],
-                                                   [0xAD, 0xD0],
-                                                   [0xAD, 0xC5],
-                                                   [0xAD, 0xD9],
-                                                   [0xAD, 0xDB],
-                                                   [0xAD, 0xD8],
-                                                   [0xAD, 0xC8],
-                                                   [0xB0, 0xB3],
-                                                   [0xB0, 0xB2],
-                                                   [0xB0, 0xB6],
-                                                   [0xB0, 0xB4],
-                                                   [0xB0, 0xB9],
-                                                   [0xB0, 0xBE],
-                                                   [0xB0, 0xBA],
-                                                   [0xB0, 0xB5],
-                                                   [0xB0, 0xB1],
-                                                   [0xB0, 0xB7],
-                                                   [0xB0, 0xC1],
-                                                   [0xB0, 0xC0],
-                                                   [0xB0, 0xBC],
-                                                   [0xB0, 0xBB],
-                                                   [0xB0, 0xB8],
-                                                   [0xB0, 0xBD],
-                                                   [0xB0, 0xAF],
-                                                   [0xB0, 0xB0],
-                                                   [0xB3, 0xC8],
-                                                   [0xB3, 0xC5],
-                                                   [0xB3, 0xC4],
-                                                   [0xB3, 0xC7],
-                                                   [0xB3, 0xC9],
-                                                   [0xB3, 0xCA],
-                                                   [0xB3, 0xC6],
-                                                   [0xB3, 0xCB],
-                                                   [0xB3, 0xC3],
-                                                   [0xB6, 0xCA],
-                                                   [0xB6, 0xC4],
-                                                   [0xB6, 0xCD],
-                                                   [0xB6, 0xC6],
-                                                   [0xB6, 0xC7],
-                                                   [0xB6, 0xC5],
-                                                   [0xB6, 0xCB],
-                                                   [0xB6, 0xCC],
-                                                   [0xB6, 0xC9],
-                                                   [0xB6, 0xC8],
-                                                   [0xB6, 0xCE],
-                                                   [0xB9, 0xB6],
-                                                   [0xB9, 0xB3],
-                                                   [0xB9, 0xB4],
-                                                   [0xB9, 0xB2],
-                                                   [0xB9, 0xAF],
-                                                   [0xB9, 0xB1],
-                                                   [0xB9, 0xAE],
-                                                   [0xB9, 0xAC],
-                                                   [0xB9, 0xB7],
-                                                   [0xB9, 0xB0],
-                                                   [0xB9, 0xAD],
-                                                   [0xB9, 0xB5],
-                                                   [0xBB, 0xF8],
-                                                   [0xBB, 0xF9],
-                                                   [0xBB, 0xF7],
-                                                   [0xBB, 0xF6],
-                                                   [0xBB, 0xFA],
-                                                   [0xBB, 0xF5],
-                                                   [0xBB, 0xFD],
-                                                   [0xBB, 0xFB],
-                                                   [0xBB, 0xFC],
-                                                   [0xBE, 0xAA],
-                                                   [0xBE, 0xA7],
-                                                   [0xBE, 0xA9],
-                                                   [0xBE, 0xAB],
-                                                   [0xBE, 0xA8],
-                                                   [0xC0, 0x76],
-                                                   [0xC0, 0x77],
-                                                   [0xC0, 0x75],
-                                                   [0xC0, 0x78],
-                                                   [0xC3, 0x5F],
-                                                   [0xC4, 0xD7],
-                                                   [0xC4, 0xD8],
-                                                   [0xC5, 0x6C],
-                                                   [0xC5, 0x6B],
-                                                   [0xA4, 0x49],
-                                                   [0xA4, 0x61],
-                                                   [0xA4, 0xB9],
-                                                   [0xA4, 0xB8],
-                                                   [0xA5, 0x53],
-                                                   [0xA5, 0x52],
-                                                   [0xA5, 0xFC],
-                                                   [0xA5, 0xFB],
-                                                   [0xA5, 0xFD],
-                                                   [0xA5, 0xFA],
-                                                   [0xA7, 0x4A],
-                                                   [0xA7, 0x49],
-                                                   [0xA7, 0x4B],
-                                                   [0xA8, 0xE0],
-                                                   [0xA8, 0xDF],
-                                                   [0xA8, 0xE1],
-                                                   [0xAB, 0x5E],
-                                                   [0xB0, 0xC2],
-                                                   [0xB9, 0xB8],
-                                                   [0xA4, 0x4A],
-                                                   [0xA4, 0xBA],
-                                                   [0xA5, 0xFE],
-                                                   [0xA8, 0xE2],
-                                                   [0xA4, 0x4B],
-                                                   [0xA4, 0xBD],
-                                                   [0xA4, 0xBB],
-                                                   [0xA4, 0xBC],
-                                                   [0xA6, 0x40],
-                                                   [0xA7, 0x4C],
-                                                   [0xA8, 0xE4],
-                                                   [0xA8, 0xE3],
-                                                   [0xA8, 0xE5],
-                                                   [0xAD, 0xDD],
-                                                   [0xBE, 0xAC],
-                                                   [0xC8, 0xA2],
-                                                   [0xA5, 0x54],
-                                                   [0xA5, 0x55],
-                                                   [0xA6, 0x41],
-                                                   [0xAB, 0x60],
-                                                   [0xAB, 0x5F],
-                                                   [0xB0, 0xC3],
-                                                   [0xA4, 0xBE],
-                                                   [0xAB, 0x61],
-                                                   [0xAD, 0xE0],
-                                                   [0xAD, 0xDE],
-                                                   [0xAD, 0xDF],
-                                                   [0xBE, 0xAD],
-                                                   [0xA5, 0x56],
-                                                   [0xA6, 0x42],
-                                                   [0xA7, 0x4D],
-                                                   [0xA7, 0x4E],
-                                                   [0xA8, 0xE6],
-                                                   [0xAD, 0xE3],
-                                                   [0xAD, 0xE4],
-                                                   [0xAD, 0xE2],
-                                                   [0xAD, 0xE1],
-                                                   [0xBB, 0xFE],
-                                                   [0xBE, 0xAE],
-                                                   [0xA4, 0x4C],
-                                                   [0xA4, 0x5A],
-                                                   [0xB0, 0xC4],
-                                                   [0xB3, 0xCD],
-                                                   [0xB9, 0xB9],
-                                                   [0xA4, 0xBF],
-                                                   [0xA5, 0x59],
-                                                   [0xA5, 0x57],
-                                                   [0xA5, 0x58],
-                                                   [0xA8, 0xE7],
-                                                   [0xA4, 0x4D],
-                                                   [0xA4, 0x4E],
-                                                   [0xC8, 0x7D],
-                                                   [0xA4, 0x62],
-                                                   [0xA4, 0xC0],
-                                                   [0xA4, 0xC1],
-                                                   [0xA4, 0xC2],
-                                                   [0xA5, 0x5A],
-                                                   [0xA6, 0x46],
-                                                   [0xA6, 0x44],
-                                                   [0xA6, 0x45],
-                                                   [0xA6, 0x47],
-                                                   [0xA6, 0x43],
-                                                   [0xAA, 0xEC],
-                                                   [0xA7, 0x50],
-                                                   [0xA7, 0x4F],
-                                                   [0xA7, 0x53],
-                                                   [0xA7, 0x51],
-                                                   [0xA7, 0x52],
-                                                   [0xA8, 0xED],
-                                                   [0xA8, 0xEC],
-                                                   [0xA8, 0xEE],
-                                                   [0xA8, 0xEA],
-                                                   [0xA8, 0xE9],
-                                                   [0xA8, 0xEB],
-                                                   [0xA8, 0xE8],
-                                                   [0xA8, 0xEF],
-                                                   [0xAB, 0x63],
-                                                   [0xAB, 0x68],
-                                                   [0xAB, 0x64],
-                                                   [0xAB, 0x67],
-                                                   [0xAB, 0x66],
-                                                   [0xAB, 0x65],
-                                                   [0xAB, 0x62],
-                                                   [0xAD, 0xE7],
-                                                   [0xAD, 0xE5],
-                                                   [0xAD, 0xE8],
-                                                   [0xAD, 0xE6],
-                                                   [0xAD, 0xE9],
-                                                   [0xB3, 0xD1],
-                                                   [0xB0, 0xC5],
-                                                   [0xB0, 0xC6],
-                                                   [0xB3, 0xCE],
-                                                   [0xB3, 0xCF],
-                                                   [0xB3, 0xD0],
-                                                   [0xB6, 0xD0],
-                                                   [0xB6, 0xD1],
-                                                   [0xB6, 0xCF],
-                                                   [0xB9, 0xBB],
-                                                   [0xB9, 0xBA],
-                                                   [0xBC, 0x40],
-                                                   [0xBC, 0x41],
-                                                   [0xBC, 0x42],
-                                                   [0xBC, 0x44],
-                                                   [0xBC, 0x43],
-                                                   [0xBE, 0xAF],
-                                                   [0xBE, 0xB0],
-                                                   [0xA4, 0x4F],
-                                                   [0xA5, 0x5C],
-                                                   [0xA5, 0x5B],
-                                                   [0xA6, 0x48],
-                                                   [0xA7, 0x55],
-                                                   [0xA7, 0x56],
-                                                   [0xA7, 0x54],
-                                                   [0xA7, 0x57],
-                                                   [0xA8, 0xF1],
-                                                   [0xA8, 0xF0],
-                                                   [0xAB, 0x6C],
-                                                   [0xAB, 0x6B],
-                                                   [0xAB, 0x69],
-                                                   [0xAB, 0x6A],
-                                                   [0xB0, 0xC7],
-                                                   [0xB0, 0xCA],
-                                                   [0xB1, 0xE5],
-                                                   [0xB0, 0xC9],
-                                                   [0xB0, 0xC8],
-                                                   [0xB3, 0xD4],
-                                                   [0xB3, 0xD3],
-                                                   [0xB3, 0xD2],
-                                                   [0xB6, 0xD2],
-                                                   [0xB6, 0xD5],
-                                                   [0xB6, 0xD6],
-                                                   [0xB6, 0xD4],
-                                                   [0xB6, 0xD3],
-                                                   [0xBC, 0x45],
-                                                   [0xBE, 0xB1],
-                                                   [0xC0, 0x79],
-                                                   [0xC4, 0x55],
-                                                   [0xA4, 0x63],
-                                                   [0xA4, 0xC3],
-                                                   [0xA4, 0xC4],
-                                                   [0xA4, 0xC5],
-                                                   [0xA5, 0x5D],
-                                                   [0xA5, 0x5E],
-                                                   [0xA6, 0x49],
-                                                   [0xAB, 0x6D],
-                                                   [0xB0, 0xCC],
-                                                   [0xB0, 0xCB],
-                                                   [0xA4, 0x50],
-                                                   [0xA4, 0xC6],
-                                                   [0xA5, 0x5F],
-                                                   [0xB0, 0xCD],
-                                                   [0xA5, 0x60],
-                                                   [0xA6, 0x4B],
-                                                   [0xA6, 0x4A],
-                                                   [0xA7, 0x58],
-                                                   [0xAD, 0xEA],
-                                                   [0xB6, 0xD7],
-                                                   [0xB9, 0xBC],
-                                                   [0xA4, 0xC7],
-                                                   [0xB0, 0xD0],
-                                                   [0xB0, 0xCE],
-                                                   [0xB0, 0xCF],
-                                                   [0xA4, 0x51],
-                                                   [0xA4, 0x64],
-                                                   [0xA4, 0xCA],
-                                                   [0xA4, 0xC9],
-                                                   [0xA4, 0xC8],
-                                                   [0xA5, 0x63],
-                                                   [0xA5, 0x62],
-                                                   [0xA8, 0xF5],
-                                                   [0xA8, 0xF2],
-                                                   [0xA8, 0xF4],
-                                                   [0xA8, 0xF3],
-                                                   [0xAB, 0x6E],
-                                                   [0xB3, 0xD5],
-                                                   [0xA4, 0x52],
-                                                   [0xA4, 0xCB],
-                                                   [0xA5, 0x65],
-                                                   [0xA5, 0x64],
-                                                   [0xA8, 0xF6],
-                                                   [0xA5, 0x67],
-                                                   [0xA5, 0x66],
-                                                   [0xA6, 0x4C],
-                                                   [0xA6, 0x4D],
-                                                   [0xA7, 0x59],
-                                                   [0xA7, 0x5A],
-                                                   [0xA8, 0xF7],
-                                                   [0xA8, 0xF8],
-                                                   [0xA8, 0xF9],
-                                                   [0xAB, 0x6F],
-                                                   [0xAD, 0xEB],
-                                                   [0xA4, 0xCC],
-                                                   [0xAB, 0x70],
-                                                   [0xAD, 0xED],
-                                                   [0xAD, 0xEC],
-                                                   [0xB3, 0xD6],
-                                                   [0xB9, 0xBD],
-                                                   [0xBC, 0x46],
-                                                   [0xA5, 0x68],
-                                                   [0xB0, 0xD1],
-                                                   [0xA4, 0x53],
-                                                   [0xA4, 0x65],
-                                                   [0xA4, 0xCE],
-                                                   [0xA4, 0xCD],
-                                                   [0xA4, 0xCF],
-                                                   [0xA8, 0xFB],
-                                                   [0xA8, 0xFA],
-                                                   [0xA8, 0xFC],
-                                                   [0xAB, 0x71],
-                                                   [0xAD, 0xEE],
-                                                   [0xC2, 0x4F],
-                                                   [0xA4, 0x66],
-                                                   [0xA5, 0x6A],
-                                                   [0xA5, 0x79],
-                                                   [0xA5, 0x74],
-                                                   [0xA5, 0x6F],
-                                                   [0xA5, 0x6E],
-                                                   [0xA5, 0x75],
-                                                   [0xA5, 0x73],
-                                                   [0xA5, 0x6C],
-                                                   [0xA5, 0x7A],
-                                                   [0xA5, 0x6D],
-                                                   [0xA5, 0x69],
-                                                   [0xA5, 0x78],
-                                                   [0xA5, 0x77],
-                                                   [0xA5, 0x76],
-                                                   [0xA5, 0x6B],
-                                                   [0xA5, 0x72],
-                                                   [0xA5, 0x71],
-                                                   [0xA5, 0x7B],
-                                                   [0xA5, 0x70],
-                                                   [0xA6, 0x53],
-                                                   [0xA6, 0x59],
-                                                   [0xA6, 0x55],
-                                                   [0xA6, 0x5B],
-                                                   [0xA6, 0x58],
-                                                   [0xA6, 0x4E],
-                                                   [0xA6, 0x51],
-                                                   [0xA6, 0x54],
-                                                   [0xA6, 0x50],
-                                                   [0xA6, 0x57],
-                                                   [0xA6, 0x5A],